当我们在做手工功能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。
遇到这种情况要怎么办呢?遵循一个原则“不改共用的逻辑”。但如果逻辑都是共用的,就只能把共用的逻辑复制一份,让原逻辑不动,复制之后再改,如下图。
关于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.cn/license/getlic.php