在編寫verilog代碼過程當中,有時,咱們須要某個寄存器初始化爲1。整個工程功能仿真正確,可是綜合後仿真會出現問題。如:ide
always@(posedge clk) begin設計
if(!rst_n)it
req_data<=1;class
else if(data_valid==1)test
req_data<=0;sed
else if(data_done==1)di
req_data<=1;view
endvi
testbench中的相關代碼以下:co
initial begin
rst_n=0;
data_valid=0;
// Wait 100 ns for global reset to finish
#100;
rst_n=1;
這樣寫testbench,req_data在綜合後仿真時,if(!rst_n) req_data<=1,是不起做用的
在FPGA設計中,glbl.v經常使用來定義全局復位/置位、全局三態信號和DUT的鏈接,而且用來爲設計提供有效地復位信號,對設計中使用到的全局信號進行初始化。在仿真起始的
100n中,glbl將自動產生全局復位置位。 代碼改寫 成下面便可 // Wait 100 ns for global reset to finish
#100;
#10;
rst_n=1;
我的理解:glbl將全部信號初始化爲0,此時rst_n不起做用