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

简介: 【芯片前端】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是最为合理安全的。


相关文章
|
5月前
|
存储 前端开发 JavaScript
|
6月前
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
2081 64
|
9月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
283 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
269 2
|
10月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
1979 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
7月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
8月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
177 4
|
9月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
323 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
11月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
241 3
|
11月前
|
机器学习/深度学习 编解码 前端开发
探索无界:前端开发中的响应式设计深度解析####
【10月更文挑战第29天】 在当今数字化时代,用户体验的优化已成为网站与应用成功的关键。本文旨在深入探讨响应式设计的核心理念、技术实现及最佳实践,揭示其如何颠覆传统布局限制,实现跨设备无缝对接,从而提升用户满意度和访问量。通过剖析响应式设计的精髓,我们将一同见证其在现代Web开发中的重要地位与未来趋势。 ####
175 7

推荐镜像

更多
  • DNS