在Quartus編譯環境下,使用include, fopen等文件操做指令時,會涉及到文件路徑問題。windows
以 E:\quartus_project\sd_card_controller\rtl\sd_wb_driver\sd_defines.vh 參數定義文件爲例,函數
1. 使用絕對路徑,可用如下寫法,須要注意:verilog路徑符爲斜槓「/」,而windows資源管理器的路徑符爲反斜槓「\」。測試
`include "E:/quartus_project/sd_card_controller/rtl/sd_wb_driver/sd_defines.vhspa
2. 使用相對路徑時,以工程路徑爲參考,這裏工程路徑爲 E:\quartus_project\sd_card_controller ,此時相對路徑能夠有兩種寫法:資源
`include "rtl/sd_wb_driver/sd_defines.vh" 或者編譯
`include "../rtl/sd_wb_driver/sd_defines.vh"test
在ModelSim的編譯環境下,絕對路徑的使用方式和Quartus相同,可是相對路徑的定義和Quartus就有一些差異。file
以fopen函數爲例model
1. 當用右側語句讀取sd_model.log文件時:sdModel_file_desc = $fopen("log/sd_model.log");im
modelsim仿真工程文件夾結構須爲:
-- modelsim_prj
-- test1 :仿真工程
-- log
-- work : work庫
-- bench : testbench和model文件夾
-- dut : 待測試文件
此時log文件夾和work庫在應在同一級,不然modelsim會提示找不到文件
2. 當用右側語句讀取sd_model.log文件時:sdModel_file_desc = $fopen("../log/sd_model.log");
modelsim仿真工程文件夾結構須爲:
-- modelsim_prj
-- log
-- test1 :仿真工程
-- work : work庫
-- bench : testbench和model文件夾
-- dut : 待測試文件夾
此時log文件夾和仿真工程test1應在同一級,不然modelsim會提示找不到文件
總結:經過上述分析能夠看出,當使用沒有「../」的相對路徑時,Quartus和Modelsim的用法相同,都是以工程路徑做爲參考;
當使用有「../」的相對路徑時,modelsim則以工程的上一級文件夾做爲參考。