如何定位Validation的错误

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何定位Validation的错误
⽂/王亮(就职经历:IC业界黄埔军校-》IC业内知名最养⽼单位-》⼤按摩店)写于2015年6⽉15⽇
我们做Designer的,经常要support validation。

Validation验证报告⼀出来如果behavior和预期⼀致,当然皆⼤欢喜,但是如果不同,那就苦了码农了。

结合本⼈仅有的⼀点Validation经验来说说如何定位Validation问题。

⾸先如果Validation发⽣了和预期不同的现象,那么有三种可能:
你的代码真有问题
Validation操作出了问题
Validation和RTL都没问题,发⽣mismatch的点没看清
其中1和3都属于你Designer的⼯作,⼀个最重要的去定位的⽅式就是Simulation,⽼⽼实实按照Validation的setting,努⼒再现,通常这是最好的⽅法。

⼀定要注意按照validation的设置去仿真,setting寄存器、尤其是Test相关寄存器⼀定要和Validation⼀致。

有时候使⽤Verdi的抓取信号数据的功能很有⽤,可以参考:如何抓取仿真波形中的信号数据
如何抓取仿真波形中的信号数据。

对于2,可以考虑是否Validation的激励有问题:
--寄存器设置是否合理?
--激励的anolog波形format是否对?
--是否有板上电路影响?
都说完了,最后说个Customer跑出来和我们预期的⾏为不⼀致的问题。

明明很正常的波形,结果Cusomer跑出来的⼀个计算结果和预想的相去甚远,明明只是个datapath,⼜有饱和处理,代码也⽤了好多代,不可能有bug,究竟是怎么回事呢?结果居然是Custermer在事件当中改变了⼀个寄存器的值,结果使得timing出现了violation,那么就不奇怪出现计算离谱的结果了。

所以后续chip,我们直接把这个寄存器事件⼀开始就寄存,这样事件中就不会变了,不会引起violation了。

相关文档
最新文档