热度 2| |
在netlist阶段,如果发现design有地方错了,或者说需要新增功能,那就需要做ECO,如果说logic比较复杂的话,ECO就会很难了,如下是用LEC工具辅助实现ECO的方式。
1. read design, golden为要修改的netlist, revised为修改RTL之后re-synthesis的netlist。
2. 先比一遍Hierarchy LEC,得到boundary contraint:
write hier dofile hier.do -INPUT_OUTPUT_Pin_equivalence -constraint -noexact_pin_match -extract_clock
-ignore_mismatch_ports -replace -level 1 -module adrmap_dis adrmap_dis
dofile hier.do
因为post netlist中有可能submodule boundary会被打破,有时需要手动添加constraints:
set system mode lec
delete mapped points * -Revised
add mapped points reg_bank_is_1bit * -invert
add compare point -all
compare
3. (1) get patch file: analyze eco PATCH/*.v -replace -preserve_clock
(2) apply patch file: set system mode setup
set root module * -both
read design PATCH/*.v -append
apply patch * * -gold -keephierarchy
go
4. optimize patch:
set system mode setup
set root module * -both
optimize patch -workdir * -library * -rcexec * -sdc *(resynthesis sdc file)
- AVOID & -USE这两个option是用来control ECO使用哪些or禁用哪些cell。
5. 得到eco file:
write eco design -newfile %s_eco.v -replace -report ECO.rpt
6. 执行script: % lec -eco -do *.do -nogui -xl
^_^ 得到想要的eco file~
另外,如果是post lec eco,新ECO出来的DFF LEC工具会自动随意加一个clock到CK pin,需要人工手动check clock tree balance,然后手动做一些修改,来尽量保证对原时序不要有影响。