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