Lower Power with CPF(二)
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(二)的更多相关文章
- Lower Power with CPF(四)
CPF从Front-end到Back-end(RTL--GDSII)的整个流程: 1)Creating a CPF file:来在前端就建立lower power的规范. 2)检查CPF文件的正确性, ...
- Lower Power with CPF(三)
常用的一些Lower Power的策略: 1)Clock tree optimization and clock gating:在正常情况下clock信号会一直toggle at the maximu ...
- Lower Power with CPF(一)
CPF(Common Power Format):cadence推出的一种在设计中描述低功耗设计的文件.完全按Tcl的语言格式来定义. CPF文件在整个前端后端的过程中,需要的部分不一样,所以CPF文 ...
- lower power的IP设计
在IP的实现过程中,考虑lower power部分进行设计: 1)Partition the design来满足lower power的一些strategies,尤其是power gating和clo ...
- Low Power之CPF/UPF
1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also ...
- lower power的physical library
在一个cell library中,比较重要的是cell height,cell height由tracks来决定,track表示一个metal线的pitch. 一个cell通常被做成一定数量的trac ...
- lower power设计中的DVFS设计
Pswitch = Ceff * Vvdd^2*Fclk, Pshort-circuit = Isc * Vdd * Fclk, Pleakage = f(Vdd, Vth, W/L) 尽管对电压的s ...
- Power Gating的设计(模块二)
针对lower power的验证,由cpf/upf来建模,包括: 1)power gating的功能模型(在power gate之后将output force为x) 2)isolation功能模型: ...
- Multi-voltage和power gating的实现
power domain:一个逻辑的集合体,包含power supply的一些信息.建立在FE. voltage area:chip上的一块物理区域.可以看作power domain的物理实现. Le ...
随机推荐
- 利用Jenkins未授权获取服务器权限--Docker还来干扰--一次渗透的经历
Jenkins获取权限的过程 Jenkins存在未授权访问漏洞 Jenkins存在未授权访问漏洞,且项目具有读取权限,通过项目的日志获取到一个账号密码,尝试登录成功,打开控制台成功. 备注:控制台一般 ...
- 单例模式全面学习(C++版)
单例模式:用来创建独一无二的,只能够有一个实例的对象. 单例模式的结构是设计模式中最简单的,但是想要完全实现一个线程安全的单例模式还是有很多陷阱的,所以面试的时候属于一个常见的考点~ 单例模式的应用场 ...
- httpWebRequest获取流和WebClient的文件抓取
httpWebRequest获取流和WebClient的文件抓取 昨天写一个抓取,遇到了一个坑,就是在获取网络流的时候,人为的使用了stream.Length来获取流的长度,获取的时候会抛出错误,查了 ...
- Unity3D之游戏架构脚本该如何来写
这篇文章主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难.这篇文章的目的是让哪些已经上手Unity3D游戏引擎的朋友 ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- JAVA补充-抽象类
1.抽象类基本概念 package com.neusoft.abstracted; /** * 抽象类:在class之前加abstract关键字 * 抽象方法语法: 修饰符 abstract 返回值类 ...
- Bitwise and Bit Shift Operators 位运算 取反 补码
Bitwise and Bit Shift Operators (The Java™ Tutorials > Learning the Java Language > Language B ...
- 安装crf++的python包
在Linux上可以在taku910的github博客(https://taku910.github.io/crfpp/)下载crf++的linux版本,然后按照python文件夹下的README编译安 ...
- BZOJ4856 病毒感染 [Jsoi2016] dp
正解:区间dp+辅助dp 解题报告: 先放个传送门qwq 然后这题,又是一道看不懂题目的玩意儿:( 大概是语文太差 那就先解释下 其实只是一个点比较难明白就是它港 "假设JYY 进入i村庄并 ...
- atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity
atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity 1. addEntity 对原生SQL查询运行的控制是通过SQLQuery接口进 ...