CPF文件可以有两种组织方式:Flat CPF file or Hierarchical CPF file。

由于在大型的SoC设计中,一般都采用Hierarchical的形式,所以本文主要按这个方式来讲。

Hierarchical CPF file:一般定义多个CPF file,通过include来组织起来,

可以分为Top_file:定义一个CPF_MODE变量来选择各个子CPF file,从而适用在FE-BE的flow中。

xxx_domain.cpf:定义各个power domain,如pad,analog,SOC,CPU等。

xxx_mode.cpf:定义各种用到的nominal_condition + mode,来定义各个mode。

xxx_power.cpf:定义power and ground nets

xxx_rule.cpf:定义level_shifter,isolate_cells,state_retention_cells,power_switch_cells等,可以再细分各个block的rule。

xxx_macro.cpf:定义一些macro来建模,如analog, CPU,MEM等。

CPF的顶层一般规定:

set_cpf_version 2.0

set_hierarchy_separator /(default .)

set_register_naming_style  "_reg%s"   (netlist与RTL的FF或latches对应,a-->a_reg)

set_array_naming_style "_%d"   (netlist与RTL的FF或latches对应,[3:2]b--->b_reg_2, b_reg_3)

set_power_unit [mw] (default mw)

set_time_unit ns (default ns)

set_design xxx

end_design

set_macro_model   xxx

end_macro_model  xxx

set_power_target -leakage xx -dynamic xxx

Library-related definitions:一般都用define_xxx commands

Design_related definitions:一般都用create_xxx commands

Implementation-related definitions:一般采用updated_xxx commands

hierarchy的设计中,top和sys的cpf是分别写的,在top上通过set_instance来将sys上的power domain映射到top上。

set_instance  proj_top/u_sys_1\

-domain_mapping { {domain_in_sys1 domain_in_top1} {domain_in_sys2 domain_in_top2} {domain_in_sys3 domain_in_top3}}

include ./u_sys_1.cpf

create_power_nets -nets net_name -voltage 1.5 -internal/-external_shutoff_condition{}

-internal表示该power net是内部经过power switch的secondary power

-external_shutoff_condition表示该net是外部power switch的secondary power

都不加表示该net是内部power switch之前的primary power

create_ground_nets -nets VSS

create_power_domain -name PD_name1  -default/-shutoff_condition/external_controlled_shutoff/base_domains

-default表示没有定义到的其他的port/pin都属于该domain

-shutoff_condition表示power switch动作的条件

-external_controlled_shutoff表示该power domain是由外部的power switch控制的

-base_domains表示在该module为该domain中提供primary power的domain

-boundary_ports表示该domain中包含的一些pin

update_power_domain -name PD_name  -primary_power_net VDD_name  -primary_groud_net VSS_name

-name中的PD_name必须与create语句中的name一致

-primary_power_net表示该domain中的输入power,经过top的power switch之后的power

该net的名字必须与create_power_net中的名字相同

-primary_ground_net表示该domain中的gnd

-equivalent_power_nets {}如果该domain中在physical实现中有多个区域,power不同时,指定。

像很多phy中的power和controller和IO的power就是这种情况。

create_isolation_rule  -name iso_name  -pins "$iso_low_list" -isolation_condition ""  -isolation_output low/high

其中的变量$iso_low_list可以事先定义。

set iso_low_list/iso_high_list   "...."(使用tcl命令,为了在create iso时方便)

针对两个交互domain的约束:

create_isolation_rule  -name iso_name  -from PD_domain1  -to {PD_domain2 }  -exclude/-pins "" -isolation_condition ""  -isolation_output low/high

-from指定起始的power domain

-to指定去的domain,可以是多个

-exclude除去之后的pin,其余都是clamp到low/high

-pin指定clamp的pin

-isolation_condition指定进行iso的条件

-isolation_output指定输出的clamp的值

create_nominal_condition -name vdd_name -voltage

create_power_mode -name PD_mode_name -domain_conditions {power_domain@nominal1 power_domain@nominal2}

-default用来指定一个default的power mode

两个规则用来创建power mode,指定power domain和对应的nominal。

create_power_switch_rule  -name PSW_name -domain PD_name -external_power_net VDD_name

-domain来用指定PSW输出的secondary power去向的power domain

-external_power_net只用在header类型的PSW中。

-external_groud_net只用在footer类型的PSW中。

update_power_switch_rule  -name PSW_name  -enable_condition_1 net1  -enable_condition_2 net2

-acknowledge_receiver_1 net1  -acknowledge_receiver_2 net2

-name与create中创建的power switch的名字相同。

-enable_condition_1/2 PSW的enable信号,两级表示一个weak/一个strong,分两级开启

-acknowledge_condition_1/2 PSW的反馈信号。

针对lower power的一些library cell的定义:

define_isolation_cell  -cells {}  -power  VDD_name -ground  VSS_name -enable pin -valid_location from/to/off

-power_switchable  net 只有在使用header类型的PSW时,指定那个可以switch的power

-power  net 总是有电的power

-ground  net  总是有电的ground

-valid_location to表示只在输出口进行iso,from表示总是在input口进行iso,off表示总是在power off的那个口进行iso

define_level_shifter_cell  -cells  {}  -input_voltage_range num1:num2 -output_voltage_range num1:num2 -direction down/up

-input_power_pin pin_num  -output_power_pin  pin_num -input_ground_pin  pin_num -output_ground_pin  pin_num

-enable  pin_name -valid_location to/from

-valid_location:to指定输出的信号进行level_shifter(default) from指定输入的信号进行level_shifter,either表示都可以

-enable pin_name:只有在该cell具有iso的功能时才有用

-direction down表示只能高电平到低电平,up表示只能低电平到高电平

-input_voltage_range 表示voltage的范围

define_always_on_cell  -cells {} -power_switchable VDD_name -power VDDR -ground VSS_name

-power_switchable表示可以switch的power

-power表示实电

-ground表示虚电

define_power_switch_cell  -cells {} -stage_1_enable  net_name  -stage_1_output  net_name

-stage_2_enable  net_name  -stage_2_output  net_name

-type header/footer -power_switchable VDD_name -power VDD

-type_1_enable:表示PSW的enable信号,一般分为两级

-type_1_output:表示经过buf/inv之后,输出到下一级PSW的信号。

-type:PSW的结构header/footer

Lower Power with CPF(二)的更多相关文章

  1. Lower Power with CPF(四)

    CPF从Front-end到Back-end(RTL--GDSII)的整个流程: 1)Creating a CPF file:来在前端就建立lower power的规范. 2)检查CPF文件的正确性, ...

  2. Lower Power with CPF(三)

    常用的一些Lower Power的策略: 1)Clock tree optimization and clock gating:在正常情况下clock信号会一直toggle at the maximu ...

  3. Lower Power with CPF(一)

    CPF(Common Power Format):cadence推出的一种在设计中描述低功耗设计的文件.完全按Tcl的语言格式来定义. CPF文件在整个前端后端的过程中,需要的部分不一样,所以CPF文 ...

  4. lower power的IP设计

    在IP的实现过程中,考虑lower power部分进行设计: 1)Partition the design来满足lower power的一些strategies,尤其是power gating和clo ...

  5. Low Power之CPF/UPF

    1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also ...

  6. lower power的physical library

    在一个cell library中,比较重要的是cell height,cell height由tracks来决定,track表示一个metal线的pitch. 一个cell通常被做成一定数量的trac ...

  7. lower power设计中的DVFS设计

    Pswitch = Ceff * Vvdd^2*Fclk, Pshort-circuit = Isc * Vdd * Fclk, Pleakage = f(Vdd, Vth, W/L) 尽管对电压的s ...

  8. Power Gating的设计(模块二)

    针对lower power的验证,由cpf/upf来建模,包括: 1)power gating的功能模型(在power gate之后将output force为x) 2)isolation功能模型: ...

  9. Multi-voltage和power gating的实现

    power domain:一个逻辑的集合体,包含power supply的一些信息.建立在FE. voltage area:chip上的一块物理区域.可以看作power domain的物理实现. Le ...

随机推荐

  1. javascript prototype学习

    function foo(a, b, c) { return a*b*c; } alert(foo.length); alert(typeof foo.constructor); alert(type ...

  2. js json转字符串

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...

  3. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十五:FIFO储存模块(同步)

    实验十五:FIFO储存模块(同步) 笔者虽然在实验十四曾解释储存模块,而且也演示奇怪的家伙,但是实验十四只是一场游戏而已.至于实验十五,笔者会稍微严肃一点,手动建立有规格的储存模块,即同步FIFO.那 ...

  4. 禁用ngen版本的.NET Framework dll加载

    在调试时会发现出于性能考虑.NET Framework dll加载的都是ngen版本,比如:System.dll,实际加载System.ni.dll. 如果希望加载非ngen版本,可以设置系统环境变量 ...

  5. Linux主机添加路由和端口转发

    环境(关闭防火墙和seLinux): 6A: CentOS6 7A 和 7B:CentOS 7 6A: 192.168.20.131/24 7B: 192.168.20.129/24 和 192.16 ...

  6. MAC SVN 基本设置 终端命令

    extends:http://www.cnblogs.com/heiniuhaha/archive/2012/07/31/2616493.html 安装XCode后Mac OS X 系统已经内置了sv ...

  7. pandas 中的DataFrame.where()使用

    pandas.DataFrame.where DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, try_ca ...

  8. POJ-2184 Cow Exhibition(01背包变形)

    Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Descr ...

  9. Oracle卸载之Win7操作系统下Oracle11g 数据库卸载过程图解

    1.首先停止oracle11g数据库的5个服务 右键“计算机”,在下拉菜单列表中单击“管理”,进入计算机管理器.图解步骤如下: 选择左侧工具栏最后一项“服务和应用程序”,点击进入下拉菜单,单击“服务” ...

  10. ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解

    感谢一路走来默默陪伴和支持的你~~~ -------------------欢迎来访,拒绝转载------------------- 在之前的利用Python分析GP服务运行结果的输出路径 & ...