害,拖更了这么久,上一期的innovus和icc2关于fix transition的总结还没有更新完,这个就后面再整吧,没有找到innovus合适的实例,等着出现了经典的问题,我就顺道的完结一下。
近两周开始做上了小top,4个power domain,一直都想做一下小top以及低功耗的模块,这不一下子就来了,所以这两周一直在恶补低功耗的知识点,实在是七窍不通啊,并且还是ICC2和innovus都得做一下,知识都快点的进我脑子吧,让我一下子全部都会。
好了,废话不多说,这一期分享一下我学习的innovus最新打pg的方法,不知道你们用没用过route_pg的命令,通过写psdl的形式进行打pg,相信很多innovus玩家都是用addStripe去打pg,甚至都没有听说过route_pg的命令去打,我在CSDN上也是没有搜到相关的内容,或是很少吧(措辞严谨,哈哈),所以,我感觉还是很有必要更新一下这个命令,让我们一起学习学习。
使用route_pg的命令,首先要编写psdl文件,这俩是搭配使用的,你们可以去man一下这个命令,或者去Cadence官网看看,有一些解释的。
下面是一个完整的给mem打pg的psdl文件,如下图所示:
大概就是分三步走吧,第一步设置PATTERN,第二步设置AREA,第三步开始打pg,很简单吧。
1,打patten,我以M5为例。
{ PATTERN m5_stripe_mem { TYPE STRIPE } { DIRECTION VERTICAL} { WIDTH 0.70}}
m5_stripe_mem:这个就是名字,随便起,你自己认识就行
{ TYPE STRIPE }:这个就是告诉工具打的是stripe,也就是打一个长条
{ DIRECTION VERTICAL}:这个就是告诉工具,我的M5层是竖直的线
{ WIDTH 0.70}:这个就是告诉工具,我的M5层pg的宽度是0.7um
是不是有小伙伴说没有offset和spacing等等的参数,这个在后面设置的,往下看
2.打area,我以我的block为例:
{AREA mem_area
{EXPAND {LEFT 0.6} {BOTTOM 0.6} {RIGHT 0.6} {TOP 0.6}}
{MERGE 5 }
{CELL arm*}
{CELL sa*}
}
mem_area:这个道理同上,你自己起的名字
EXPAND {LEFT 0.6} {BOTTOM 0.6} {RIGHT 0.6} {TOP 0.6}:这个就是延申的意思,上下左右分别延申0.6um长度
MERGE 5:这个就是说mem之间的间隔小于5,仍然直接打上pg
{CELL arm*} {CELL sa*}:这个就是告诉工具给那些mem打pg,我这里是arm的和syns的mem,写上cell type就行
3.打pg,以M5为例
REGION:这是固定格式哈,跟上面的PATTERN,AREA是一个意思,不要问为啥,我也不知道
{AREA mem_area}:这个就是指定你上面定义的,你自己写的名字的mem,告诉工具给这个区域打pg,而不是其他区域。
{ LAYER C5 { SNAPTO GRID }:是说M5层走线对齐track吧
{ METAL m5_vdd_mem m5_stripe_mem { NET VDD } { OFFSET 4.03 0.747 } { STEPDISTANCE 4.64 *} }:这个就是开始给mem打VDD了,要求是x轴的起始点是4.03um,y轴是0.747um,间隔的x轴是4.64um,这个我重点说一下,{ OFFSET 4.03 0.747 }第一个数代表X轴,由左往右,第二个数字代表Y轴,由下往上,这个记住了哈,很重要的。
所以把上面的写完之后,就可以直接读入了,命令是route_pg -psdl_file mem.psdl,效果图如下所示:
不知不觉写了这么多,不知道大家看明白没有,应该似懂非懂吧,没事,后面我会更新给core区域打pg,给不同的power domain区域打pg,给pos cell打pg,今天就是先入门,怕大家看累了,慢慢来,我也饿了,该去吃饭了。(因为是初学,要是有写错的地方,麻烦各位大佬们帮忙指正,我也学习学习,不胜感激!)下期见。