在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3897|回复: 7

[讨论] vcs+verdi仿真中有什么办法可以从特定的时间点开始

[复制链接]
发表于 2020-7-23 21:56:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
仿真一个case需要很长时间,而在比较靠后的地方才出现错误,修改rtl后有什么方法可以直接从错误点开始仿真,验证问题是否得到解决?
发表于 2020-7-24 08:17:18 | 显示全部楼层
这个问题我也想知道,有解决办法的话大家分享一下啊
目前我知道的就是vcs 的save和restore,如果是仿真cpu的bin/hex文件,用这个还能替换一下bin。RTL只能简单的force一下了。修改RTL以后重新从特定的地方开始目前还没有听说,我只能想办法快速逼近这个点
发表于 2020-7-24 09:38:36 | 显示全部楼层
简单的方法就是,rtl,tb 分离编译。在第一次跑出错误的模块提取周边输入的信号,直接提取自动变为新的激励直接模块仿真。加速。傻人傻方法。
发表于 2020-7-25 14:54:55 来自手机 | 显示全部楼层


A1985 发表于 2020-7-24 09:38
简单的方法就是,rtl,tb 分离编译。在第一次跑出错误的模块提取周边输入的信号,直接提取自动变为新的激励 ...


方法不可取,你这只保证了当前的激励正确,但是内部状态机,寄存器的值并没有记录下来。状态要跳转到某个状态可能确实需要很长时间。可行的办法是dut和tb分开编译,使用pli提取出dut 即将要出错的时间点所有存储部件的值保存为文件,再修改tb并编译,将刚才保存的文件内容恢复到dut内部所有部件,再仿真。
不过这样做理论上可行。如果单独个人做出来这个功能了,绝对可以申请含金量很足的发明专利了,确实很实用这个功能。
 楼主| 发表于 2020-7-25 23:04:27 | 显示全部楼层


saipolo 发表于 2020-7-25 14:54
方法不可取,你这只保证了当前的激励正确,但是内部状态机,寄存器的值并没有记录下来。状态要跳转到某个 ...


业界就没有这方面的解决方法吗,还是像有人说的把case做小,方便错误重现?
发表于 2020-8-5 00:04:38 | 显示全部楼层


saipolo 发表于 2020-7-25 14:54
方法不可取,你这只保证了当前的激励正确,但是内部状态机,寄存器的值并没有记录下来。状态要跳转到某个 ...


即使将原RTL在出错时刻 T -0 的状态都保留下来,能保证可以全部应用到新RTL么?如果新RTL有bug导致在 T 之前有新的问题,贴主期望的方法岂不是会遗漏bug?
发表于 2020-8-6 15:21:55 来自手机 | 显示全部楼层


nativeda 发表于 2020-8-5 00:04
即使将原RTL在出错时刻 T -0 的状态都保留下来,能保证可以全部应用到新RTL么?如果新RTL有bug导致在 T  ...


修改rtl后肯定不行了,因为vcs重新编译新的rtl经过elaborate后建立的内部数据结构已经变化,之前在t-0时刻保存的信号状态已经和新的数据结构对应不上了。
保留rtl不变,只修改tb,还是可以想办法搞一搞。
发表于 2021-3-18 14:51:36 | 显示全部楼层
please share vcs 2020 thank you
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-14 18:42 , Processed in 0.020858 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表