|
发表于 2024-9-30 17:13:29
|
显示全部楼层
判断mismatch 发生的位置 跑testbench ,simulation mismatch会像如下报告: #设置pattern的类型 set_context pattern -scan #读取扁平设计 read_flat_model <flattened design> #读取pattern数据 read_patterns <ascii/bin> #加parameter,将pattern的ID set_get_report pattern <failing pattern> -external #报告 report_scan_cells <chain name> <name number> -display hierarchical_schematic Trace back(追溯) 定位是哪个pattern 哪个register,可以使用Tessent visualizer和波形去追溯; 确定造成问题的原因: 60%的问题是由timing不满足造成,35%由CCD/NCP 和internal pins造成(内部时钟,不正确的时钟,内部pin不正确的value定义),2%由DRC(C6,T24,D1,K)造成,2%由工具不正确的setting造成;1%由初始化设计方案有关; timing 时序上的问题分下面几个方面: 1 clock skew; serial pattern仿真中存在多个失败的shift cycle就很有可能是clock skew的原因;flop的输出位X态且报告setup/hold的违例;数据变化且flop capture到新的数据这种情况都可以考虑是否为clock skew的原因; 2 Zero delay; 反标没标好,或者约束不完整,导致一些逻辑行为立刻发生,比如clock skew 就不该为0延迟;前后两级flop的时钟是不能同时toggle的; 3 parallel shift cycle(时序违例) parallel force太靠近clock pulse 导致setup的违例,parallel release 太靠近clock pulse导致hold违例;parallel release 太靠近下一个 clock pulse导致setup的违例; 4 小故障, 时钟 set/reset存在问题;具体啥问题不清楚; 5 false 和multi-cycle path; |
|