【问题标题】:verilog with cocotb : assign statement带有 cocotb 的 verilog :分配语句
【发布时间】:2015-11-08 17:05:41
【问题描述】:

我的verilog 代码是一个只使用assign sum = a+b 的加法器。问题是,在使用 cocotb 运行它时,sum 仍然未知,尽管 ab 具有有效值。当我将 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

【问题讨论】:

    标签: python verilog fpga asic cocotb


    【解决方案1】:

    我相信这实际上是由 v0.9.7 中存在的 Icarus 中的错误引起的。

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

    如果您卡在那个版本的 Icarus 上,您可以通过将分配放入进程中来解决它,正如您所发现的那样。

    【讨论】:

    • 我认为波形图像显然显示了 Gtkwave 窗口,提示您使用 Icarus?
    • @user1155120 GTKWave 是一个赠品,但也有一些人遇到了这个问题。不幸的是,大多数流行的 Linux 发行版的存储库仍然提供 Icarus v0.9.7
    • @Chiggs 你好克里斯,我创建了新标签cocotb,因为在 SO 上有越来越多与 cocotb 相关的问题和答案。也许你想订阅它。
    • @Paebbels 对此表示感谢,我会订阅并尝试在我可以帮助的地方帮助人们
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2011-01-17
    相关资源
    最近更新 更多