为什么手工功能ECO常常会按下葫芦浮起瓢

文摘   2024-07-07 23:27   上海  

当我们在做手工功能ECO时,一般是限制在模块边界的范围内,这样与RTL的修改最为接近,也容易理解和操作。

上图是普通LEC的基本原理图,对参考设计和实现设计中的keypoints(dff、primary output、blackbox的输入等)进行映射,把整个设计拆分成若干个逻辑锥。每个逻辑锥由N个输入和一个输出,中间是纯组合逻辑构成的逻辑电路。

现在同时对参考设计和实现设计施加激励,每一组输入激励都会有确定的输出。如果参考设计与实现设计逻辑等价,就会得到同样的输出。只要对输入的可能性遍历一遍,就能判断这两个逻辑锥是否等价。例如,N个输入,有2的N次方种可能,那就施加2的N方种激励,一旦发现某组激励的输出不同,就可以断定参考设计与实现设计逻辑不等价,剩余激励就不用跑了。

当我们在做功能ECO时,改RTL,常常是以module为边界,即使bug1、bug2、bug3是同一个逻辑锥。那么我们改网表时,就需要对每个模块分别做修改。遇到跨模块的,就可能需要增加模块的pin来穿信号。

分别对每个模块进行eco之后,再进行top层的eco,解决一些互联的问题。

但我们手工修改ECO时,常常修改好了一个bug,却引起新的bug,是怎么一回事呢?

如上图,当BUG的fanout endpoint不止一个时,就可能会顾此失彼,fix成功了一个点,反而多出另外几十个FAIL。

遇到这种情况要怎么办呢?遵循一个原则“不改共用的逻辑”。但如果逻辑都是共用的,就只能把共用的逻辑复制一份,让原逻辑不动,复制之后再改,如下图。

这种一根net有多个fanout endpoints的情况,可能手工ECO不太容易发现,需要利用工具trace一下所有fanout endpoint,防止误动到其它原本PASS的逻辑。

关于NanDigits Design Automation

Nandigits Design Automation于2007年成立,公司总部位于美国硅谷圣何塞(San Jose)。2016年10月在中国大陆成立销售和技术支持部门。我们是完整的芯片网表解决方案提供商,主要产品有网表功能ECO工具GOF ECO、逻辑等价性检查工具GOF LEC,网表调试工具GOF Debug、汽车电子功能安全验证的GOF Formal。到目前,我们已经帮助全球数十家芯片设计公司Tapeout超过100个项目。

欢迎评估试用

中国大陆

技术支持:support@nandigits.cn

美国总部

技术支持:support@nandigits.com

新官方网站

https://nandigits.co
(原.com继续使用,.cn域名仅保留部分技术支持文档,会自动跳转到.co)

联系评估和试用

https://nandigits.cn/license/getlic.php


我们建了一个微信讨论群
扫码备注“加ECO群,公司+职位
欢迎关注NanDigits
完整的芯片网表解决方案提供商
☟☟点击“阅读原文”申请评估试用☟☟

NanDigits
专注芯片功能ECO、逻辑等价性检查、网表调试、形式验证等技术的研究,及其设计自动化的实现。