序
本文接上次芯片综合,讲述下综合之后的步骤LEC(Logic Equivalence Check)即逻辑一致性检查。顺带提及ECO(Engineering Change Order)工程修改。
ECO简介
先解释下为什么介绍ECO,在整个IC设计flow里,正常情况下,是没有ECO步骤的。
有一种情况是在布局布线(Place&Route)完成后,或者在芯片流片之后,发现设计中有重大bug或者有不得不添加的功能时,因为布线已经定型,此时修改RTL代码重新综合会导致后端的所有流程要重新走一遍,耗时耗力,得不偿失。通常情况下会采用修改网表(post-PR网表)的方式进行work around,这里的修改局部网表的方式在工程上叫做ECO。在修改了网表之后确保其和新的RTL具有逻辑一致性,使用的工具就是LEC。
有两点需要提一下,其一在正常IC设计flow里综合之后也需要进行一次LEC检查。其二,ECO若是在流片之后发生,通常fab留给客户修改的metal层是单层,即只能在有限层修改,否则多层修改难度和资金耗费都较大。
LEC操作过程
使用数学的方法进行完备性比较,如果所有情况都相等,则表示具有等价性。
比较的方式是key point比较法,将模块的primary input, primary output, DFF, D latch, black box和tie-Z, tie-E等进行比较,这些比较的点称为key points。当所有key point pair所得结果都一致,lec通过。
完成一次LEC check需要准备RTL filelist和netlist(网表文件),工具在比较完所有key points之后会生成一个是否通过(PASS/FAIL)的log文件。
LEC工具
Cadence: Conformal XL
Synopsys: Formality
如何纠错
假如出现LEC检查FAIL的情况,如何应对呢?
以Cadence的Conformal XL为例,其提供了一个debug GUI(diagnose manager),供用户查看在key point比较时不一致(non-equivalent)的地方。通过将范围缩小,去网表中找到对应的driver或者load进行修改连线的操作,保证LEC通过。
原文链接:https://zhuanlan.zhihu.com/p/428650287