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/