功能 ECO 后扫描链报错?用 GOF 原理图定位 DFT DRC 根因并修复
专栏:NanDigits Sept. 22, 2026, 12:07 p.m. 10 阅读
用 GOF 用户手册中的 DFT DRC 示例,说明如何从报错实例进入原理图,找到改动点,再在同一原理图中完成 ECO。

一次功能 ECO 后,DFT 设计规则检查(DRC)在某个触发器附近报出 ERROR_MULTI_PATHS。这个错误码表示:按当前测试模式的配置,扫描链出现多条路径。但它没有直接告诉我们哪一处连接发生了变化,也没有说明怎样修复才能同时保留功能 ECO 和扫描移位路径。

下面用 GOF 用户手册中的 DFT DRC 示例,说明如何从报错实例进入原理图,找到改动点,再在同一原理图中完成 ECO。

从报错实例进入原理图

先确认打开的是运行 DRC 时所用的网表版本,并加载相应的标准单元库。从报告中复制报错触发器的完整层次实例名,在 GofViewer 中按 Ctrl+g,将该实例加载到 GofTrace。然后沿输入、输出引脚展开驱动与负载,逐步查看相关连接。这样可以从报错位置出发观察局部电路,而不必一开始绘制整张网表。

3a27db4bf458548583ac9ed24bd70650.png
图 1:GOF Debug 的增量式原理图界面示例。

读图时还要核对 DRC 使用的测试模式设置,包括扫描使能、时钟和复位。若约束没有正确描述预期的测试状态,应先修正检查设置,再判断是否需要修改网表。

为什么插入一个 NAND 会影响扫描移位

手册示例中,FLOP_A 带有扫描输入和扫描使能引脚;FLOP_B 没有独立的扫描输入,在现有结构中通过 D 引脚接收来自 FLOP_A/Q 的移位数据。原先两级触发器之间有直接连接。

一次功能 ECO 在 FLOP_A/QFLOP_B/D 之间插入 NAND。NAND 实现了预期的功能逻辑,但它的另一输入也进入了原来用于扫描移位的路径。GOF 的 DFT DRC 在这个示例中报出 ERROR_MULTI_PATHS

beaba7ce4f93a39d03580e6142465dc5.png
图 2:手册中的 DFT 示例。NAND 插入后,原先的直连路径不再存在。

FLOP_B/D 反向追踪驱动,可以看到 NAND 位于两级触发器之间。再查看 NAND 的两个输入以及扫描控制连接:扫描使能控制 FLOP_A,但新插入的 NAND 没有受扫描使能控制的旁路。移位时,FLOP_B/D 接收到的是 NAND 输出,而不是直接来自 FLOP_A/Q 的数据。这样就把 DRC 的报错位置和真正需要处理的连接变化对应起来了。

在原理图中修复,同时保留两种工作模式

手册给出的一种修复方式是在 FLOP_B/D 前插入 MUX:IN0 接 NAND 输出,IN1FLOP_A/Q,选择端接扫描移位控制。SCAN_SHIFT=0 时选择 NAND 的功能结果;SCAN_SHIFT=1 时选择来自前一级触发器的直接路径。

4f4785a0b56e17adc067ebfa69b7df76.png
图 3:手册中的 MUX 修复方案。功能路径和扫描移位路径分别由两个 MUX 输入承载。

另一种方案是把 FLOP_B 换成合适的扫描触发器:D 接 NAND 输出,SI 接 FLOP_A/Q,SE 接扫描移位控制。具体选用哪种方案,取决于设计的 DFT 结构和实现约束。

GOF 支持在 GUI ECO 或脚本模式下实现这两种修改。在原理图中启用 ECO 模式后,可以放置所需的库单元、连接引脚,并立即在同一视图中检查修改后的连接。下图是一个独立的 GUI 操作示例,展示插入门和连接引脚;图 3 才是本 DFT 案例的 MUX 修复电路。

12a204892cbbeff0a9eec5de25606fa4.png
图 4:GOF GUI ECO 界面操作示例。图中插入的是 NAND,并非图 3 的 MUX 修复。

修复后怎样验证

保存修改后的网表,或导出并应用 ECO 脚本,然后对实际输出的网表重新运行 DFT DRC 和项目中的扫描测试检查。功能等价检查应使用包含这次预期功能变化的参考设计,并采用功能模式约束、关闭扫描移位。最后继续完成项目要求的时序、物理实现和签核检查。

原理图帮助我们看清“报错触发器—变化连接—修复位置”之间的关系;最终是否满足功能和测试要求,仍以这些验证结果为准。

感谢阅读,更多文章点击这里:【专栏:NanDigits】
最新20篇