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

Icarus Verilog实现NAND门遇语法错误‘I give up’求助

问题排查:Icarus Verilog编译nand模块时的语法错误

错误信息

./nand.v:1: syntax error
I give up.

问题根源

nand是Verilog的内置关键字(对应与非门原语),不能用作自定义模块的名称,这就是编译器报错指向第1行的核心原因。

修复步骤

  1. 修改核心模块文件nand.v
    将模块名从nand改为合法的自定义名称(比如nand_gate):
module nand_gate (A, B, C);

    input A, B;
    output C;

    assign C = ~(A & B);

endmodule
  1. 修正测试台文件nand_tb.v
    需要同步修改两处:
  • 模块定义名称(原module nand;改为module nand_tb;,与$dumpvars中的目标模块名保持一致)
  • 实例化的模块名(原nand uut(A,B,C);改为nand_gate uut(A,B,C);)

修正后的测试台代码:

`timescale 1ns / 1ns
`include "nand.v"

module nand_tb;

reg A;
reg B;
wire C;

nand_gate uut(A,B,C);

initial begin
    $dumpfile("nand_tb.vcd");
    $dumpvars(0, nand_tb);

    A = 0;
    B = 0;
    #20 
    A = 1; // 01
    B = 0;
    #20
    A = 0;  //10
    B = 1;
    #20
    A = 1;
    B = 1; // 11
    #20

    $display("Test complete");
end

endmodule
  1. 执行编译
    保持原编译命令即可:
iverilog -o nand_tb.vvp nand_tb.v

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:58:16