在Quartus編譯環境下,使用include, fopen等文件操作指令時,會涉及到文件路徑問題。
以 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.vh
2. 使用相對路徑時,以工程路徑為參考,這里工程路徑為 E:\quartus_project\sd_card_controller ,此時相對路徑可以有兩種寫法:
`include "rtl/sd_wb_driver/sd_defines.vh" 或者
`include "../rtl/sd_wb_driver/sd_defines.vh"
在ModelSim的編譯環境下,絕對路徑的使用方式和Quartus相同,但是相對路徑的定義和Quartus就有一些差別。
以fopen函數為例
1. 當用右側語句讀取sd_model.log文件時:sdModel_file_desc = $fopen("log/sd_model.log");
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則以工程的上一級文件夾作為參考。