对于 FPGA/ASIC 开发的 PnR 后和/或综合后仿真的用处,我有点困惑。如果综合或 PnR 过程在设计流程中成功完成,那么相应的“后期”仿真是否有可能揭示设计中的错误?有人可以举个例子吗?
4 回答
在典型的设计流程中,合成后和/或 PnR 后仿真没有用处,目的应该是避免它们。
后合成仿真只能发现合成工具中的错误,而这些错误在已建立的 FPGA 工具中极为罕见。检查这些不应该是任何设计流程的组成部分。
尽管 PnR 工具可能会出现一些非常罕见的情况,例如技术映射错误或未能就违反设计规则发出警告,但在 PnR 后仿真中发现问题的至少 99% 的情况是由于设计错误造成的,最常见的是时钟域交叉,内存访问竞争条件很好,但已经非常罕见,其次。
因此,重点应该是遵守设计规则并采用严格的设计方法来避免问题,而不是试图在 PnR 后仿真中发现它们。
对于您的问题-如果没有负松弛并且设计规则检查正常,则任何一个后期模拟都不应显示更多内容。
PnR 后仿真的一个实际用途是当您的复杂设计偶尔会由于外部组件的时序变化或 I/O 约束错误而失败,但您对错误机制一无所知。集成逻辑分析仪和 PnR 后仿真的结合可以帮助最棘手的情况找出根本原因。
Post PnR 模拟在工业中被称为门级模拟。这有计时和非计时两种。这种模拟用于检测
- 时序路径,未由 STA 或时序收敛检查。
- HFNS(高扇出网络综合)和 CTS(时钟树综合)等电源和复位操作中的错误可能会导致某些可复位触发器的复位不规则,从而导致它们将 x 传递到路径中的下一个逻辑,从而导致 x 传播。
- DFT 逻辑中的错误在 RTL 仿真期间未检查,可能已在 PnR 期间删除。
- x 在逻辑路径上由于 STA 跳过的时钟域交叉路径的可靠性问题
PnR 后仿真不仅验证功能,还验证时序。可以将电路的时序信息以多种格式转储到仿真中,但最流行的一种是标准延迟格式 (SDF),它以IEEE 1497的形式发布。
那么我们可以捕捉到什么样的错误呢?
在 RTL 模拟中很难捕捉到一些不需要的故障。如果某些输出是由组合逻辑生成的,那么 PnR 后仿真比以往任何时候都更加重要。
综合和/或 PnR 约束中可能存在一些错误。最好仔细检查所有内容。
合成/PnR 工具可能存在错误。逻辑等效性检查 (LEC) 也可以捕获错误,但它仅针对功能执行。
在将逻辑从映射到 PAR 方面,大部分是稳定的过程。但是,当然,如果学究气,您可以将 LEC 用于 syn->map 和 map-> PAR。
Post PAR Sims 可能很有用,但如果您在实验室遇到问题,可能是因为您没有完全限制您的设计时序,并且需要使用反向注释的 SDF 进行仿真,正如上面提到的其他人。当然,如果您没有在 TB 中创建具有时序的模型和/或按照电路板设计人员提供给您的正确限制 IO,这当然对您没有帮助,对于 IO,h。
我认为最好的做法是至少对带有反向注释 SDF 的 PAR 网表运行一次回归套件。它不花费您任何费用,并提供了更多的置信度数据点。