我知道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)
既然您提到always @(posedge clk)推断触发器,我假设您有兴趣了解#1硬件中合成的内容。答案是:什么也没有。
这些延迟在综合中将被忽略,因此如果您在设计代码中使用它们,您将面临模拟与硬件不匹配的风险。
这是一篇描述为什么要添加延迟的论文:http://sunburst-design.com/papers/CummingsSNUG2002Boston_NBAwithDelays.pdf