为什么我的 Verilog 测试台永远不会停止?

-1 verilog

教授给出了下面的代码,我要弄清楚为什么它永远不会停止。

module tb_problem1();

reg a, b, c, d, e;
wire x;
reg [4:0] ins;

problem1 dut(a, b, c, d, e, x);

initial begin
    ins = 0;
    while(ins < 32) begin
        {a, b, c, d, e} = ins;
        #20;
        ins = ins + 1;
    end
end

endmodule
Run Code Online (Sandbox Code Playgroud)

那是因为我们需要做ins = ins+1'b1;吗?

Gre*_*reg 5

5 位无符号值支持 0 到 31 的范围。将 1 加到 31 将丢弃 msb 并返回 0。因此永远不会达到 32 的值。

尝试创建ins一个 6 位值。