QuestaSim 似乎跳过了我的初始块的主体

问题描述 投票:0回答:1

我正在尝试使用 QuestaSim(直接从 Quartus 运行)来运行测试平台,相关部分概述如下。

`timescale 1 ns / 10 ps
module ASS1_T3_tb();


parameter NumBits = 8;

int fd;
logic signed [NumBits:0] jj,kk;

logic signed [2*NumBits-1:0] Output;


ASS1_T3 U1(.M(jj[NumBits-1:0]), .Q(kk[NumBits-1:0]), .O(Output));

initial
begin
    
    $display($time, " << Starting the Simulation >>");
        
    for(jj=0; jj<=(8'sb11111111); jj=jj+1)
        begin 
            $stop;
            for(kk=0; kk<=(8'sb11111111); kk=kk+1)
                begin 
                    #10;
                    
                    // Internal logic that I don't think affects the issue
                                        // this logic does NOT change jj or kk
                end
        end
        
    $finish();
end

endmodule

但是,涉及“jj”的

for
循环实际上从未运行过。我已经对其他运行正确的测试平台进行了类似的实现。模拟开始并且不会在“$stop”语句处停止,而是跳至“$finish()”语句。

我正在使用 SystemVerilog,尝试了 SystemVerilog 和良好的 ol' Verilog 格式将网表输出到 Questa,但无济于事。我之前制作过很少的测试平台,因此非常感谢您的帮助。这是该项目的组合版本,我还尝试了顺序测试平台,它也跳过了 For 循环。

system-verilog quartus questasim
1个回答
0
投票

8'sb11111111
与十进制-1 相同。添加这行代码:

initial $display("8'sb11111111 is %0d", 8'sb11111111);

输出:

8'sb11111111 is -1

这意味着带有

for
jj
循环体不会被执行。

您需要为循环选择另一个结束条件。例如,这将允许循环执行 3 次:

for (jj=0; jj<=2; jj=jj+1)
© www.soinside.com 2019 - 2024. All rights reserved.