verilog与cocotb:指定状态

2024-04-16 22:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的verilog代码是一个只使用assign sum = a+b的加法器。问题是,当使用cocotb运行它时,sum仍然是未知的,尽管a和{}具有有效值。当我使sum为一个reg类型时,它是有效的。在

`timescale 1 ns / 1 ps

module adder(input [7:0] a,
        input [7:0] b,
        output reg  [7:0] sum,
        output [7:0] sum2);

    assign sum2=a+b;        //Trouble is here
    always@(a,b) begin
        sum=a+b;            //This works
    end

`ifdef COCOTB_SIM
    initial begin
        $dumpfile("adder.vcd");
        $dumpvars();
    end
`endif
endmodule

gtkwave output


Tags: 代码类型inputoutputregverilogendsum
1条回答
网友
1楼 · 发布于 2024-04-16 22:35:15

我相信这实际上是由Icarus在v0.9.7中的一个bug引起的。在

如果您升级到最新的开发版本,您会发现连续分配很好。其他模拟器也可以很好地处理连续分配。在

如果你被困在这个版本的Icarus上,你可以通过把任务放在一个进程中来解决它,正如你所发现的那样。在

相关问题 更多 >