信号" ADDR"相对于信号的上升沿,设置时间约束为1ns" WR"。
在每个新的时钟周期中,我需要为" ADDR"分配一个值。然后制作" WR" 1ns后0-> 1。
时钟周期为10ns。我如何在结构verilog中做到这一点?
答案 0 :(得分:0)
有很多方法。我会用:
`timescale 1ns/1ps
...
assign #1.2 wr_out = wr; // (wr_out is a wire)
or
always @(wr)
wr_out <= #1.2 wr; // (wr_out is a reg)
1.2是200ps松弛。
第一个是惯性延迟,它更符合大多数真实逻辑的行为。 (如果信号变化快于1.2ns,则看不到。就像被电容滤除的信号一样)
无论wr的波形是什么,第二个都会产生1.2ns的传输延迟。 (就像一连串的门延迟脉冲传播的地方)
我来自一个我们做 NOT 更改结果门的世界,但如果你想在门上增加延迟,它就非常相似:
buf #(1.2,1.2) delaybuf (out,in);
你可以添加这样一个延迟缓冲区,另外你必须找到设计中输出信号的最后一个门并在那里加一个延迟。