写testbench时initial里明明赋值了,rtl仿真出来仍然是不定值?
时间:10-02
整理:3721RD
点击:
- `timescale 1 ns/ 1 ns
- module lcd_module_vlg_tst();reg CLK;
- reg RSTn;
- reg Right_In;
- reg Left_In;
-
- wire [3:0] SPI_Out;
- lcd_module i1 (
-
- .CLK(CLK),
- .RSTn(RSTn),
- .SPI_Out(SPI_Out),
- .Right_In(Right_In),
- .Left_In(Left_In)
- );
- initial
- begin
-
- RSTn = 0; #50; RSTn = 1;
- CLK = 1; forever #25 CLK = ~CLK;
- Right_In = 0; #90; Right_In = 1;
- end
-
- endmodule
代码第21行 Right_In 仿真显示为x,怎么回事?
你前面有个50ns延时: RSTn = 0; #50; RSTn = 1; 这个50ns延时前面,没有给Right_In赋值,所以这个时候是x。
initial
begin
RSTn = 0; #50; RSTn = 1;
CLK = 1;
Right_In = 0; #90; Right_In = 1;
end
always#25 CLK = ~CLK;
改成这样试试
楼上正解,你的forever一直运行,没有到下一步赋值!
而且时钟信号一般都是单独块的!——我的习惯
执行到forever就卡住了,不向下执行了;initial里面语句是串行执行的,只有前面的语句执行完毕之后,才会继续向下执行;
我之前也有这样的问题,看了之后豁然开朗,谢谢各位
