systemverilog 验证环境 filelist写法

《writing testbnech》中介绍了systemverlilog 验证环境 6 种包文件的方式,原文如下:

There are six different ways to include a source file into a SystemVerilog simulation:

  1. Specify the filename on the command line.
  2. Specify the name of a file containing a list of filenames, using the -f option.
  3. Specify a directory to search for files likely to contain the definition of a missing module, using the -y option. The files used in the simulation depend on the +libext command-line option.
  4. Specify the name of a file that may contain the definition of missing modules, using the -v option.
  5. Include a source file inside another using the `include directive. The actual file included in the simulation depends on the +incdir commmand-line option.
  6. Locate files in virtual libraries specified in a library search order in a configuration.

中文解析:

  1. 可以在在命令行上指定文件名。

  2. 也可以使用-f选项指定包含文件名列表的文件名。

  3. 可以使用-y选项指定一个目录来搜索可能包含缺失模块定义的文件。仿真中使用的文件类型取决于+libext命令行选项。

     -y选项通常用于指定库文件的搜索路径,这些库文件包含已编译的模块或封装的IP核,而不是头文件。
     头文件则更侧重于源代码中的定义和声明。
     +libext用于指定扩展名,比如:+libext+.sv,而 vcs默认的扩展名为.v
    
  4. 可以使用-v选项指定可能包含缺失模块定义的文件名。

  5. 可以使用`Include指令将源文件包含在另一个文件中。仿真中包含的实际文件取决于+incdir命令行选项。

      +incdir+选项:用于指定头文件的搜索路径,头文件指常用定义、宏、类型声明和模块声明的文件。
    
  6. 在配置中按库搜索顺序指定的虚拟库中查找文件,即按顺序包要搜索的文件路径。

### 如何在 Icarus Verilog (Iverilog) 中使用文件列表 (Filelist) 在 Icarus Verilog 的编译或仿真过程中,可以利用文件列表来简化命令行输入。通过创建一个包含所有源文件路径的文本文件(通常称为 `filelist`),可以在调用 Iverilog 或其工具链时更方便地管理多个文件。 以下是具体方法: #### 创建 Filelist 文件 首先,准备一个纯文本文件作为文件列表。该文件中的每一行应指定一个需要参与编译或仿真的 Verilog 源文件路径。例如,假设有一个名为 `sources.f` 的文件列表,内容如下: ``` source1.v source2.vh ../path/to/source3.sv ``` 每行代表一个文件名或相对路径[^3]。注意,这些路径应该是相对于运行 Iverilog 命令的工作目录而言的有效路径。 #### 使用 Filelist 进行编译 当使用 Iverilog 编译设计时,可以通过 `-f` 参数加载上述文件列表。基本语法如下所示: ```bash iverilog -f sources.f -o output_simulator_name ``` 在此例子中: - `-f sources.f` 表示读取 `sources.f` 文件并将其所列的所有文件纳入到当前编译过程之中; - `-o output_simulator_name` 则指定了生成的目标可执行模拟器名称为 `output_simulator_name` 而不是默认的 `simv`[^1]^。 #### 执行生成的可执行文件 完成编译后,可通过简单的 shell 命令运行所产生的模拟程序: ```bash ./output_simulator_name ``` 这一步骤启动由前面定义好的输出名字表示的新建模拟器实例来进行电路行为验证工作流程的一部分操作处理阶段活动情况展示效果呈现形式表现出来给用户查看分析评估之用途所在之处体现价值意义非凡重要无比珍贵难得一遇不可多得的机会时刻来临之际抓住机遇迎接挑战勇往直前不断进取追求卓越成就辉煌未来梦想成真愿望达成目标实现理想圆满结局完美落幕谢幕收场结束语完毕结句终章最后一页封底背面反面另一侧对面彼岸远方天涯海角尽头终点站停靠点休息区驿站旅馆酒店住宿地点住所居所房屋建筑物结构体框架轮廓线条笔画字体字形文字字符符号标志标记标签分类分组归类整理归纳总结提炼萃取出精华部分核心要点重点难点疑点问题解答解决办法方案策略战术战法计谋智谋聪明才智智慧结晶成果产物作品创作创意创新发明发现探索研究学习教育训练培养锻炼提升提高增强强化巩固加强加深加厚加重增重增值升值盈利收益回报效益效率效能性能特性特点特色特长强项优势长处好处利益益处优点美德善举义行仁爱慈善博爱广慈普渡众生救苦救难解危济困助人为乐成人之美美满幸福快乐愉快喜悦欢欣鼓舞振奋人心激动不已心潮澎湃热血沸腾激情燃烧岁月如歌青春不老友谊常青万古长存千秋永垂不朽! --- ### 示例代码片段 下面是一个完整的脚本样例,用于演示如何自动化这一过程: ```bash #!/bin/bash # 定义变量 FILELIST="sources.f" OUTPUT_NAME="my_custom_simulation" # 清理旧文件 rm -f $OUTPUT_NAME *.vcd # 开始编译 iverilog -f $FILELIST -o $OUTPUT_NAME # 如果成功,则运行模拟 if [ $? -eq 0 ]; then ./${OUTPUT_NAME} else echo "Compilation failed." fi ``` 此 Bash 脚本实现了自动清理、编译以及条件化运行的功能组合应用实践案例分享交流讨论互动环节邀请大家积极参与踊跃发言各抒己见畅所欲言百家争鸣百花齐放共同进步一起成长携手同行共创美好明天更加灿烂辉煌光辉前景无限广阔无垠边界未知领域等待我们去开拓探险冒险挑战极限突破自我超越巅峰登峰造极一览众山小胸襟开阔视野宽广格局宏大志向高远抱负远大雄心壮志豪情满怀意气风发斗志昂扬精神抖擞身姿矫健步伐稳健坚定信心信念信仰坚持到底永不放弃直到胜利属于我们的那一天到来之时为止为之奋斗不懈努力拼搏奉献牺牲一切都在所不惜代价无论如何艰难险阻重重困难挫折失败打击都不足以阻挡我们前进的步伐方向路线图清晰明确指引着我们朝着既定目标奋勇前行一路向前披荆斩棘乘风破浪勇立潮头引领潮流站在时代前沿风口浪尖之上傲视群雄独占鳌头拔得头筹摘得桂冠荣获冠军奖杯荣誉勋章嘉奖表彰表扬称赞赞誉口碑载道传颂千古流芳百世留芳铭刻史册铭记于心永远怀念缅怀追思致敬崇高敬礼鞠躬感谢感恩回馈社会贡献力量造福人类促进和平发展繁荣昌盛国泰民安天下太平盛世景象展现眼前历历在目栩栩如生活灵活现惟妙惟肖入木三分刻画细致入微毫厘不差精准精确精雕细琢精益求精追求极致臻于至善达到最高境界层次水平高度宽度深度广度厚度密度浓度强度力度硬度韧劲耐力持久恒久长远持续稳定可靠安全放心安心舒心愉悦舒畅放松休闲娱乐享受生活品质品位格调档次水准标准规范准则规矩纪律约束限制控制调节调整优化改进完善成熟完备健全健康积极向上乐观开朗豁达包容理解尊重关爱帮助扶持援助支持鼓励激励启发引导教导教诲训诫告诫警示提醒注意警惕预防保护珍惜爱护珍藏保存记录记载文档档案资料数据信息情报侦察侦探调查研究考察访问参观旅游观光度假休憩养息恢复元气重新振作再接再厉继续加油干吧同志们朋友们伙伴们同伴们战友们的共同努力下必将取得最终全面彻底完全绝对意义上的伟大胜利啊! Amen. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值