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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
简介: 【芯片前端】Filelist -f/-F的文件解析方式探究

前言

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

/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.sv
cmp.log中解析的路径:
Parsing design file '../cfg/../th/harness.sv'

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

../cfg/cfg.f中的写法:
/home/xiaotu/my_work/uvm_demo/ver/my_env.sv
cmp.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/rtl
cmp.log中解析的路径:
Warning-[LFCOR] Library file or dir cannot be opened
  Library 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 file
  Unable 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'

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是最为合理安全的。


相关文章
|
12天前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
4天前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
10 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
4天前
|
存储 数据采集 数据可视化
深入解析GPS接收机的位置数据文件:项目实战从数据解析到可视化
全球定位系统(GPS)是现代技术的支柱之一,广泛应用于交通导航、科学研究、智能设备等领域。GPS接收机通过接收来自卫星的信号,确定设备的地理位置,并将这些位置信息记录在数据文件中。 这些数据文件通常包含大量的信息,如时间、位置、海拔高度、卫星状态等。本篇文章将通过解析这些数据文件,展示如何利用Python和Folium库实现数据的读取、处理和可视化,帮助读者深入理解GPS数据的处理过程。
|
14天前
|
监控 数据挖掘 Python
python3解析wav文件获取dtmf值
【8月更文挑战第5天】这段Python代码示例展示了如何解析WAV文件并检测其中的双音多频(DTMF)信号。它首先打开并读取WAV文件的内容,接着利用`numpy`和`scipy`库计算频谱图。通过定义标准的DTMF频率对,并在频谱中寻找这些特定的频率组合,从而识别出DTMF值。此代码可用于电话系统监控或音频数据分析项目中,以自动化检测和处理DTMF信号。
|
12天前
|
资源调度 前端开发 JavaScript
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
|
19天前
|
Web App开发 开发框架 编解码
在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理
在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理
|
1月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之如何在代码中解析File类型的文件内容
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
56 11
|
26天前
|
缓存 前端开发 JavaScript
前端优化之路:打包文件拆包、增加哈希值
前面对项目打包做了优化处理,但是还不够完美,有两点可继续优化。
|
29天前
|
前端开发 Java 项目管理
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决
|
19天前
|
安全 搜索推荐 数据挖掘
文件解析的终极工具:Apache Tika
文件解析的终极工具:Apache Tika
31 0

热门文章

最新文章

推荐镜像

更多