在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则以工程的上一级文件夹作为参考。