Conformal ECO 流程介绍

        之前听说过一句话,没有修过ECO的人生是不完整的。最近就给我整得再次完整了。。。。。。

        最近赶项目,RTL freeze之后,后仿发现出了bug(还好拦下来了,不然头更大),于是做了一次function ECO,记录下流程。。。。项目还是delay了。。。。。永远记得checklist一定得过!!!!

RTL freeze就是说,从今天起,大家谁也不能再修改RTL了。RTL freeze是一个分水岭。在freeze之前,你仿真也好,看代码也好,FPGA验证也好,发现的任何bug,都可以通过修改RTL的方式进行直接更正。但是freeze之后,被freeze的RTL将会进行综合,STA,然后送给后端人员,做floor plan,电源综合,时钟综合,布局布线等等。这些后端流程都是极其耗时的,而且通常不可逆的。


        闲话扯完了,下面进入正题。

        Conformal是Cadence家的一款形式验证驱动的等效、低功耗和ECO解决方案,使用可为用户提供独立的等效性检查解决方案,支持从RTL到P&R的最终网表验证设计。要做ECO的话需要Conformal ECO XL 或 GXL license。目前主要大厂都用它做ECO。(S家的formality主要是我不知道如何自动生成ECO脚本,不过去年好像出了视频,年后抽空学习一下。。。。)

        ECO的介绍就不多提了,见:

数字后端——ECO_沧海一升的博客-CSDN博客对ECO(engineering change order)进行简单介绍https://blog.csdn.net/qq_21842097/article/details/121717450         Conformal支持Flattened ECO Flow和Hierarchical ECO Flow。这里主要说明Flattened ECO Flow,这也是官方推荐的。Flattened下,工具会将 ECO 分析重点放在从平面比较中确定的非等效关键点上,且更容易设置,所有 ECO 补丁都可以用一个命令创建。

        FLOW如下:

        1、使用 SET ECO OPTION -flat 命令(setup mode)指定运行 FEF 流:

SET FLATTEN MODEL -ECO
SET FLATTEN MODEL -ENABLE_ANALYZE_HIER_COMPARE

        它还会自动将以下选项添加到 ANALYZE HIER_COMPARE 命令

-CONstraints
-NOEXact_pin_match
-FUNCTION_Pin_mapping
-INPUT_OUTPUT_Pin_equivalence
-THRESHOLD 0 //便于工具确定所有模块边界

        2、为ANALYZE HIER_COMPARE命令增加额外指令。

        3、使用 ADD COMPARE POINTS -all 和 COMPARE 命令开始flatten设计之间的比较。 这里主要是确定非一致性的关键点。

        4、使用 COMPARE ECO HIERARCHY 命令根据模块边界(由步骤 1 确定)将非一致性点(在步骤 2 中确定)分解为其子模块。

        5、使用 ANALYZE ECO -hierarchical 命令创建所有必要的patches。

        6、分别使用 APPLY PATCH 和 OPTIMIZE PATCH 命令应用和优化patches。


        下面主要说下function ECO(pre-mask)的流程,这次我跑的就是这个,只能说不幸中的万幸吧。。。 流程如下:

         1、将旧 RTL 与旧网表进行比较。应该结果是等价的,这里需要通过添加扫描约束来禁用扫描。

        2、综合修改后的RTL。一般来说用与创建旧网表相同的综合工具、版本和脚本。 尽量减少任何更改。

        3、将新 RTL 与新网表进行比较。应该结果是等价的。

        4、将旧 RTL 与新 RTL 进行比较。结果是不等价的。这里需要注意的是,新的RTL读入为Golden design,旧的RTL读入为Revised design。

        5、比较旧网表和新网表。

        6、使用旧网表和新网表创建 ECO patch文件。在验证了第 5 步中的所有非等价点都是由功能更改引起的之后,使用 Conformal 为每个非等价模块创建一个patch文件。 在此步骤中使用的任何 ADD ECO PIN 命令也必须用于第 7 步和第 8 步。如果在创建 ECO patch 文件期间进行了任何展平,则必须对第 7 步和第 8 步执行相同的展平。

        7、应用patch并写出 ECO 网表。在分析所有 ECO 模块后使用patch文件创建 ECO 网表,然后写出尚未映射或优化的网表。

        8、优化补丁。这一步有点类似综合。

        9、ECO网表进行等价性检查。一致性检查必不可少。

        还是看脚本比较直接。ANALYZE ECO 命令会为每个非等价模块创建patch文件。 patch文件定义了一个patch模块并包含将改变设计功能的更改。 patch模块名称是附加了 _eco 的原始非等价模块名称。我这里主要是对比了两个网表,然后进行处理:

set log file eco.log -replace

set flatten model -eco
set flatten model -gated_clock
set flatten model -enable_analyze_hier_compare

read library xxx.lib -replace -liberty

read design r2.v -golden -replace
read design r1.v -revised -replace
//===================================
//等价的写法
//set x conversion e -both
//read design r1.v -golden -replace
//read design r2.v -revised -replace
//===================================

report design data
report black box

uniquify -all -nolibrary -revised
add module attribute mod* -eco_module -noflatten -both

set system mode lec
analyze hier -eco_aware
add compare point -all
compare
compare eco hierarchy
analyze eco patch.v -preserve_clock -replace -hierarchical
//analyze 有-ecopin_dofile选项来增加eco pins,这次没用到

set system mode setup
apply patch -golden -keephierarchy -auto
optimize_patch -workdir <working_directory> \
               -library <lib_file_list> \
               -sdc <sdc_filename> \
               -instancenaming “ECOinst_%d” \
               -netnaming “ECOnet_%d” \
               -sequentialnaming “ECOreg_%s” \
               -synexec “genus” \
               -verbose
report eco changes -script -file xxx.script -replace
write eco design -newfile eco.v -replace -report ECOprelogics.rpt
  • 10
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沧海一升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值