#1在verilog中是什么意思?

kam*_*nga 4 verilog

我知道always @(posedge clk)在verilog中是触发器。

input ld;
reg ld_r;
always @(posedge clk) ld_r <= #1 ld;
Run Code Online (Sandbox Code Playgroud)

#1上面的代码做了什么?我在 AES 的 verilog 代码中找到了它。我在下面包含了其中的一个片段:

always @(posedge clk)
if(!rst)    dcnt <= #1 4'h0;
else
if(ld)      dcnt <= #1 4'hb;
else
if(|dcnt)   dcnt <= #1 dcnt - 4'h1;

always @(posedge clk) done <= #1 !(|dcnt[3:1]) & dcnt[0] & !ld;
always @(posedge clk) if(ld) text_in_r <= #1 text_in;
always @(posedge clk) ld_r <= #1 ld;
Run Code Online (Sandbox Code Playgroud)

ngu*_*rie 5

既然您提到always @(posedge clk)推断触发器,我假设您有兴趣了解#1硬件中合成的内容。答案是:什么也没有。

这些延迟在综合中将被忽略,因此如果您在设计代码中使用它们,您将面临模拟与硬件不匹配的风险。

这是一篇描述为什么要添加延迟的论文:http://sunburst-design.com/papers/CummingsSNUG2002Boston_NBAwithDelays.pdf