2014-04-01 54 views
1

我正在使用ModelSim來模擬Verilog。我創建了一個define.v文件,並希望在其他多個verilog模塊中包含此define.v。 define.v的Verilog中不能包含定義文件

部分如下:

// 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 
    ); 
... 
... 

然而,在編譯時,它似乎沒有包含定義文件,錯誤如下:

** Error: //psf/Home/Desktop/Projects/project1/alu.v(3): 
      Cannot open `include file "define.v". 

我該如何解決這個問題LEM?

+0

「define.v」位於您的目錄中? – e19293001

回答

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