不能在verilog中包含define文件

时间:2014-04-01 02:06:50

标签: cpu verilog modelsim

我正在使用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".

我怎么能解决这个问题?

1 个答案:

答案 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