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

Quartus Prime中Verilog代码编译语法错误求助

问题解决:Verilog代码语法错误修复

核心错误分析

从代码逻辑来看,引发语法错误的关键问题有两个:

  • reg类型变量无法赋值高阻态(1'bz)
    reg是存储型数据类型,仅支持存储0、1或未知态(x);高阻态(z)属于线网型(如wire)的特性,不能直接赋值给reg变量。
  • Quartus Prime对SystemVerilog语法的兼容性
    代码中使用的int属于SystemVerilog专属类型,若未在Quartus中开启SystemVerilog支持,会触发语法报错。

修复后的代码

module conditional_op();
    // 若需兼容Verilog-2001标准,改用integer替代SystemVerilog的int类型
    integer result;
    integer a = 9;
    integer b = 31;
    // 将原reg类型改为wire以支持高阻态赋值
    wire c;

    initial begin
        #1; result = (a == 9) ? 1:0;
        $display("result=%0d",result);

        #1; result = ((a+b) == 40) ? 1:0;
        $display("result=%0d",result);

        #1; result = (b == 30) ? 678 : -99;
        $display("result=%0d",result);

        #1; assign c = (b ==31)? 1'bz : 1'b0;
        $display("c=%b",c);
    end
endmodule

额外配置建议(若需保留SystemVerilog特性)

如果想继续使用int等SystemVerilog语法,需在Quartus中开启对应支持:

  1. 进入工程设置界面
  2. 找到 Settings > Compiler Settings > HDL Language Options
  3. 将Verilog Input选项设置为SystemVerilog

替代方案(保留reg类型)

如果必须用reg存储c的值,可移除高阻态赋值,改用逻辑值替代:

reg c = 0;
// ...
#1; c = (b ==31)? 1'b1 : 1'b0;

内容的提问来源于stack exchange,提问作者Ravi teja Garimella

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:22:33