微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 写testbench时initial里明明赋值了,rtl仿真出来仍然是不定值?

写testbench时initial里明明赋值了,rtl仿真出来仍然是不定值?

时间:10-02 整理:3721RD 点击:

  1. `timescale 1 ns/ 1 ns
  2. module lcd_module_vlg_tst();reg CLK;
  3. reg RSTn;
  4. reg Right_In;
  5. reg Left_In;
  6.                                             
  7. wire [3:0]  SPI_Out;                        
  8. lcd_module i1 (

  9. .CLK(CLK),
  10. .RSTn(RSTn),
  11. .SPI_Out(SPI_Out),
  12. .Right_In(Right_In),
  13. .Left_In(Left_In)
  14. );
  15. initial                                                
  16. begin                                                  
  17.                                           
  18.    RSTn = 0; #50; RSTn = 1;
  19. CLK = 1; forever #25 CLK = ~CLK;  
  20. Right_In = 0; #90; Right_In = 1;
  21. end                                                   
  22.                                        
  23. 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里面语句是串行执行的,只有前面的语句执行完毕之后,才会继续向下执行;



    我之前也有这样的问题,看了之后豁然开朗,谢谢各位

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top