我正在使用ModelSim来模拟Verilog。我创建了一个define.v文件,并希望将此define.v包含在多个其他verilog模块中。
define.v的一部分如下:
// defines
`define RSIZE 4
`define ISIZE 16
`define DSIZE 16
`define ASIZE 16
`define NREG 4
`define ADD 4'b0000
`define SUB 4'b0001
`define AND 4'b0010
`define OR 4'b0011
`define SLL 4'b0100
`define SRL 4'b0101
`define SRA 4'b0110
`define RL 4'b0111
`define LW 4'b1000
`define SW 4'b1001
`define LHB 4'b1010
`define LLB 4'b1011
`define BR 4'b1100
`define JAL 4'b1101
`define JR 4'b1110
`define EXEC 4'b1111
...
...
我已将此文件包含在多个其他模块中,例如:alu.v
//ALU.v
`include "define.v"
module alu(
input [`DSIZE-1:0] a, b, //operands
input [3:0] op, //operation code
input [3:0] imm, //immediate
output reg [`DSIZE-1:0] out, //output
output reg [2:0] flag //flag for N, V, Z in sequence
);
...
...
但是,在编译时,似乎没有包含define文件,错误如下:
** Error: //psf/Home/Desktop/Projects/project1/alu.v(3):
Cannot open `include file "define.v".
我怎么能解决这个问题?
答案 0 :(得分:3)
如果define.v
不在当前目录中,则需要指示Modelsim在搜索包含的文件时使用包含define.v
的目录。
执行此操作的选项是+incdir+path
。
因此,例如,如果您具有以下文件结构:
project/src/alu.v
project/include/define.v
您从project
开始运行,然后您需要将+incdir+include
作为参数包含在Modelsim中。
作为旁注,如果您多次包含同一文件,则应使用"include guards"以避免重新定义宏的警告。
`ifndef DEFINE_V
`define DEFINE_V
`define RSIZE 4
`define ISIZE 16
....
`endif