前言

测试所用的文件目录(列举关键文件):

/home/xiaotu/my_work/uvm_demo
-cfg/
-ctl/
-rtl/
-sim/-Makefile
-tc/
-th/
-ver/

-f/-F影响后跟filelist文件内的解析方式,不影响后跟文件的解析方式

典型的场景,就是makefile里用-f还是-F来后缀路径都是一样的(仅仅对于解析这个list) ,绝对路径就按绝对路径解析,相对路径就相对makefile所在目录进行解析。

而../cfg/tb.f中的所有路径都受到到前面的-f或-F影响,如上图的解析方式时,../cfg/tb.f中无论以下哪种写法,都是按-f来解析文件路径的:

-F ../ctl/ctl.f
-f ../rtl/dut.f
../rtl/a.v

-f解析filelist内的路径时,与当前filelist所在路径无关

-f ../cfg/tb.f,

当tb.f内路径为相对路径时,则相对makefile所在路径进行解析;

当tb.f内路径为绝对路径时,则直接按照绝对路径进行解析;

进一步讲,-f path/file.f中path不会以任何形式影响file.f中的文件路径解析;

-F解析filelist内的路径时,与当前filelist所在路径有关

-F ../cfg/tb.f

当tb.f内路径为相对路径时,则会前缀filelist所在路径进行解析;

../cfg/cfg.f中的写法:
../th/harness.svcmp.log中解析的路径:
Parsing design file '../cfg/../th/harness.sv'

当tb.f内路径为绝对路径时,则不会前缀任何路径,直接解析绝对路径;

../cfg/cfg.f中的写法:
/home/xiaotu/my_work/uvm_demo/ver/my_env.svcmp.log中解析的路径:
Parsing design file '/home/xiaotu/my_work/uvm_demo/ver/my_env.sv'

当tb.f内路为-y加载的库文件时,则直接视为相对路径,前缀filelist所在路径进行解析;

../cfg/cfg.f中的写法:
-y /home/xiaotu/my_work/uvm_demo/rtlcmp.log中解析的路径:
Warning-[LFCOR] Library file or dir cannot be openedLibrary directory '../cfg//home/xiaotu/my_work/uvm_demo/rtl' cannot be opened for reading due to 'No such file or directory', will skip it.The library was specified from command line through -y or -v.

当tb.f内路为-f+filelist时,则直接视为相对路径,前缀-F的filelist所在路径进行解析;

Makefile中:
-F ../cfg/tb.f../cfg/tb.f中:
-f /home/xiaotu/my_work/uvm_demo/cfg/dut.f

编译报错:

Error-[P1ARGS-CANTOPN-F] Cannot open fileUnable to open '../cfg//home/xiaotu/my_work/uvm_demo/cfg/dut.f' due to 'No such file or directory'.Please fix the reason mentioned above and continue.

嵌套的场景

../cfg/cfg.f内的路径:
-f/-F ../cfg/dut.f(层次A)../cfg/dut.f内的路径为:
-f/-F ../ctl/ctl.f(层次B)../ctl/ctl.f内文件为:
../ctl/my_interface.sv

-f(层次A)嵌套-f(层次B),两次解析均按照绝对路径,或相对Makefile的相对路径进行解析;

-f(层次A)嵌套-F(层次B),层次B以-f的方式解析,层次B内的文件绝对路径正常解析,相对路径则相对层次B(即../ctl/)进行解析;

Parsing design file '../cfg/../ctl/my_interface.sv'

-F(层次A)嵌套-f(层次B),-f后面负责的相对路径都相对的是-F后跟文件所在目录的相对路径

太绕了,举个具体点的例子:

Makefile中:
-F ../cfg/tb.f../cfg/tb.f中:
-f ./dut.f./dut.f中(dut.f在cfg目录):
../rtl/mul_trans.v
-f ../ctl/ctl.f../ctl/ctl.f中:
../ctl/my_interface.sv

那么mul_trans.v的编译路径为:

Parsing design file '../cfg/../rtl/mul_trans.v'

../cfg —— -F ../cfg/tb.f使得tb.f内的相对路径解析都要加上前缀../cfg;

../cfg/../rtl/mul_trans.v —— -f ./dut.f因此解析dut.f内相对路径的文件时相对的是当前../cfg的路径(上一层-F的作用);

还有my_interface.sv的解析路径:

Parsing design file '../cfg/../ctl/my_interface.sv'

其形式是-F嵌套-f再嵌套-f,可以看到后面两个-f都是相对../cfg进行解析,两个-f间没有路径叠加(如上文,-f path/file.f中path不会以任何形式影响file.f中的文件路径解析);

-F(层次A)嵌套-f(层次B),-f后跟filelist内(如果该filelist被找到)的绝对路径则会编译为绝对路径

Makefile中:
-F ../cfg/tb.f../cfg/tb.f中:
-f ../cfg/dut.f../cfg/dut.f中:
/home/xiaotu/my_work/uvm_demo/rtl/mul_trans.v

编译结果(这一点与我之前记忆有偏差,我再查一下,目前实测的结果确实是这样的):

Parsing design file '/home/xiaotu/my_work/uvm_demo/rtl/mul_trans.v'

综合看,-F嵌套-f会影响-f对其后filelist内相对路径的解析,使用起来要异常谨慎;

-F(层次A)嵌套-F(层次B)

遵循-F层层递进的规律,略

总结

因为-F对其后递进拆解filelist的影响更大,因此个人认为还是以-f+绝对路径的方式来组织filelist是最为合理安全的。

【芯片前端】Filelist -f/-F的文件解析方式探究相关推荐

  1. 前端上传excel表格文件解析预览

    效果图 implUserExcel(file) {const that = thisthis.loadingExcel = trueconst isXls = file.type === 'xls/x ...

  2. grib1文件解析 python_grib文件解析

    一.grib文件简介 WMO是世界气象组织,world meteorology organization. GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式.最初GRIB表示&qu ...

  3. idea中ctrl+shift+f(在文件中查找)失效,全图文解决方案

    idea中ctrl+shift+f(在文件中查找)失效,全图文解决方案 一.Win11微软键盘 原因:因为输入法默认指定ctrl+shift+f是简体与繁体中文输入之间的切换,所以在idea中按键无效 ...

  4. 2020-10-27(dex文件解析)

    一张图搞懂dex 大图这里 当然也可以通过下面的图12 DexFile的文件格式,了解更清楚. DEX文件详解 什么是dex文件? 如何生成一个dex文件 dex文件的作用 dex文件格式详解 什么是 ...

  5. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  6. android基础知识13:AndroidManifest.xml文件解析【转载】

    注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  7. 【芯片前端】四年经验|芯片前端|IP设计岗|面试问题|总结分享

    面试基本落下帷幕,对聊到的问题和知识点做一下总结.很多问题回答的不好,结束后也进一步的思考了很多又有了一些新的拓展,也一并总结在这里. 异步FIFO相关 1.异步FIFO的实现原理. 把关键知识点说清 ...

  8. Json文件解析(下

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...

  9. Json文件解析(上)

    Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...

最新文章

  1. Linux终端:speedtest_cli检测你的实时带宽速度
  2. akka连接是什么_什么是Akka?
  3. 线性布局LinearLayout
  4. 基于STC89C52的韦根数据接收
  5. windows的dos(cmd)下使用git commit出现error: pathspec readme.md did not match any file known to git
  6. 33. 把数组排成最小的数(C++版本)
  7. 如何用MATLAB编写FIR维纳滤波器,FIR维纳滤波器的Matlab仿真验证.ppt
  8. word交叉引用自动编排word参考文献
  9. Pointnet模型源码解读(更新中)
  10. 用图形化文件对比工具kdiff3解决git rebase冲突
  11. 【网页截图亲测可用】Linux + python3 + selenium + chrome + chrome-driver 服务器端网页截图
  12. PAT合集1096 大美数 (15 分)
  13. 周大福、周六福、周生生等区分
  14. 什么是java框架结构_什么是JAVA类集框架啊?具体指的是什么?是JAVA类的框架结构么?...
  15. Excel隔列求和怎么操作
  16. 名企笔试真题精选 (六)
  17. 如何使用加密锁加密自己程序
  18. matlab 有源电力滤波器,基于MATLAB的有源电力滤波器研究
  19. Dubbo SPI-Wrapper
  20. Java 通过File类的listFiles()遍历文件夹

热门文章

  1. apicloud ajax html,apicloud ajax请求问题
  2. Python练习task2:条件与循环
  3. CTeX下载安装步骤
  4. Civil3D 2018-02 点
  5. Android最火的框架系列(四)Volley
  6. Linux-07-GNU-GPL-自由软件知识小结(L002-21)
  7. 二、C++反作弊对抗实战 (进阶篇 —— 2.作弊器中常见断链隐藏DLL方法)
  8. Lodop打印较大的超出纸张的图片
  9. 数通 | 静态路由表的配置(含负载分担、路由备份)
  10. ftp的20 21端口和主动被动模式