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