Hierarchical Flow和Flat Flow
和Hierarchical Flow对应的是Flat Flow,Flat Flow就是整块芯片一体化成型;Hierarchical Flow就是将大芯片合理化拆分,拆封成许多个小的block,将每个block都sign off后拼接到一起成为为一个full chip;将多个full chip拼接到一起就成为3D-IC了。
Hierarchical Flow的优势:
1、将soc上不同的子系统愤懑别类的分别做物理实现,减少了后端实现的复杂性;
2、不同子系统和子模块的前后端负责人可以高效的一对一协作,大大提高效率;
3、相当于将大象变成一块块的石头,对synthesis 和PnR tool更友好,对run time更友好;
4、如果design太大,修timing时STA signoff工具run time非常长,内存占用也极大,很可能跑不出来,即使能跑出来,迭代效率也太低了;
5、对于有特殊下电需求的模块,可以大度切出来编写upf;
6、对于有特殊绕线问题的模块可以单独切出来特殊处理(放在一个大chip中可能too很难顾及到)。
图1 基于C工具的hier flow流程
Hierarchical Flow的接口时序
P&R实现时,需要考虑IO接口的timing(预留timing buget),防止因接口相关的逻辑没有进行充分的优化而导致的timing violations。
图2 IO path示意图
这个timing buget怎么留,我个人理解有三种方法:
1、尽量IO 的约束(input delay 和output delay)设置的大一点,尽可能严苛;因为在子模块级别IO path只优化setup,不修hold;所以尽可能留足setup余量就可以;
2、如果要稍微精准,可以算一下IO前后各有多少级logic inst,然后去timing table查一下每种inst的delay大概是多少,然后把接口前后的delay算一下大概的值;就可以估算一下大概要设多少IO约束;
3、IO前后的两个模块先跑出来看看IO两侧的delay分别是多少,然后调整IO约束;
Physical Hierarchical Flow和Logical Hierarchical Flow
所谓Physical Hierarchical Flow就是后端基于power domain、I/O location、Macro placement等因素决策partition划分。
所谓Logical Hierarchical Flow就是前端基于rtl module等因素决策partition划分。
实际中我看到的应该是二者的结合。
图3 partition示意图