首页 理论教育如何创建IO布局与芯片布局的空间?

如何创建IO布局与芯片布局的空间?

【摘要】:完成IO排布的脚本后便可以创建芯片布局空间,命令为其中core部分的表示方法有多种,可以用上文中使用的-core_width和-core_height来直接指定core的宽度和高度,也可以采用其他方式如利用率等指标来确定。“right_io2core”是用来表示IO面向core的边与core边界的距离,这部分空间通常用来走IO的连线和放置数字电路的ring,设计人员可根据需求来设定。

在开始创建新的布局平面前首先要指定IO的排布,指定一个IO摆放位置的语句为set_pad_physical_constraints-pad_name<PAD_NAME>-side<SIDE_NUM>-order<IO_ORDER>

其中参数side指定了IO所在的边,“1”为屏幕上的左边,“2”为上边,“3”为右边,“4”为底边;参数order表示IO在指定边的排布顺序,其中“1”和“3”两边从下往上数,“2”和“4”两边从左往右数。除了用顺序来表示IO的排布外,命令也提供了用绝对值表示的方法,将-order改-offset即可,“1”和“3”两边的用IO单元底边的Y轴坐标;“2”和“4”两边用IO单元左边的Y轴坐标。

另外如果网表中没有例化数字电源、地IO单元和corner单元,则需要在IO排布之前用create_cell将其添加到设计中去。由于IO相关的命令数较多,通常会将其放入一个专门的脚本文件。

完成IO排布的脚本后便可以创建芯片布局空间,命令为

其中core部分的表示方法有多种,可以用上文中使用的-core_width和-core_height来直接指定core的宽度和高度,也可以采用其他方式如利用率等指标来确定。ICC中只有在core部分有site row,即摆放标准单元的空间,而IO和模拟模块既可以放在core内部,也可以放在外面。但要注意的是core的面积不可以比标准单元加上模拟模块的面积小,有的时候模拟模块会包含IO,其大小要比真实的core部分的电路大,会导致无法创建合适大小的core,如果出现这类问题可以在Milkyway中将模拟模块的FRAM view做成只有包含core内部电路的大小,而CEL view还是原始大小,之后便可以正常地创建布局空间。“right_io2core”是用来表示IO面向core的边与core边界的距离,这部分空间通常用来走IO的连线和放置数字电路的ring,设计人员可根据需求来设定。

创建完布局空间后可以看到IO单元已经放置在了整个芯片的周围,不过通常情况下会有一些空隙,这个时候需要插入IO单元的填充单元(Filler),以保证IO单元的供电网络成型,如果IO之间的距离较大,推荐使用IO供电单元来填充,这样可以提供更好的ESD保护;另外如果有数字IO与模拟IO的交接处,还需要使用IO隔离单元,具体特殊IO使用方法需参考IO单元库的使用指南。

此外,在某些场合下需要用ICC生成芯片数字部分电路,其外形往往不是规则的形状,这种情况下就要采用initialize_rectilinear_block-poly{corner_list}来创建布局空间。由于没有外部IO单元,需要为所有的port指定位置和金属层,方法为