ucli与fsdbdump波形
背景
最近把SoC工程在服务器上用vcs和verdi来进行前端仿真和debug。
然后看到ariana使用
vcs: vcs_build
cd $(vcs-library) && ./simv $(if $(VERDI), -verdi -do $(root-dir)/init_testharness.do,) +permissive -sv_lib ../work-dpi/ariane_dpi +PRELOAD=$(elf-bin) +permissive-off ++$(elf-bin)| tee vcs.log
来进行仿真,我关注的是其中-do $(root-dir)/init_testharness.do这部分
-verdi -do $(root-dir)/init_testharness.do
前面有-verdi会直接在仿真还没开始时打开verdi,此时需要在verdi中点击run simulation来开始仿真
而我更希望编译脚本直接开始仿真,仿真完成再看要不要查看波形,因此想去掉-verdi直接使用-do $(root-dir)/init_testharness.do,不过这样使用会报错,vcs会提示使用在前面加-ucli或仿真器。因此我改为了 -ucli -do $(root-dir)/init_testharness.do
UCLI
The Unified Command-line Interface (UCLI) provides a common set
of commands for Synopsys verification products.
UCLI is compatible with Tcl 8.3. You can use any Tcl command with
UCLI.
UCLI给Synopsys验证提供了一组通用命令,通过UCLI可以执行任意TCL(ToolCommand Language)命令。
在我们的验证环境中,通常跟ucli打交道的地方是用来控制开始dump和结束dump 波形的时间,以及dump的hierarchy。
tcl dump波形脚本
而init_testharness.do文件里面就是tcl命令,来使用fsdbDumpvars来dump想要dump的波形
fsdbDumpvars 0 "ariane_tb" +all +trace_process
这里直接dump top module的所有信号
我之前做的一些小项目都是在tb中直接dump VCD(Value Change Dump)或其他类型,然后觉得用tcl脚本专门设置dump波形更好用:
- 这样可以更方便调整需要dump的信息,不用再编译硬件(tb中的RTL代码)
- 并且可以实现一些更高级的用法,比如我看到用tcl脚本来将fsdb按一定的大小进行切分。
这里更多的dump方式我们可以查看fsdbDumpvars的帮助文档
fsdb(Fast Signal DataBase) 是Spring Soft (Novas)公司 Debussy / Verdi 支持的波形文件,一般较小,使用较为广泛。其余仿真工具如ncsim,modlesim等等可以通过加载Verdi 的PLI (一般位于安装目录下的share/pli 目录下) 而直接dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它只提取了仿真过程中信号的有用信息,除去了VCD中的冗余信息,就像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现的,fsdb是通过verilog的PLI接口来实现的。\(fsdbDumpfile,\)fsdbDumpvars等

浙公网安备 33010602011771号