打开任何阶段的DCP,选中一个cell,按F4,都会显示其Schematic视图。在这个视图中,可以清楚地看到每个cell的pin。小到一个触发器、查找表,大到用户的RTL模块甚至整个顶层设计,都有相应的pin。这里,我们重点了解一下pin的特征,借助这些特征可以帮助我们高效地搜到到目标pin。
Pin的REF_PIN_NAME属性
类似于每个Cell都有REF_NAME,每个Pin都有REF_PIN_NAME。例如,设计描述的触发器映射为SLICE中的FF(这里为FDPE),其时钟管脚的REF_PIN_NAME是C,使能管脚的REF_PIN_NAME是CE,输入数据管脚的REF_PIN_NAME是D,复位管脚的REF_PIN_NAME是PRE,输出数据管脚的REF_PIN_NAME是Q。
可以看到,这里触发器的REF_PIN_NAME是固定不变的,例如,无论RTL代码中触发器的时钟如何命名,其REF_PIN_NAME都是C。此外,REF_PIN_NAME也是唯一的,也就是说同属于同一个cell的不同pin,其REF_PIN_NAME是不同的,据此可找到目标pin,如下图所示,这里要找到目标cell的时钟管脚。
Pin的DIRECTION属性
Pin的另一个重要属性是DIRECTION。这个不难理解,其实就是表征pin是输入管脚还是输出管脚。据此,可以只获得输入管脚或者输出管脚。如下图所示,通过DIRECTION值为IN可得到所有的输入管脚;通过DRIECTION值为OUT可得到所有的输出管脚。
Pin的IS_X属性
这里IS_X是对IS_CLOCK、IS_CLEAR、IS_ENABLE、IS_PRESET、IS_RESET和IS_SET的统称,分别表示是否为时钟管脚、异步复位管脚、同步使能管脚、异步置位管脚和同步置位管脚。这类属性其TYPE为Bool,其值非0即1。例如,对于时钟管脚,其IS_CLOCK的值为1,IS_CLEAR的值为0。利用此属性也可以过滤出目标pin。例如,借助IS_CLOCK搜索到目标时钟管脚,如下图所示。
Pin的IS_LEAF属性
这个属性非常重要。借助下面的电路图,我们解释一下什么是leaf pin。图中pin 1是cell rst_gen_i0的pin,pin 2是cell reset_bridge_clk_rx_i0的pin。pin 1和pin 2通过net相连,但两者均不是底层单元的pin。其对应的底层单元的pin是图中触发器的PRE管脚。用IS_LEAF属性可判定该pin是不是leaf pin。
get_pins中的-leaf选项
在使用get_pins时,有个选项-leaf,其目的是只获取leaf pin。结合上图,假如已获得连接pin 1和pin 2的net。通过该net获取与该net相连的输入管脚。如果添加选项-leaf,则获得最底层的leaf pin。对比添加-leaf选项和不添加-leaf选项的输出值,观察两者的差异,体会-leaf选项的含义。
如果pin是多位的,选中这个pin,在property窗口的Magnify目录下,会显示该pin的具体组成与连接关系,如下图所示。
如果需要同时获取这些pin,可使用通配符“*”,具体命令如下图所示。
Pin还有其他重要的属性,例如IS_CONNECTED,借助该属性可确定pin是否悬空。Pin的这些属性可以在其property窗口中查看。