syntax - Verilog:命名约定

标签 syntax verilog naming-conventions

1-有人可以在下面的verilog行中解释这个命名约定是什么意思吗?
我不知道这是什么 \add_34/....部分是什么意思?

ADDHXL \add_34/U1_1_6  (.A(n1022),.B(\add_34/carry[6] ),.CO(\add_34/carry[7] ),.S(N11));

2- 还有一个问题?如果我有电汇\add_34/carry[6]在我的定义中我应该有\add_34/carry[1]高达 \add_34/carry[5]或者它是可选的?

我在编译部分代码后问了这个问题,我将面临语法错误:

Syntax error at or near token 'wire'.



这是代码片段:
RandomDelay  R00001(clk,rst_n,2'b10,a34_carry_pri_delayed_7,\add_34/carry[7]);
wire N11_pri_delayed;

这是模块定义:
module RandomDelay ( clk, reset_not, seed, input_signal, delayed_signal );
  input [1:0] seed;
  input clk, reset_not, input_signal;
  output delayed_signal;
....

最佳答案

您所拥有的是所谓的“转义标识符”。

当标识符以反斜杠开始时 除空格外的所有字符被假定为名称的一部分。 (因此,标准标识符规则被排除在外。)

因此,在您的情况下,标识符是“\add_34/U1_1_6”。该类型的标识符通常由程序生成。
因此这是一个有效的标识符:\wow!/neverseen[]thissort@;of#++mess
让我们看一下标识符:\add_34/carry[6]请注意,“[6]”不是索引! Is 被视为 ASCII 和名称的一部分。\add_34/carry[7] 也是如此。 .
这也意味着某处有一个定义:

wire \add_34/carry[6] ;
wire \add_34/carry[7] ;
// Note the space    ^ before the semicolon!

其他\add_34/carry[... 变量可能存在或不存在,因为我们都在这里查看单独的电线。

没有\add_34/carry[5] 或\add_34/carry[0] 是完全合法的

回到你的代码:
RandomDelay  R00001(clk,rst_n,2'b10,a34_carry_pri_delayed_7,\add_34/carry[7]);

因此,您必须在右括号前放置一个空格:
RandomDelay  R00001(clk,rst_n,2'b10,a34_carry_pri_delayed_7,\add_34/carry[7] );
//                                                             ---->>> Here ^

关于syntax - Verilog:命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57029519/

相关文章:

verilog - AXI IP 综合期间出现未知错误

naming-conventions - 在蛇案中处理数字的正确方法是什么?

maven-2 - Maven 工件的命名约定

python - 如何在 Matplotlib 中使用 Latex 正确写入 '<' 和 '>' 符号

mysql - 如何编译MySQL "Words"的完整列表

c++ - 与 C++ Exception throw 语句混淆

for-loop - 在Verilog循环中使用多个genvar

constraints - 约束随机化,对于 16 位变量,连续 2 位设置为 1,其他位设置为 0

c - 为什么这段代码不报错?

javascript - 异步 getter 的命名约定