我有一个最奇怪的问题,我办公室的人都没有遇到过或知道如何处理,也许你们会发现问题在哪里。
在我的 verilog 测试平台中,我有以下比较代码:
if (refFifo[7:0] != DUT.fifo[7:0] && rnd == 1) begin
$display("Error! ref Fifo %h not equal DUT fifo %h after 1 byte", refFifo[7:0], DUT.fifo[7:0]);
$stop;
end
else if (refFifo[15:0] != DUT.fifo[15:0] && rnd == 2) begin
$display("Error! ref Fifo %h not equal DUT fifo %h after 2 byte", refFifo[15:0], DUT.fifo[15:0]);
$stop;
end
...(直到 5 个字节)
现在,问题是 2 的比较总是失败,而其余的比较顺利通过(这搞砸了我的运行):
'>错误:参考 Fifo 090c 不等于 DUT fifo 090c after 2 byte'
我尝试在过程中更改比较的位置,在比较之前打印值(以防它们在比较过程中以某种方式改变),添加括号,将比较范围更改为 [7:0] 并构建一个新的环境,但没有任何帮助或表明比较 2 个字节时出了什么问题。
有没有人遇到过这样的问题?有谁知道如何解决它?
我使用没有优化的 ModelSim 10.1d_1 运行,以防它与我的谜团有关。
else
$display("Success!");
更新也在 ModelSim 10.0d_1 上尝试过,但没有任何帮助。