在移知low power 交流群里,@张智 同学问了一个关于1801 macro的问题:在一个analog macro端口上,有些pin是always on的,有些是shut down的,如何描述这些pin的power属性?这是一个常见问题,驴就此机会大致描述一下常见的做法。对于这个问题,UPF2.0跟UPF2.1有不同的处理方式。
UPF2.0, IEEE1801-2009,因为modeling的能力比较弱,有以下两种方式来处理:
**方式一:**需要Library的支持:
- 需要在library里有电源跟地的定义
pg\_pin(VDDA) {
* voltage\_name : VDDA;*
* pg\_type :* primary\_power;
}
pg\_pin(VSSA) {
voltage\_name : VSSA;
pg\_type :\_ primary\_ground;
}
pg\_pin(VDDB) {
* voltage\_name : VDDB;*
* pg\_type :* primary\_power;
}
- 需要将signal pin跟power pin关联起来
pin(IA) {
* related\_power\_pin : "VDDA";*
* related\_ground\_pin : "VSSA";*
* direction : input; *
}
pin(OB) {
related\_power\_pin : "VDDB";
related\_ground\_pin : "VSSB";
direction : output
power\_down\_function: “\!VDDB || VSSB”;
};
- 在UPF文件中,需要将Hard\_IP的PG pin连起来
connect\_supply\_net VDD1 –ports {Hard\_IP/VDDA}
connect\_supply\_net VDD2 –ports {Hard\_IP/VDDB}
connect\_supply\_net VSS –ports {Hard\_IP/VSSA}
connect\_supply\_net VSS –ports {Hard\_IP/VSSB}
方式二:如果library中没有电源跟地的定义:
- 用UPF命令set\_port\_attributes来指定Hard\_IP输入的receiver supply跟输出的driver supply。
set\_port\_attributes -ports {Macro/IA} –receiver\_supply\_set SS\_VDDA\_VSSA
set\_port\_attributes –ports {Macro/OB} –driver\_supply\_set SS\_VDDB\_VSSB
UPF2.1, IEEE1801-2013吸收了CPF hard macro model的精华,可以通过hard macro的power model来描述hard macro的power属性。
- 由两组命令组合完成:
begin\_power\_model\_ upf\_model -for cellA
create\_power\_domainPD1-elements {.} -supply {ssh1} -supply {ssh2}
\# other commands ...
end\_power\_model
apply\_power\_model\_ power\_model\_name
[-elements instance\_list]
[-supply\_map {{lower\_scope\_handle upper\_scope\_supply\_set}*}]
如果library里没有电源跟地的定义,建议使用UPF2.1的power\_model来定义,更灵活且可以描述更复杂的power关系。一个power\_model的完整示例:
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/FRVGmYx4VvWuxIWBRZIRNQ
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。