You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Verilog编译报错concurrent assignment to a non-net问题排查求助

报错原因及代码修正方案
  • 错误1:输入端口类型定义错误
    Verilog语法规定,input 端口默认必须为net类型(如wire),不能定义为reg类型。你将ex1模块的a、b输入端口定义为reg类型,外部例化时相当于对reg类型变量做连续驱动,直接触发concurrent assignment to a non-net报错。
  • 错误2:assign连续赋值语句逻辑语法错误
    assign 语句是对左侧变量做连续赋值,你写的assign c=(a>b)?(a=1'b1):(c=1'b0);存在两个问题:一是在三目运算符内部给输入端口a赋值,输入端口只能读取不能改写;二是出现c自赋值的逻辑错误。
  • 错误3:端口列表多余逗号
    ex1模块的端口定义最后output wire c,多了一个尾逗号,属于语法瑕疵,部分编译器会直接判定为语法错误。

修正后的ex1模块代码

module ex1( 
  input [1:0] a,  // 去掉reg定义,input默认是wire类型
  input [1:0] b,
  output wire c  // 去掉多余尾逗号
);
  // 仅对c做赋值,三目运算符直接返回对应值即可
  assign c = (a > b) ? 1'b1 : 1'b0;     
endmodule 

修正后的testbench代码

module testbench();
    reg[1:0] a = 2'b11;
    reg [1:0] b = 2'b00;
    wire c;
    always #10
    begin
      a = a - 2'b01;
      b = b - 2'b01;
    end
    initial
      #150 $finish;
    ex1 testbench2 (
      .a(a),
      .b(b),
      .c(c)
    );
endmodule

内容的提问来源于stack exchange,提问作者qqwetrt8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:45:03