Functional ECO 方法论—— 通过RTL比较来实现最小的ECO补丁
EasylogicECO 白皮书
WP-ECO-01
Engineering Change Order (ECO) 是用于更改现有ASIC设计的增量式设计方法。一旦新的RTL代码更改了ASIC功能时,ECO任务会修改原始网表的一部分,以创建与新ASIC功能一致的修订网表。这个过程被称为Functional ECO。
近年来,由于ASIC设计的复杂性增加、项目周期缩短以及市场需求的快速变化,ECO需求在近年来变得越来越普遍。当RTL需要被更改时,重启整个设计流程总是会导致项目延迟。一个成功的ECO任务提供了一个快捷方法来迅速地实现想要的更改。在设计的后期阶段,成功的ECO可以显著地将项目的延迟从几个月缩短到仅仅几天,同时保持相同的质量和设计流程的完整性。
然而,实施一个Functional ECO是一个复杂的过程。本文讨论了精准定位功能变化的挑战,并提出了一种高效的设计方法,来创建最精确的ECO补丁。
简介
Functional ECO任务始于RTL代码变更。但是,由此产生的设计变化可能会超出RTL工程师的预期。功能性ECO流程面临两个主要挑战:
1. 评估所需的网表层级设计变更的程度并实施所有必要的修复。
2. 在设计流程的不同阶段修复电路。
第一个挑战涉及评估ECO对整体设计的影响。例如,考虑一个场景,其中对一个IP进行了一个简单的RTL更改,该IP被实例化了多次,特别是在IP的接口部分。在这种情况下,功能性ECO任务可能会变得更加无法预测。

图1:在Functional ECO任务中可能需要更正的数据类型
第一个挑战涉及评估ECO对整体设计的影响。例如,考虑一个场景,其中对一个IP进行了一个简单的RTL更改,该IP被实例化了多次,特别是在IP的接口部分。在这种情况下,功能性ECO任务可能会变得更加无法预测。
对于第二个挑战,Functional ECO所需的修订取决于设计项目的阶段。设计师可能不仅仅需要修改设计逻辑,还有各种下游设计数据。图1说明了可能需要修正的数据类型。
这份白皮书将重点关注第一个挑战:精准地确定目标的变化。
传统方法及其问题:使用G2G比较来识别功能差异
与常见的Functional ECO设计方法相关的最关键问题是,许多设计师在开始他们的Functional ECO任务时,会对原始设计网表和修正后的RTL重新综合网表进行Gate-to-Gate (G2G)比较(图2)。在这篇文章中,我们将研究与这种方法相关的问题。
基于两个门级网表的功能比较,其中新综合网表是从修订后的RTL生成的,通常被认为是一种更容易被人理解的方法,看起来更合逻辑。然而,基于G2G的ECO方法往往会带来三个重要的问题。

图2:基于G2G网表的方法论
1、这种方法经常创建错误的ECO点
由于RTL综合过程中的逻辑优化,综合网表可能会出现意外的变化。在某些情况下,RTL中存在的信号在网表中可能已经不存在了。让我们通过一个简单的例子来说明这一点。
// Original RTL module adder ( input [3:0] operand_1, input [3:0] operand_2, input [3:0] operand_3, output [4:0] result); wire [4:0] n1; assign n1 = operand_1 + operand_2; assign result = n1 + operand_3; endmodule | // Revised RTL module adder ( input [3:0] operand_1, input [3:0] operand_2, input [3:0] operand_3, output [4:0] result); wire [4:0] n1; assign n1 = operand_1 + (operand_1 + operand_2) ^ 4'b0011; assign result = n1 + operand_3; endmodule |
在原始RTL上对“assign n1”语句进行必要的ECO更改,这对在门级网表中定位n1信号提出了挑战。这是因为综合工具将信号进行了分解以减少面积。信号的缺失可以归因于以下原因:
1) RTL中的线n1是内部的,这意味着综合工具在正确组合输出函数的情况下可以灵活地利用它。根据优化的目标,综合工具可以选择保留信号n1或将其分解为最小项以构造输出函数。
2) 无论RTL中的信号n1是否被保留,它在综合后的网表中的名称都可能会被更改。这使得设计师在网表中追踪相应的信号变得具有挑战性。
上述ECO任务是根据RTL中n1的新规格来修改输出功能。因此,设计师可能需要花费大量精力追踪影响输出结果的所有信号路径,来创建最小的补丁。
2、补丁尺寸较大
当原始网表、综合网表或两者都已经从网表中优化出一些RTL中的信号时,可能导致严重的问题。门到门的等效性检查可能会因为不同的优化选择而导致判断出错误的差异,从而产生错误的ECO点。而ECO最终的结果往往是一个不必要的大型补丁,这通常容易导致时序无法收敛。
3、ECO的长周转时间
工具运行时间包括2个主要部分:
1)在原始网表和综合网表之间进行逻辑等效性检查(Formal),以识别ECO点。
2)ECO工具创建补丁与为设计流程中的后续工具准备增量约束的运行时间。
ECO的周转时间是上述部分的总和。现在,我们详细分析一下。
1)形式验证的运行时间
G2G等效性检查需要大量的执行时间。此外,用户需准备约束和参数协助Formal工具,达到诊断和消除假的非等效性错误。迭代必须持续到设计师不再检测到任何因为综合策略所导致的假错误。只有在这个阶段,设计师才能假设LEC中的所有非等效结果都与ECO有关。
然而,如果存在任何与Functional ECO没有直接关系的非等效结果,通常不容易第一时间就找到原因,导致它们将被视为所需的更改,造成不必要的补丁。
此外,在G2G比较中,等效性检查可能导致意外的中止状态,因为修改后的综合网表在算术逻辑电路中可能与原始网表有很大的不同。
2)ECO工具运行时间
子模块的ECO运行时间从几个小时到几天不等。通常情况下,当子模块的算术逻辑或电路复杂性增加时,工具运行时间会呈指数级增长,这是因为工具在功能、时序计算和资源限制之间挣扎着平衡。在很多情况下,最终结果会是ECO失败。当一切努力都白费时,用户常感到深深地挫败。
由高效功能ECO解决方案提供的好处
从前面的讨论中可以得出,现代逻辑功能的变更方法应该要有效解决以下问题:
1. G2G比较容易产生的错误ECO点
2. 不可控的超长周转时间
换句话说,逻辑功能变更方法应提供以下优点(图4):
1. 结果准确性:
准确地找出需要的变更并添加补丁,不因为错误的ECO点而添加不必要的电路
2. 易用性:
在整个设计流程中最大程度地减少设计师所需的知识和人工操作
3.快速周转:
从RTL更改开始,到芯片整个逻辑和物理实现过程最短的ECO周转时间

图4: 功能性ECO方法可交付的成果
值得庆幸的是,在过去的十年里,逻辑功能变更方法在电子市场的快速发展、对ECO解决方案的需求增加以及EDA供应商的积极响应的一起推动下取得了显著的进步。此外,专门为ECO要求量身定制的逻辑优化技术进一步推动了这一领域的进展。其中包括先进算法、自动化流程和调试功能的引入。ECO工具的用户将会从新兴技术中受益,使其ECO任务成功率大大提高。
解决方案:基于RTL的Functional ECO方法
仅基于RTL和RTL比较的先进 Functional ECO技术(图5)提供了以下五个关键好处,有助于节省工程资源、缩短项目时间,并最大程度地减少用户参与:
1. 更高的ECO点准确性
2. 增加设计自由度
3. 更小的ECO补丁尺寸
4.减少ECO的总周转时间。

图5:基于RTL的功能性ECO方法
现在,我们探讨每个好处的具体细节。
1.识别ECO目标方面有更高的准确性
R2R比较可以避免在G2G中容易发生的功能识别错误,并避免网表准备过程中,由于综合工具采用不同的综合策略而导致的不等点误判,此外,在G2G比较中,等价性检查可能会导致工具运行意外中止。因为修改后的逻辑功能可能会改变综合网表与原始网表的算术逻辑架构。相比之下,R2R在识别ECO更改点方面会是一种更高效且低错的方法。
2.更高程度的设计自由度
现代ECO技术已经发展到可以准确地知道RTL信号在门级网表中是如何表示的。在前面讨论的Verilog设计示例中,设计师可以自由改变n1在RTL中的功能,而不用担心它在门级网表中会被如何优化甚至是消失不见。
3.更小的ECO补丁大小
基于RTL设计差异的分析为ECO策略提供了更准确的行动指南。全面识别RTL代码转换为门级网表的RTL映射和优化操作,对于识别下游ECO更改点至关重要,最终将通过优化补丁逻辑来实现更小的补丁数量。
4.减少工具执行时间和ECO周转时间
R2R比较在确保可扩展性的同时提供了快速的运行时间,并且可提前在重新综合修改的RTL时就并行执行,可更有效地节省时间。显然,门级网表比较的执行时间明显长于RTL,特别是在处理大型设计时。在等效性检查中,R2R的执行时间通常比G2G快10倍或更多,尽管这可能会根据特定设计的特点而有所不同。通常,哪怕是处理复杂的模块,R2R等效性检查也能在几个小时内完成,而相同模块的G2G等效性检查可能需要耗时好几天。
EasylogicECO拥有许多专利演算法,辅助ECO可以更快速的得到结果与最小补丁数目。搭配使用R2R检测ECO points的方式,将可达到最短的周转时间。
结 论
利用Functional ECO对ASIC公司来说是提高产品竞争力和提高盈利能力的战略性要求。通过实施基于RTL的Functional ECO流程,EasylogicECO使ASIC设计师能够专注于功能性改变本身,而不需要担心网表级别的细节。这种方法不仅提高了设计生产力,而且能提高ASIC产品的稳健性和竞争力。