1. 初识Verdi VC Apps的Batch模式:不只是GUI的补充
很多刚开始接触Verdi的朋友,可能都和我当初一样,觉得Verdi就是一个强大的图形化调试工具,点点鼠标,看看波形,找找问题。这没错,Verdi的GUI确实直观高效。但如果你以为这就是它的全部,那可就错过了一个更强大的“自动化武器库”——Verdi VC Apps的Batch模式。
简单来说,Batch模式就是让你能用命令行脚本的方式,去调用Verdi内置的那些深度分析功能。比如,你想自动提取一个超大规模设计中所有没有复位端的寄存器列表,或者批量分析某个模块的接口层次结构。如果用手动在GUI里操作,你得打开设计、找到路径、点开菜单、设置过滤条件……不仅慢,还容易出错,更别提集成到CI/CD流程里了。但Batch模式不同,它把这些操作都封装成了一个个Perl脚本,你写一行命令,或者把它嵌入到Makefile、Python脚本里,它就能在后台默默帮你把活儿干了,生成一份清晰的报告。
这特别适合几种场景:一是设计规模巨大,GUI加载都费劲,你只想快速获取某些特定信息;二是需要重复性、批量化地执行某些检查或分析,比如在每晚的回归测试后自动跑一遍;三是你想把Verdi的分析能力集成到自己的自动化流程中,实现无人值守的深度验证。我自己的经验是,一旦用熟了Batch模式,很多繁琐的“体力活”就彻底解放了,你可以把精力更多集中在真正的设计分析和问题定位上。
那么,这些“神器”藏在哪里呢?它们就在你的Verdi安装目录下:$VERDI_HOME/share/VIA/Apps/Bin/。进去看看,你会发现一堆以.pl结尾的Perl脚本,每个脚本对应一个VC App功能。比如我们今天要重点聊的listRegisters.pl,就是用来列出设计中寄存器的;还有listInstances.pl、listNets.pl等等,光看名字就能猜出大概用途。这些脚本就是通往Batch模式的大门。
2. 第一个Batch脚本实战:listRegisters.pl的“坑”与“宝”
咱们不玩虚的,直接上手。就拿最常用的listRegisters.pl开刀,它的作用是列出指定设计层次下的寄存器信息。按照常规思路,我们一般会先看看帮助文档。在终端里执行:
perl $VERDI_HOME/share/VIA/Apps/Bin/listRegisters.pl
你会看到类似下面的输出,这就是它的“使用说明书”:
[VC App] listRegisters.pl
[Path] /share/VIA/Apps/Bin/
[Abstract] Run listRegisters in batch mode
[Usage] ./listRegisters.pl <design_import> \
[-target_scope <target_scope>] \
[-o <output_log>] \
[-non_reset_flop] \
[-report_sync_reset]
[Example] ./listRegisters.pl -f run.f -path Design -target_scope "tb_CPUsystem.i_CPUsystem" -non_reset_flop
[Options]
-target_scope: optional. specify the target scope full hierarchical name to list registers.
-o: specify the output log name; default is "listRegisters.log"
-non_reset_flop: optional. specify whether to only dump the non-resettable flop
-report_sync_reset: optional. specify whether to dump the synchronous reset pin by the RTL coding style in the flop
看起来挺清晰的,对


3452

被折叠的 条评论
为什么被折叠?



