Lower Power with CPF(二)

Lower Power with CPF(二)CPF 文件可以有两种组织方式 FlatCPFfileo 由于在大型的 SoC 设计中 一般都采用 Hierarchical 的形式 所以本文主要按这个方式来讲 Hierarchical 一般定义多个 CPFfile 通过 include 来组织起来 可以分为 Top file 定义一个 CPF MODE 变量来选择各个子 CP

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

   

转载于:https://www.cnblogs.com/-9-8/p/4409701.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207315.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:05
下一篇 2026年3月19日 下午2:05


相关推荐

  • javascript 数组删除元素_数组添加元素

    javascript 数组删除元素_数组添加元素js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单。1、JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,也就是索引值,代码如下:Array.prototype.indexOf=function(val){for(vari=………

    2022年10月1日
    3
  • php递归算法计算n 介乘,递归算法示例——计算N的阶乘「建议收藏」

    php递归算法计算n 介乘,递归算法示例——计算N的阶乘「建议收藏」递归算法,也就是调用方法自身。阶乘算法,N的阶乘为N*(N-1)*…*2*1,1的阶乘是1。下面是示例的代码:packagecom.cqit.edu.test;importjava.util.Scanner;/***@author肖德俊*@versionDec9,20086:02:55PM*/publicclassUseself{/***@paramargs*/pub…

    2022年8月11日
    11
  • RSA加密算法c++实现

    RSA加密算法c++实现RSA加密算法c++实现 先码个代码:/*************************************************************************>FileName:RSA.cpp>Author:YB>E-mail:134…

    2022年5月21日
    39
  • websocket和http的瓜葛以及websocket协议实现「建议收藏」

    websocket和http的瓜葛以及websocket协议实现「建议收藏」websocket和http的瓜葛以及websocket协议实现,方法论,如何在现有的tcp传输层协议上封装应用层协议

    2025年8月3日
    3
  • 最简单DIY串口蓝牙硬件实现方案

    最简单DIY串口蓝牙硬件实现方案51 单片机物联网智能小车系列文章目录第一篇 最简单 DIY 的 51 蓝牙遥控小车设计方案第二篇 最简单 DIY 串口蓝牙硬件实现方案文章目录 51 单片机物联网智能小车系列文章目录前言一 最简单 DIY 串口蓝牙硬件实现方案是什么 二 制作步骤 1 搭建 ESP32 开发环境 2 下载代码 3 根据软件和硬件完成硬件连接三 仿真与调试 1 准备好硬件 小车上电和打开 arduino 串口监视器 输入指令 点击发送 2 接收小车返回的响应总结前言 daodanjishui 物联网核心原创技术之最简单 DIY 串口

    2026年3月18日
    1
  • 智谱推「Claude API用户特别搬家计划」,应对Anthropic策略调整

    智谱推「Claude API用户特别搬家计划」,应对Anthropic策略调整

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号