在一个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的完整示例: