芯片低功耗设计之UPF简介

这篇具有很好参考价值的文章主要介绍了芯片低功耗设计之UPF简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以把芯片设计粗略分为三个部分:功能、时序和电源,它们分别对应RTL、SDC和UPF三种设计文件。

芯片低功耗设计之UPF简介

前端工程师对RTL和SDC肯定是非常熟悉的,但是UPF(SNPS叫UPF,Cadence叫CPF)更多地是跟后端相关,所以前端不一定了解。这里简单介绍一下UPF的原理。

 

首先要明白几个概念。

1、Power Domain(PD)

网上关于PD的解释:Hence, the UPF power domain is a collection of instances that are treated as a group for power-management purposes. Power domain defines the group of instances that shares the common set of power supply requirements.

形象化一点的理解,PD就是共用一个电源(包括VDD和VSS)的一堆电路,而且这堆电路的边界往往是根据RTL Hierarchy的boundary来定义的。

芯片低功耗设计之UPF简介

芯片低功耗设计之UPF简介

2、Supply Nets, Supply Ports, Power Switches

Supply Nets:可以类比RTL里面的wire,用来定义一根电源线,而且只在声明它的PD中有效。

Supply Ports:可以类比RTL里面的port,在电路中它们对应的是电源pin。

Power Switches:这个没有可类比的RTL元素,它就是一个电源开关,其两端电源属于不同的Nets,控制信号来自RTL function电路。

芯片低功耗设计之UPF简介

 

3、Isolation Cell(ISO)

在用到power switch的多电源域芯片中,ISO是必须用到的单元。原因很简单,可关电的PD的逻辑输出,在power down以后呈现X态,如果不加处理连到always on的逻辑,可能导致功能异常。ISO的功能类似AND和OR(取决于掉电后希望保持1还是0),其中ISO_EN由always on domain的信号驱动,在掉电前会先打开ISO_EN,保证掉电PD的输出都处于确定值,然后再关电;反过来,上电完成后才会关闭ISO_EN,从而保证电路的稳定。

那么ISO应该放到关电PD还是always on呢?答案是都可以。放到关电PD的优点是可以节省ISO数量(考虑到一个输出连到多个PD的情况),缺点是需要把always on的power rail拉过来;放到always on的话其电源连接比较简单。笔者更倾向于后者。

芯片低功耗设计之UPF简介

4、Power State Table(PST)

用来定义芯片低功耗模式的一张表格,包含power supplies(nets/ports)以及它们在不同模式下的状态(on/off)。

芯片低功耗设计之UPF简介

有了这些基本概念,我们可以试着设计一个简单的UPF。

############################################################################
## UPF Demo                                                               ##
############################################################################
## create power domains
create_power_domain chip_top    -include_scope
create_power_domain block1      -elements {inst_block1}
create_power_domain block2      -elements {inst_block2}
create_power_domain block3      -elements {inst_block3}

## create common supply net
## VDD is the always on source net for every block
create_supply_net   VDD      -domain chip_top
create_supply_net   VDD      -domain block1         -reuse
create_supply_net   VDD      -domain block2         -reuse
create_supply_net   VDD      -domain block3         -reuse

## create supply nets for blocks functional logic
create_supply_net   VDD_1    -domain block1     
create_supply_net   VDD_2    -domain block2     
create_supply_net   VDD_3    -domain block3  

## create common VSS net for whole chip
create_supply_net   VSS           -domain chip_top
create_supply_net   VSS           -domain block1     -reuse
create_supply_net   VSS           -domain block2     -reuse
create_supply_net   VSS           -domain block3     -reuse

## create VDD port and connect it to VDD supply net
create_supply_port  VDD
connect_supply_net  VDD      -ports   VDD

## create VSS port and connect it to VSS supply net
create_supply_port  VSS     
connect_supply_net  VSS      -ports   VSS

## set primary supply net
set_domain_supply_net chip_top      -primary_power_net VDD      -primary_ground_net VSS
set_domain_supply_net block1        -primary_power_net VDD_1    -primary_ground_net VSS 
set_domain_supply_net block2        -primary_power_net VDD_2    -primary_ground_net VSS 
set_domain_supply_net block3        -primary_power_net VDD_3    -primary_ground_net VSS

## create power switch
create_power_switch block1_sw   -domain block1  -input_supply_port {<PIN_NAME> VDD} -output_supply_port {<PIN_NAME> VDD_1} \
                                -control_port {<PIN_NAME> inst_always_on/pwr_ctrl} \
                                -on_state     {<state_name> <input_pin_name> <boolean_expression>} \
                                -off_state    {<state_name> <boolean_expression>}
map_power_switch    block1_sw   -domain block1 -lib_cells {<cell_list>}

create_power_switch block2_sw   -domain block2  -input_supply_port {<PIN_NAME> VDD} -output_supply_port {<PIN_NAME> VDD_2} \
                                -control_port {<PIN_NAME> inst_always_on/pwr_ctrl} \
                                -on_state     {<state_name> <input_pin_name> <boolean_expression>} \
                                -off_state    {<state_name> <boolean_expression>}
map_power_switch    block2_sw   -domain block2 -lib_cells {<cell_list>}

create_power_switch block3_sw   -domain block3  -input_supply_port {<PIN_NAME> VDD} -output_supply_port {<PIN_NAME> VDD_3} \
                                -control_port {<PIN_NAME> inst_always_on/pwr_ctrl} \
                                -on_state     {<state_name> <input_pin_name> <boolean_expression>} \
                                -off_state    {<state_name> <boolean_expression>}
map_power_switch    block3_sw   -domain block3 -lib_cells {<cell_list>}

## set isolation cells, default clamp value = 0
set_isolation block1_iso_out    -domain block1      -isolation_power_net VDD -isolation_ground_net VSS -clamp_value 0 -applies_to outputs
set_isolation block2_iso_out    -domain block2      -isolation_power_net VDD -isolation_ground_net VSS -clamp_value 0 -applies_to outputs
set_isolation block3_iso_out    -domain block3      -isolation_power_net VDD -isolation_ground_net VSS -clamp_value 0 -applies_to outputs

## set exceptions for the isolation cells with clamp value = 1
set_isolation block1_iso_high_out -domain block1    -isolation_power_net VDD -isolation_ground_net VSS -clamp_value 1 -applies_to outputs -elements { \
                inst_block1/output_signal1 \
                inst_block1/output_signal2 \
                inst_block1/output_signal3 \
                inst_block1/output_signal4 }

set_isolation block3_iso_high_out -domain block3    -isolation_power_net VDD -isolation_ground_net VSS -clamp_value 1 -applies_to outputs -elements { \
                inst_block3/output_signal1 \
                inst_block3/output_signal2 \
                inst_block3/output_signal3 \
                inst_block3/output_signal4 \
                inst_block3/output_signal5 \
                inst_block3/output_signal6 \
                inst_block3/output_signal7 \
                inst_block3/output_signal8 }

## set isolation control signals for both clamp vaule 0 and clamp value 1 cells
set_isolation_control block1_iso_out       -domain block1  -isolation_signal inst_always_on/block1_iso_en  -isolation_sense high -location parent
set_isolation_control block1_iso_high_out  -domain block1  -isolation_signal inst_always_on/block1_iso_en  -isolation_sense high -location parent
set_isolation_control block1_iso_out       -domain block2  -isolation_signal inst_always_on/block2_iso_en  -isolation_sense high -location parent
set_isolation_control block1_iso_high_out  -domain block2  -isolation_signal inst_always_on/block2_iso_en  -isolation_sense high -location parent
set_isolation_control block1_iso_out       -domain block3  -isolation_signal inst_always_on/block3_iso_en  -isolation_sense high -location parent
set_isolation_control block1_iso_high_out  -domain block3  -isolation_signal inst_always_on/block3_iso_en  -isolation_sense high -location parent

## define power state on supply port
add_port_state VDD                            -state {on  0.81}
add_port_state block1_sw/<output_pin_name>    -state {on  0.81} -state {off off}
add_port_state block2_sw/<output_pin_name>    -state {on  0.81} -state {off off}
add_port_state block3_sw/<output_pin_name>    -state {on  0.81} -state {off off}
add_port_state VSS                            -state {on  0}

#############################################
## Create PST                              ##
#############################################
create_pst flatten_pst -supplies                {VDD  VDD_1  VDD_2  VDD_3}
## all power on
add_pst_state pwr_s0  -pst flatten_pst  -state  { on   on     on     on  }  
## block2 & block3 power off
add_pst_state pwr_s1  -pst flatten_pst  -state  { on   on     off    off }
## block1 & block3 power off
add_pst_state pwr_s2  -pst flatten_pst  -state  { on   off    on     off }
## block1 & block2 & block3 power off
add_pst_state pwr_s3  -pst flatten_pst  -state  { on   off    off    off }

除了上面提到的内容,UPF还包含level shifter/retention/always_on_cell等单元,可以实现多电压域等更复杂的低功耗设计。此外,UPF2.0以后的版本还支持面向对象的写法,灵活度更高,不过可读性较差。UPF1.0应对一般的电源设计是足够用了。文章来源地址https://www.toymoban.com/news/detail-438144.html

到了这里,关于芯片低功耗设计之UPF简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国内几款常用热门音频功放芯片-低功耗、高保真

    音频功放芯片,又称为音频功率放大器芯片,是指一种将音频信号转换成线性的输出功率的集成电路芯片,在音频功放领域中一类是传统意义上的模拟功放;另一类是数字功放,它们都可以实现模拟信号到数字信号的转换。 随着智能手机、汽车音频、AI智能音箱,智能家居、

    2024年02月13日
    浏览(38)
  • 算力256TOPS,典型功耗35W,存算一体芯片杀入智能驾驶

    作者 | 张祥威 编辑 | 德新 国产智驾芯片有了新玩家 “最高物理算力256 TOPS,典型功耗35W,基于12nm制程工艺。” 5月10日,后摩智能发布首款基于存算一体架构的智驾芯片—— 鸿途™H30 ,并公布上述关键指标。 算力、数据和算法,并称AI的三大核心要素。其中,算力属于基础

    2024年02月04日
    浏览(32)
  • 技术之外(02)猿创征文|宝藏工具篇|数字芯片设计,嵌入式开发,人工智能|没我可以,没你不行

    新芯设计:专注,积累,探索,挑战   由于工作的繁忙,已经有较长的时间没有发文了。偶然之间,在回复读者来信的时候,关注到了 CSDN 创作活动中的「 猿创征文 」 第四季 | 2022 年我的开发者工具 。这时才晃过神来,2022 年,已经跨入了倒数的一个四分之一,岁月的印

    2024年01月23日
    浏览(72)
  • Si3262 一款低功耗刷卡+触摸+mcu 三合一SOC芯片

     Si3262是-款高度集成的低功耗soC芯片,其集成了基于RISC-V 核的低功耗MCU和工作在13.56MHz的非接触式读写器模块。 该芯片ACD模式下刷卡距离可达4-5cm(天线决定),适用于智能门锁,电子锁,柜锁,桑拿锁,物流锁等。 MCU模块具有低功耗、Low Pin Count、宽电压工作范围,集成了

    2024年02月09日
    浏览(49)
  • PHY6222系统级SOC蓝牙芯片低功耗高性能蓝牙MESH组网智能家居

     PHY6222是一款支持BLE 5.2功能和IEEE 802.15.4通信协议的系统级芯片(SoC),集成了超低功耗的高性能多模射频收发机,搭载32-bit ARM?Cortex?-M0处理器,提供64K retention SRAM、可选128K-8M Flash、96KB ROM以及256bit efuse,支持基于BLE和IEEE 802.15.4的安全架构、应用和OTA在线升级。此外,芯片串

    2024年03月17日
    浏览(59)
  • 数字IC设计之——低功耗设计

    目录 概述 背景 为什么需要低功耗设计 CMOS IC功耗分析 基本概念 功耗的分类 功耗相关构成 不同层次低功耗设计方法 芯片中的功耗分布以及对应的低功耗方案 低功耗方案 系统算法级的低功耗技术 编码阶段的低功耗技术 门控时钟 Clock Gating 物理实施的低功耗技术 操作数分离

    2023年04月18日
    浏览(82)
  • IOT低功耗设计思路

    IOT低功耗设备设计大致为3个方面的设计: 器件选型、电路设计、软件设计、续航寿命估算 单片机 1.选择具备多种低功耗工作模式的MCU,如MCU支持5种低功耗模式(Sleep,Stop0,Stop2,Standby,VBat),开启带有RTC唤醒的Stop模式可让功耗尽可能低;低功耗MCU的选型:总功耗可以分为

    2024年03月25日
    浏览(37)
  • 手机中的功耗设计介绍(一)

    最近在找新工作,对某大厂的功耗工程师的职位比较感兴趣。于是整理一下网络上查到的和之前基带工作中与功耗相关的知识。 不同的公司可能会有不同的责任划分,上份工作,硬件部分的功耗是由基带负责。主要接触到的是整机的关机漏电流,待机底电流,其他场景下的电

    2024年02月10日
    浏览(41)
  • 芯片FT量测简介

    概要:芯片的量测需求的资源主要是ATE+Handler+量测治具+测试程序。 ATE:ATE是Automatic Test Equipment的缩写, 于半导体产业意指集成电路(IC)自动测试机, 用于检测集成电路功能之完整性, 为集成电路生产制造之最后流程, 以确保集成电路生产制造之品质。 Handler:即Test Handler集

    2024年02月02日
    浏览(46)
  • PMIC芯片简介

    PMIC(Power Management Integrated Circuit),即电源管理集成电路,是一种专门用于管理和分配电子设备中电源的关键组件。它通过集成多种电源管理功能,提高了电源系统的效率和可靠性,同时减小了设备的尺寸和成本。 工作原理和功能 电源转换 :PMIC通常包含内置的DC-DC转换器,

    2024年04月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包