zoukankan      html  css  js  c++  java
  • 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

       

  • 相关阅读:
    PHP实现带有验证码的登陆注册
    XML
    自定义注解--Annotation
    URL编程
    SpringMvc表单标签库
    Socket编程
    网络编程
    其他流
    Spring MVC-视图解析器
    IDEA(JAVA)使用json
  • 原文地址:https://www.cnblogs.com/-9-8/p/4409701.html
Copyright © 2011-2022 走看看