Abtract
`include編譯器指令用于在代碼行中包含任何其他文件的內(nèi)容,被包含的文件即可以使用相對路徑定義,也可以使用絕對路徑定義。
本文將對`include使用過程中遇到的問題進(jìn)行總結(jié)歸納。
Introduction
1.使用方法
`include類似于C語言中的#include結(jié)構(gòu),該指令通常用于將內(nèi)含全局或公用定義的頭文件包含在設(shè)計文件中。例如:
`include "http://www.cnblogs.com/primitive.v" // 注意:這里的要包含文件需要用雙引號括起來
// 編譯時,上面這一行將會被"http://www.cnblogs.com/primitive.v"中的內(nèi)容所替換
... ...
<design.v文件的源代碼>
... ...
`include結(jié)構(gòu)示意如下如所示:
圖1 `include圖解
上圖意思為:在編譯的時候,需要對`include命令進(jìn)行預(yù)處理,將file2.v中的內(nèi)容全部復(fù)制插入到file1.v文件中的`include命令處,即將C替換`include。同理,在文件file.v中,用file1.v文件中的內(nèi)容替換`include出現(xiàn)的地方,這樣實際效果類似于有圖,而編譯的時候,是將file.v文件以右圖為單元進(jìn)行編譯。
2.注意事項
- 一條`include命令只能指定一個被包含的文件,如果需要包含多個文件,則需要使用多個`include命令進(jìn)行包含。
- 多個`include命令可以寫在一行,在`include命令行中只可以出現(xiàn)空格和注釋行。
e.g. `include "file1.v" `include "file2.v"
- `include命令后加入的文件名稱必須放在雙引號中。
- `include中包括的文件需要使用絕對路徑或者相對路徑,如果不增加路徑信息,則默認(rèn)在當(dāng)前路徑下搜尋要包含的文件,或者在進(jìn)行編譯時指定被包含文件所在路徑,否則,編譯時默認(rèn)在當(dāng)前仿真路徑下搜尋`include中的文件,如果該文件不在當(dāng)前路徑,則會找不到被包含的文件。當(dāng)然可以在仿真時在仿真命令中加入搜尋路徑,例如使用+incdir+(file_path)增加搜索路徑,這樣仿真時會在增加的搜尋路徑下尋找找尋`include中包含的文件。
- 如圖1,如果file1.v文件要用到file2.v中的內(nèi)容,則在使用`include命令時,file2.v必須出現(xiàn)在file1.v文件前。
- `include可以使用嵌套格式,如圖1所示。
- `include不能include module,如果需要include module則可以把需要的module增加到filelist中。
Conclusion
在實際使用`include包含文件時,特別需要注意`include包含文件的順序以及包含文件存放的路徑等問題。