【仿真】波形dump(vcd,shm,fsdb,saif,...)

 IC研发过程中,可能会涉及到多种工具,过程中也可能需要不同格式的波形文件。从网上搜索情况来看,介绍saif的较少,所以这里着重介绍一下saif的dump。

下面粘贴了两个相关背景知识的帖子,如其中介绍,saif主要用在功耗分析中。

gPTPX功耗分析实战, VCD, SAIF, FSDB的区别_RTL2GDS的博客-优快云博客PTPX功耗分析实战, VCD, SAIF, FSDB的区别PTPX功耗分析VCD,SAIF,FSDB的区别注:文章转载自微信公众号 RTL2GDS (微信号:rtl2gds)你好,我是老本(Benjamin)。STA系列文章定期会在微信公众号每周日晚8点更新,其它时间就先写点随笔吧,这是一篇PTPX进行功耗分析的实战文章,介绍了主要的命令和选项,以及对反标翻转率的解析,不同波形文件的比较。...https://blog.youkuaiyun.com/RTL2GDS/article/details/104957522PTPX功耗分析实战, VCD, SAIF, FSDB的区别PTPX功耗分析VCD,SAIF,FSDB的区别注:文章转载自微信公众号 RTL2GDS (微信号:rtl2gds)你好,我是老本(Benjamin)。STA系列文章定期会在微信公众号每周日晚8点更新,其它时间就先写点随笔吧,这是一篇PTPX进行功耗分析的实战文章,介绍了主要的命令和选项,以及对反标翻转率的解析,不同波形文件的比较。...https://blog.youkuaiyun.com/RTL2GDS/article/details/104957522

(二)功耗的分析_沧海一升的博客-优快云博客_功耗分析前面学习了进行低功耗的目的个功耗的构成,今天就来分享一下功耗的分析。由于是面向数字IC前端设计的学习,所以这里的功耗分析是基于DC中的power compiler工具;更精确的功耗分析可以采用PT,关于PT的功耗分析可以查阅其他资料,这里不涉及使用PT的进行功耗分析。  (1)功耗分析与流程概述  上一个小节中讲解了功耗的构成,并且结合工艺库进行简要地介绍了功耗的计算。但是实际上,我们根本...https://blog.youkuaiyun.com/qq_21842097/article/details/88420108

1. 下面介绍一下 vcs 如何 dump saif文件

在 vcs的 user_guide中,有一章节专门介绍saif相关的选项

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_12,color_FFFFFF,t_70,g_se,x_16

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_20,color_FFFFFF,t_70,g_se,x_16

比较推荐使用ucli的方式进行,不用修改环境。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_20,color_FFFFFF,t_70,g_se,x_16

2. 也可以从波形文件直接转换成 saif

比如 fsdb2saif

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3RtMzJzdHU=,size_20,color_FFFFFF,t_70,g_se,x_16


用ucli方式进行dump,举例如下

(run xxx1 ps/ns/us....)                    //可以设置先run一段时间,再dump波形
call $fsdbDumpvars(0, xxx, "+mda")         //设置dump的层次,以及其他选项
call $fsdbDumpon                           //开始dump波形
run xxx2 ps/ns/us.....                     //再run一段时间
power -gate_level on mda                   //saif dump设置
power xxx_scope                            //saif dump 层次
power -enable                              //开始dump saif
run xxx3 ps/ns/us.....                     //再run xxx3
power -disable                             //停止dump saif
power -report xxx.saif xxx_scale xxx_scope //生成saif 报告
run xxx4 ps/ns/us.....                     //再run xxx4
call $fsdbDumpoff                          //暂停dump波形
fsdbDumpFinish                 //如果不调用此函数,那么调用call $fsdbDumpon可以接着dump 波形
run xxx5 ps/ns/us.....         //再run xxx5
exit                           //退出仿真

把以上内容保存成xxx.tcl,vcs仿真选项中加入 -ucli -i xxx.tcl,即可控制波形的dump。

上述内容,会dump  [(xxx1), (xxx1)+xxx2+xxx3+xxx4] 时间段内的fsdb。

会生成 [(xxx1)+xxx2, (xxx1)+xxx2+xxx3] 时间段内的saif。

在(xxx1)+xxx2+xxx3+xxx4+xxx5 仿真结束

针对不同的波形文件,也可以使用ucli进行dump

cb7a58ba6b2d4c2094ee521bfdd57306.jpg

【新思验证小课堂】【Verdi】Verdi基础培训第4节---如何产生verdi kdb和import design

【新思验证小课堂】【Verdi】Verdi基础培训第5节---dump波形常用的task

<think>好的,我现在需要帮助用户分析Verdi中的FSDB错误和段错误的问题。首先,用户提供的日志显示Verdi在切换FSDB文件时遇到了Simv_lock文件被锁定的情况,然后发生了段错误,导致make失败。我要先理解这些错误可能的原因。 首先,关于Simv_lock文件被锁定的问题。Simv_lock通常用于防止多个进程同时写入同一个FSDB文件,确保数据一致性。当出现锁定时,可能是因为之前的进程没有正确释放锁,或者有其他进程正在使用该文件。用户可能在运行仿真时,Verdi尝试切换到新的FSDB文件,但旧的锁文件未被删除,导致警告。需要检查是否有残留的进程在运行,或者是否有其他实例正在使用同一个文件。 接下来是段错误。段错误通常是由于内存访问违规引起的,比如访问了未分配的内存或已经释放的内存。在仿真环境中,这可能由以下原因导致:Verdi的配置问题、内存不足、设计中的错误触发了仿真器的bug,或者文件系统问题导致FSDB写入异常。用户提到切换FSDB文件时出现这个问题,可能是在切换过程中,Verdi或仿真器存在内存管理的问题,或者FSDB文件损坏导致读写异常。 用户可能是在进行数字电路仿真,使用Verdi作为波形查看器,仿真器可能是VCS。当仿真运行时,Verdi生成FSDB文件记录波形数据。如果仿真过程中发生段错误,可能需要检查仿真器的稳定性,Verdi的版本是否兼容,或者是否有足够的系统资源(如内存)。 可能的解决步骤包括:检查并删除残留的锁文件,确保没有其他进程占用;增加内存限制;更新Verdi和仿真器到最新版本;检查FSDB文件路径和权限;使用更详细的日志来定位错误发生时的具体操作;调整Verdi的配置参数,比如关闭自动切换功能,或者调整缓存设置。 另外,用户可能需要了解如何正确配置Verdi与仿真器的交互,确保FSDB文件的生成和切换正确无误。可能需要调整环境变量或启动参数,比如设置FSDB的缓冲区大小,或者禁用某些可能导致问题的特性。 需要确保用户了解如何检查进程和锁文件,如何清理残留的锁,以及如何收集更多调试信息。此外,可能需要建议用户检查系统资源,如内存和磁盘空间,以及Verdi和仿真器的兼容性。 总结可能的解决方案步骤:清理锁文件,检查进程,增加内存,更新软件版本,调整配置参数,收集核心转储进行分析。同时,提供相关的后续问题,帮助用户进一步排查和解决。</think>该错误涉及两个关键问题: 1. **FSDB锁文件冲突**:Simv_lock文件被锁定导致文件切换失败 2. **段错误**:仿真进程崩溃(Segmentation fault) --- ### 详细分析 #### 1. Simv_lock锁定问题 - **原因**:Verdi在切换FSDB文件时检测到`dump_003.fsdb.slock`已存在 - **可能场景**: - 前一个仿真进程未正常退出导致锁文件残留 - 多个Verdi实例同时尝试写入同一文件 - 文件系统权限问题阻止锁文件释放 #### 2. 段错误(Error 139) - **根本原因**:内存访问越界导致仿真器(simv)崩溃 - **常见触发因素**: - Verdi配置参数冲突(如FSDB缓存大小) - 设计中存在异常触发的Verdi/VCS bug - 文件系统满/内存不足导致FSDB写入失败 - 不兼容的Verdi版本与仿真器组合 --- ### 解决方案 #### 紧急处理 ```bash # 1. 清理残留锁文件 rm -f *.slock *.fsdb # 2. 检查并终止残留进程 ps aux | grep simv | grep -v grep | awk '{print $2}' | xargs kill -9 # 3. 增加内存限制(临时方案) ulimit -c unlimited # 允许生成core文件 ``` #### 根治措施 ```bash # 4. 修改Verdi配置文件(添加) setenv NOVAS_FSDB_AUTO_SWITCH 1 # 禁用自动切换 setenv FSDB_MEM_LIMIT 2048 # 设置内存限制(MB) # 5. 使用更稳定的FSDB生成方式 verdi -ssf <your.fsdb> -sv top_module -full64 -f filelist.f # 6. 检查核心转储(如生成core文件) gdb simv core bt full # 查看堆栈跟踪 ``` --- ### 预防建议 1. **版本兼容性**:确保Verdi与VCS版本匹配(如Verdi 2023.09应使用对应VCS版本) 2. **资源监控**:通过`htop`实时监控内存使用,预留30%余量 3. **文件系统**:使用SSD并预留10%空闲空间,避免文件碎片 4. **渐进式调试**: ```bash # 逐步缩小问题范围 verdi -ssf test.fsdb -sv top -full64 +define+DEBUG_MODE ... ``` 5. **日志增强**: ```bash # 启用调试日志 setenv NOVAS_DEBUG_LOG 1 setenv FSDB_DEBUG_LEVEL 5 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值