【system verilog】`include "filepath"时,并不是相对当前目录查找

前言

`include “filepath”是我们常用的组织编译文件的形式,然而我最近才知道,这里面的filepath并非相对当前路径,或者说即使你在vim中能够gf打开文件,编译文件时候也不一定能编译到。

`include "filepath"

针对常用的`include "filepath",按照惯例看一下IEEE标准中的解释:

上百度翻译:当文件名用双引号括起来时(“文件名”),对于相对路径,编译器的搜索当前工作目录和用户指定的位置(可选)。

那么也就是说,文件中`include "相对路径"时,这个相对路径相对的并不是当前文件所在路径,而是进行仿真的路径和设定的编译全局搜索路径!

举个例子,env与sim目录同一级,其他目录结构如下图所示:

此时通过+incdir+env将env目录设为编译全局搜索路径,+libext+sv设定sv类型文件可以进行全局搜索,所有编译文件中只有一个名为dec.sv的文件路径为BT/env/dec.sv,在BT/env/pkt_ctl/src/xaction.sv中进行`include,会呈现以下效果:

1.`include "dec.sv"

编译通过,编译文件为在全局路径env下检索到的env/dec.sv;

2.`include "./dec.sv"

编译通过,编译文件为env/./dec.sv,即BT/env/dec.sv;

3.`include "../env/dec.sv"

编译通过,编译文件为sim/../env/./dec.sv,即env/dec.sv,此时由于时相对路径那么先相对于sim目录进行查找,如果找不到在相对全局路径进行查找;

4.`include "../../dec.sv"

编译报错,因为查找不到sim/../../dec.sv或者env/../../dec.sv,尽管此时通过vim快捷见gf是可以直接打开这个文件的,但是所见非所编译。

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼德兰的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值