背景介绍
在实际芯片研发项目中,并不是一帆风顺、一个button直接出gds的。总是会出现各种各样的bug,各种各样的奇葩需求,经过九九八十一难才能最终流片。即使流片之后,也有可能撤回重新修改。
在RTL “Freeze”之后还是不可避免的要改好多次RTL,不改不行的那种。那么传统方法就是手改上一轮的APR网表,改完跑LEC和仿真来确认。由于网表的复杂性,在tapeout dealline的压力下,不是所有的bug和新需求都能改出来。最终要么delay,要么放弃这些bug和新需求。成本和损失极高。
在有了自动功能ECO EDA工具之后,情况就完全不一样了。在EDA工具的帮助下,芯片研发后期的bug和新需求的ECO可以说是傻瓜式,很可能从一个月缩短为一周,或者从一周缩短为一天,从一天缩短到10分钟。
并且自动功能ECO EDA工具还有一个优势,就是不用管修改了具体什么功能,都是一个fix_design解决问题。
GOF ECO介绍
GOF ECO是一款芯片网表功能ECO的软件。在项目中后期或流片之后,发现逻辑功能有BUG或者设计需求有变更时,不需要重走“综合 -> DFT -> APR”的完整流程,利用GOF ECO即可自动分析新旧两个版本的差异,并对APR网表进行局部修改。GOF ECO不仅大大缩短了芯片ECO的Turn-around时间,还大大提升了芯片复杂逻辑ECO的成功率。
如上图所示,当我们设计(RTL)上有改动,并充分仿真验证确认功能正确后,就可以开始网表ECO工作了。大致分为以下几个步骤:
首先,我们需要收集老设计的文件,并确认文件的完整性和准确性。
其次,对设计重新做综合,得到重新综合的网表(这一步可选)。
再次,用GOF LEC分析新设计与老设计的差异,确认这些差异是否合理。
然后,用GOF ECO做网表的ECO,并调整ECO方案和约束来获得最佳结果。
最后,在后端工具里实现ECO Place和ECO Route,完成逻辑功能ECO。
PreMask ECO参考Flow
# filename: gofeco.pl
# run: gof -run gofeco.pl
use strict;
set_log_file("gofeco_premask.log");
# read libraries
read_library("stdcell.lib");
read_library("sram.lib");
read_library("analog.lib");
# read ref. netlist
read_design("-ref", "top_syn.v");
# read imp. netlist
read_design("-imp", "top_pr.v");
# set top module
set_top("top_module_name");
# bypass test mode if exists
set_ignore_output("scan_out*");
set_pin_constant("scan_enable", 0);
set_pin_constant("scan_mode", 0);
# eco
fix_design();
# report and write result
report_eco();
write_verilog("top_pr_eco.v");
基于AI大模型的技术支持正式上线,
官网(https://nandigits.co/askbot.php),邮箱注册后即可体验和使用。支持中、英、韩、日等多种语言进行问答。