今天我想分享一些关于RTL#1
延误的事情。有时,我们通过为每个非阻塞分配提供显式延迟来对设计进行建模。这样做有几个原因。
让我们看一下一个简单的移位寄存器,其传输延迟
#1
如下:`timescale 1ns/1ns
`ifdef ADD_DLY
`define DLY 1
`else
`define DLY 0
`endifmodule shift_reg(input d,clk,reset,output reg q);
reg a,b,c;always @ (posedge clk or posedge reset) begin
if (reset) begin
q <= `DLY 'h0;
end
else begin
a<= #`DLY d;
b<= #`DLY a;
c<= #`DLY b;
q<= #`DLY c;
end
endendmodule
这是一个4 位移位寄存器 ,如下所示:
实际的电路行为会有很多的setup和hold timing限制,情况如下:
- The setup time is the interval before the clock where the data must be held stable