在IC设计中经常会碰到仿真出来的结果和原来设计的所要求的结果不同,这时作为验证工程师,需要做的是尽快的查出错误所在,对于经验丰富的工程师,根据错误位置以及仿真代码和电路功能,一般能快速定位到大致出错的位置,但是对于一个新手,该怎么查出错误所在呢?
这里有一个比较耗时但是很简单的方法——反向追线。例如,我验证的是一个
cpu对cache的存储操作,那么根据汇编指令,我们可以预先估计出地址线上的地址序列,然后对照仿真结果,如果某处地址不一致,从该处着手,反向追线直至找到逻辑错误的模块(功能仿真)或者时序错误的模块(动态时序验证),并且这样必定能找到错误单元,因为在错误地址之前的地址是正确的说明部分电路时序正确,可能在某个模块建模或者逻辑错误或者时序错误导致结果出错,进而影响地址总线输出。