首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Icarus verilog: reg显示;不能由原语或连续赋值驱动

Icarus verilog: reg显示;不能由原语或连续赋值驱动
EN

Stack Overflow用户
提问于 2020-11-06 02:49:44
回答 1查看 415关注 0票数 1

我正在尝试将一些Verilog源代码移植到SystemVerilog。这个问题是针对Icarus的(用10.3和11提供了相同的结果进行了测试),因为我的工具没有任何错误(例如Yosys 0.9.0,Cadence Xcelium 19.09)。我所讨论的问题归结为以下最起码的例子:

代码语言:javascript
复制
module main();
  logic sel;
  wire [31:0] wired;
  logic show;

  initial begin
    $monitor("show = %d", show);

    sel = 1'b1;
    #10;
    sel = 1'b0;
  end

  subout a(.sel_i(sel), .val_o(wired));
  subin  b(.val_i(wired), .out_o(show));
endmodule

module subout(
  input logic sel_i,
  output logic [31:0] val_o
);
  always @(sel_i) begin
    val_o   = 32'b0;

    if (sel_i) begin
      val_o = 32'b101010;
    end
  end
endmodule

module subin(
  input logic [31:0] val_i,
  output logic out_o
);
  assign out_o = val_i[0];
endmodule

显然,我希望在subout中创建一些subout值,并将其连接到main中,以便将其传递给subinsubin接受这个值并返回一个被监视的位。换句话说,一个值从一个子模块传递到另一个子模块。

我在iverilog <file-with-above-content>中遇到的错误是:

代码语言:javascript
复制
iverilog_issue.sv:35: error: reg out_o; cannot be driven by primitives or continuous assignment.
iverilog_issue.sv:15: error: reg show; cannot be driven by primitives or continuous assignment.
iverilog_issue.sv:15: error: Output port expression must support continuous assignment.
iverilog_issue.sv:15:      : Port 2 (out_o) of subin is connected to show
3 error(s) during elaboration.

据我所知,它应该为val_osubout中创建一个寄存器,在main中创建一个寄存器sel。其他一切都只是电线。由于我们使用的是SystemVerilog,所以我使用logic而不指定wire/reg。对我来说,reg show;的结论已经不正确了。

  1. 伊卡洛斯·韦里罗格如何总结reg show;
  2. 你能用iverilog运行这个例子吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 06:15:29

该代码在EDAplayground上正确运行,有一个较旧的Icarus10.0。因此,我猜您没有启用SystemVerilog标志-g2012。默认情况下,Icarus在Verilog same 1364-2005[1]中运行;这与设置标志-g2005相同。

Verilog只允许wireassign语句或输出端口驱动。SystemVerilog放宽了规则,因此reglogicassign语句或输出端口驱动,只要这是唯一的驱动程序。(我个人更喜欢遵循更严格的Verilog规则,因为并非所有工具都有强大的单个源驱动程序来检查由reg语句或输出端口驱动的assignlogic )。

无论如何,尝试以下命令:

代码语言:javascript
复制
iverilog -Wall -g2012 <file-with-above-content>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64708162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档