Icarus Verilog实现NAND门遇语法错误‘I give up’求助
问题排查:Icarus Verilog编译nand模块时的语法错误
错误信息
./nand.v:1: syntax error
I give up.
问题根源
nand是Verilog的内置关键字(对应与非门原语),不能用作自定义模块的名称,这就是编译器报错指向第1行的核心原因。
修复步骤
- 修改核心模块文件
nand.v
将模块名从nand改为合法的自定义名称(比如nand_gate):
module nand_gate (A, B, C); input A, B; output C; assign C = ~(A & B); endmodule
- 修正测试台文件
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
- 执行编译
保持原编译命令即可:
iverilog -o nand_tb.vvp nand_tb.v
内容的提问来源于stack exchange,提问作者Nguyen Nguyen
相关产品推荐
相关产品推荐

