vivado simulator 和 Modelsim simulator模擬出不同的結果
时间:03-15
整理:3721RD
点击:
有個問題想問問大家,vivado simulator 和Modelsim simulator模擬出不同的結果,如下verilog敍述:
當read_enable 或者 reg_byte_lane[0]或者word_addr有個訊號變動時,且read_enable和reg_byte_lane[0]為1時,ram_q_0的數據給rdata_out_0 ,當時ram_q_0=8'h68而rdata_out_0=8'h68,模擬結果與語法解釋上一致。
但在vivado simulator模擬時,卻有不同的結果,vivado模擬結果如下列圖片:
當read_enable 或者 reg_byte_lane[0]或者word_addr有個訊號變動時,且read_enable和reg_byte_lane[0]為1時,ram_q_0的數據給rdata_out_0
,當時ram_q_0=8'h68而rdata_out_0=8'h68(擷取的是ram_q_0的變化前的數據8'h68,而不是8'h09)?
vivado_simulator對這一段verilog的敍述為何與modelsim上看到的結果不相同,有人知道原因嗎?
////////////////////////////////////////////////////////////////////////////
always @(read_enable or reg_byte_lane[0] or word_addr)
if ((read_enable & reg_byte_lane[0]))
rdata_out_0 = ram_q_0;
else
rdata_out_0 = 8'h00;
//////////////////////////////////////////////////////////////////////////
Modelsim模擬的結果如下列圖片:當read_enable 或者 reg_byte_lane[0]或者word_addr有個訊號變動時,且read_enable和reg_byte_lane[0]為1時,ram_q_0的數據給rdata_out_0 ,當時ram_q_0=8'h68而rdata_out_0=8'h68,模擬結果與語法解釋上一致。
但在vivado simulator模擬時,卻有不同的結果,vivado模擬結果如下列圖片:
當read_enable 或者 reg_byte_lane[0]或者word_addr有個訊號變動時,且read_enable和reg_byte_lane[0]為1時,ram_q_0的數據給rdata_out_0
,當時ram_q_0=8'h68而rdata_out_0=8'h68(擷取的是ram_q_0的變化前的數據8'h68,而不是8'h09)?
vivado_simulator對這一段verilog的敍述為何與modelsim上看到的結果不相同,有人知道原因嗎?
Sloved:
word_addr exists in sensetivity list, not need write to sensetivity list,
and signal ram_q_0 add to the sensetivity list.
用always @* 又可以少敲点字符又可以避免这种问题