python - 带cocotb的verilog : assign statement

标签 python verilog fpga asic cocotb

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

最佳答案

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

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

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

关于python - 带cocotb的verilog : assign statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596587/

相关文章:

audio - 让FPGA使用verilog在 "line out"引脚上输出声音

python - 关于从 PyCharm 安装 SciPy

python - 如何使用字段名称的变量访问命名元组的字段?

python - 蜘蛛scrapy中的读取设置

verilog - 将初始时间偏移应用于时钟信号

linux - 如何设置 "something"使用的模块

python:二进制文件的正则表达式搜索模式(半字节)

constants - 如何在verilog中使用const

verilog - systemVerilog 嵌套 Fork

linux - 如何从软件工具向 Zynq 中的 AXI-Stream 发送数据?