大型SOC项目的综合非常耗时间,常常花费好几天。当需要做功能ECO时,代码的改动限定在某些子模块里,设计人员并不想重跑一次完整的综合,这种方法缩短了一轮ECO的时间,保证了项目进度。
然而,设计时这些子模块经过了物理综合、DFT、后端工具等各种优化。模块例化好几次时,在这些优化后,每一个实例都会出现很多不同的边界优化。下图中,SUB_MOD_A有后端优化,如端口反相。
因此,自动ECO工具必须能够识别和处理这些各种各种的后端优化,处理好每一个模块的特有的复杂情况,并精确修理。
面对这种挑战,GOF中读入了prelayout网表(综合+DFT)来更好地处理边界优化。这其实是可以实现的,我们知道prelayout网表,在做ECO之前,应该与综合网表等价。
在ECO时,为了提取出子模块的边界优化,我们用prelayout网表与老APR网表来做对比。因为ECO作用于各个子模块,相应的边界优化信息又被反标到网表上,这保证了ECO的精度和准确性,又能保证顶层设计的逻辑等价PASS。
read_design命令的-ori_syn参数用来加载prelayout网表。下面一段脚本,先用SUB_MOD_A作参考fix SUB_MOD_A_0,再接着修理SUB_MOD_A_1。最后把顶层设置到SOC_TOP,写出ECO网表。
read_design('-ref', "new_sub_mode_a.gv"); # New synthesized sub-module-A read_design('-imp', "post_layout.gv"); # Full post layout netlist read_design('-ori_syn', "pre_layout.gv"); # Full prelayout, equal to post_layout.gv # Apply ECO to the first instance set_top_ref("SUB_MOD_A"); # Must set REF scope set_top("SUB_MOD_A_0"); # Uniquified name for the first instance fix_design; # Apply ECO to the second instance set_top_ref("SUB_MOD_A"); # Must set REF scope set_top("SUB_MOD_A_1"); # Uniquified name for the second instance fix_design; set_top("SOC_TOP"); report_eco(); write_verilog("post_layout.eco.gv"); # Full post layout netlist after ECO
可以处理完整网表的ECO,但不需要对整个设计重新综合,这就会格外地节省时间。由于GOF提取出了边界信息,ECO的结果就会有更高的准确程度。
审核编辑:刘清
-
SoC设计
+关注
关注
1文章
149浏览量
18857 -
DFT
+关注
关注
2文章
231浏览量
22898
原文标题:大型SOC设计中的功能ECO加速的解决方案
文章出处:【微信号:ExASIC,微信公众号:ExASIC】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
一种面向LTE基站的SOC平台软件解决方案

一种基于FPGA的图神经网络加速器解决方案
一种高效的UPS电源解决方案
ECO技术在SoC芯片设计中的应用

评论