总结工作过程中仿真出现X态的几种情况:
1. memory未初始化
这是最常出现的一种。一般是ram或者rom、flash的模型在初始时候都是不定态的,如果没有对其进行初始化,在进行读取的时候,很容易出现X态传播。
解决办法:在initial阶段初始化为0或者1。当然如果vcs版本支持initreg和initmem选项,可以用命令初始化
2.信号未复位
这个出现在某个模块的后仿过程中。原因是模块自己定义了一个复位信号,但是没有用系统复位信号。导致上电时候,系统复位不会传导到这个模块,引起了信号出现X态。虽然这个问题不应该在后仿阶段出现(模块仿真就应该发现),但是这也让我们思考了验证的流程是不完善的,不严谨的,对于初级工程师来说,验证的思路是非常重要的。这点也更加说明了验证的重要性 !
3.时序不满足
在后仿过程中,一般至少会仿ss ff tt三个corner,在flashctrl的仿真中,ff通过,但是ss不通过,这就说明了,时序是未满足要求的。此时就需要找设计过来沟通了。这个例子说明了不同corner下的仿真是非常重要的。
4.PAD端口未赋值
系统级仿真都是chip级仿真,如果在pad端口有的信号未赋初值,很容易产生X态。这就需要对芯片的整体设计有一个认识,对芯片管脚定义、模块功能都要有一个很全面的认识,而不是只对一个模块,一个功能就ok了。