这期内容当中小编将会给大家带来有关如何做physical aware synthesis及需要注意的点,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
方法学上,感谢DEF 架起了前后端之间的桥梁,DEF 将 floorplan 的信息传递给综合工具,使其可以在逻辑优化时考虑真实的『物理信息』,并根据DEF 的约束做placement 及global route , 依据global route的结果估算net delay,与此同时也做congestion 优化,完成所谓的 physical aware synthesis。
工具端,C跟S都跳脱不出方法学,只是实现方式上有所差别而已,S家的physical synthesis 除了要设physical 相关的变量之外,大概还需要额外三个东西(此处完全凭不靠谱的记忆,如有谬误请指正):1) dc_shell -topo; 2) create MilkWay DB; 3) compile_ultra -spg。本文将以C 家的Genus 为例来陈诉如何做physical aware synthesis。讲工具的套路都是从输入跟输出说起,然后再一一展开,下图是从Genus physical RAK上抠的图(RAK是一系列简单的lib,C家每个工具都有多个RAK, 在C家网站上可以下载到,强烈建议下载学习)。
Genus physical 的输入除了 lib/rtl/sdc 之外,还必须要有tech lef/ std cell lef/ macro cell lef; DEF; QRC tech file。
LEF: tech lef/std cell lef/ RAM lef 由foundry 提供,sub-block lef 由后端提供。
用命令:set_attribute lef_library $lef_files 读入,必须将tech lef 放在lef file list的首位;必须要读全用到的所有cell 的lef,否则在log 中会看到警告:『由于某个cell 的物理信息不可用,所以该cell 被设成了不可用。』
Genus 从LEF 中读入如下信息:
CAPACITANCE CPERSQ
EDGECAPACITANCE
RESISTANCE RPERSQ
SITE
WIDTH
Coupling capacitance
Capacitanceper unit of area
Fringing capacitance
QRC: QRC由foundry 提供,是个加密文件。
用命令:set_attribute qrc_table_file $qrc_files 读入.
Genus 从QRC 中读入如下信息:
PROCESS_VARIATION
BASIC_CAP_TABLE
width
Cc
Carea
Cfrg
DEF: floorplan 信息,由后端提供,后端大佬们说这是P&R 的灵魂所在,是基石是一切成功的基础。
在Innovus 用Defout -floorplan -NoStdCell写出一个包含以下部分的DEF,此处有注释。
在Genus 中用命令read_def 读入DEF file. Genus在读DEF 时会check DEF 的Quality 并会报出相关的warning, 读完DEF 后会生成一个如下的summary 报告,请修正需要修正的Error 跟Warning。
读完DEF 后用命令 check_floorplan 进一步check DEF 的quality, 并及时修正Error 跟 Warning。
在输入干净了之后就可以命令工具开始做带物理信息的逻辑优化了,Genus 采用的是early physical,即从最开始就带着physical 信息做优化。Genus physical整个优化过程由syn_gen -physical, syn_map -physical, syn_opt -physical/ spatial 三步构成。建议在做完每一步优化后就写一个db 出来,在debug 的时候可以根据需求读入不同阶段的db, 比如debug 前后端module placement 的 correlation, 可以读入syn_gen 后的DB 起GUI highlight module place 跟Innovus 的module place 对比。
Genus physical 有两种flow, 两个flow 的区别是:
syn_opt 所用option 不同,一种是:syn_opt -physical. 另一种是:syn_opt -saptial。
syn_opt -physical 会调用Innovus 来做placement 跟global route,结果是legalize 的,后端如果吃入Genus 写出的netlist + DEF 则只需要run place_opt_design -incr 即可。
syn_opt -spatial 用Genus 内嵌的placement 引擎做placement 跟 global route,结果不是legalize 的,后端需要run full place_opt_design.
两个flow 的相关变量有差别,用户可以根据自己的设计、工艺跟团队构成选择相应flow。
综合完成后,需要check 综合的quality,对于physical aware synthesis 除了PPA 还需要关注 overflow,此处说两点:
用report_timing -physical -gui 可以在layout 中highlight 出完整的timing path,是debug timing最基本的一招而且十分有效,可以看数据流、看走线,看bufferring.
report congestion可以report 出overflow,打开congestion map 去看congestion 是由什么引起的,然后对症下药。如:跟macro 相关的congestion 需去找后端确认floorplan 是否需要调整;跟结构相关的congestion 是否在综合时需要对这些结构设置map_to_mux, 以使其保持mux 结构而非替换成大量的OAI/ AOI; 如是cell堆积引起的congestion,找AE 确认是否有变量让工具可以将congestion 严重区域的cell 推散。
上述就是小编为大家分享的如何做physical aware synthesis及需要注意的点了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。