通过上一节对基本概念的了解之后,我们对下面的基本概念进行跟进一步学习。

Power domain

对于upf的实现,我们必须要有一个pd,哪怕只有一个aon的pd,任何一个逻辑只能属于一个pd,不能同时属于两个pd。允许嵌套的pd,即一个pd里面还有另外的pd。下面是一个例子。注意:一般定义top为aon pd,这会大大降低实现难度,top上的端口input,output,inout也是aon的。

图 1

UPF描述:

create_power domain Top // 创建TOP PD

create_power_domain pd1 -elements

u_dhm_core // 创建 TOP下的pd1

pd的scope的概念,对于hier的upf调用,我们使用scope,如果子模块的upf在top中调用我们使用scope

upf描述:load upf -scope u_dhm_core core.upf

或者>set scope u_dhm_core

>load_upf core.upf

Pd的划分

如果把B定义成一个pd,那么B下面所有的逻辑都是这个pd的,图2紫色upf描述。

如果把A定义成一个pd,如果A下面还有逻辑不是这个pd的,图2绿色upf描述。

有时候大家想使用图三红色框图的pd划分,这个时候因为D是A下面的逻辑,我们需要把D flatten出来做一个VA(voltage area),再使用PD1去供电,这样实现的难度很大,一般不建议。同理,也不建议像图4那样去定义pd,如果非要这样,图4左图需要使用下面的upf描述

create_power_domain PD1 -elements {A} //定义A及其附属结构为pd1。

create_power_domain PD2 -elements {A/C}//定义A下面C的附属结构为pd2。

图4右图需要使用下面的upf描述

create_power_domain pd1 -elements {B}

create_power_domain pd2 -elements {B/F}

图 2

图 3

图 4

Pd的具体实现

不同的pd划分,后端会在不同的pd上面做VA(voltage area),并在VA上面做power plan,再放入special cell。图5是pd的划分对应的后端版图的划分,这是一一对应的关系。如果top下面的一个ip里面还有另外的一个pd,我们可以把这个pd flatten出来,如图6所示,即单独把D的逻辑拉到顶层,使用顶层的pd供电,D和C之间的逻辑均需要插入special cells。同理,在图7中,我们也需要把B flatten出来和A在一块VA上。

图 5

图 6

图 7

Supply network

Supply network包含了下面3种元素,supply nets(电线),supply ports(插座)和power switch(开关)。

首先我们学习一些基本的UPF描述去定义Supply network。

  1. -create_supply_net       //  创建一根电线
  2. -create_supply_port      //  创建一根电源
  3. -connect_supply_net     //  把电源和电线连接起来
  4. –set_domain_supply_net  //  告诉工具一个pd里面所有的电源都来自哪一个port
  5. -create_power_switch       //  创建开关

对下面的图8进行supply network举例。

图 8

  1. 建立两个pd

create_power_domain TOP

create power domain pd1 -elements u_dhm_core

  1. 建立ports

create_supply_port VDD

create_supply_port VDDL

create_supply_port VSS

  1. 在top层建立supply nets,信号可以和ports一样。

create_supply_net VDD-domain TOP

create_supply_net VDDL -domain TOP

create_supply_net VSS  -domain TOP

  1. 在pd1创建supply nets,这里的reuse表示从top上的nets可以复用到这里。

create_supply_net VDDL   -domain pd1 -reuse

create_supply_net VSS     -domain pd1 -reuse

create_supply_net VDDLS1  -domain pd1

  1. 将ports和nets链接起来

connect_supply_net VDD  –ports  { VDD }

connect_supply_net VDDL -ports   { VDDL }

connect_supply_net VSS  -ports   {VSS}

  1. 但是这个时候我们还是不知道top层的电源从哪里过来的。下面的描述告诉工具,top和pd1的电和地来自哪里,TOP的电工具认为可能来自VDDL。所以需要定义。

set_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSS

set_domain_supply_net pd1  -primary_power_net VDDLS1 -primary_ground_net VSS

Supply set

Supply network包含了下面3种元素,supply nets(电线),supply ports(插座)和power switch(开关)。

首先我们学习一些基本的UPF描述去定义Supply network。

  1. -create_supply_net       //  创建一根电线
  2. -create_supply_port      //  创建一根电源
  3. -connect_supply_net     //  把电源和电线连接起来
  4. –set_domain_supply_net  //  告诉工具一个pd里面所有的电源都来自哪一个port
  5. -create_power_switch       //  创建开关

对下面的图8进行supply network举例。

Supply network包含了下面3种元素,supply nets(电线),supply ports(插座)和power switch(开关)。

首先我们学习一些基本的UPF描述去定义Supply network。

  1. -create_supply_net       //  创建一根电线
  2. -create_supply_port      //  创建一根电源
  3. -connect_supply_net     //  把电源和电线连接起来
  4. –set_domain_supply_net  //  告诉工具一个pd里面所有的电源都来自哪一个port
  5. -create_power_switch       //  创建开关

对下面的图8进行supply network举例。

图 8

  1. 建立两个pd

create_power_domain TOP

create power domain pd1 -elements u_dhm_core

  1. 建立ports

create_supply_port VDD

create_supply_port VDDL

create_supply_port VSS

  1. 在top层建立supply nets,信号可以和ports一样。

create_supply_net VDD-domain TOP

create_supply_net VDDL -domain TOP

create_supply_net VSS  -domain TOP

  1. 在pd1创建supply nets,这里的reuse表示从top上的nets可以复用到这里。

create_supply_net VDDL   -domain pd1 -reuse

create_supply_net VSS     -domain pd1 -reuse

create_supply_net VDDLS1  -domain pd1

  1. 将ports和nets链接起来

connect_supply_net VDD  –ports  { VDD }

connect_supply_net VDDL -ports   { VDDL }

connect_supply_net VSS  -ports   {VSS}

  1. 但是这个时候我们还是不知道top层的电源从哪里过来的。下面的描述告诉工具,top和pd1的电和地来自哪里,TOP的电工具认为可能来自VDDL。所以需要定义。

set_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSS

set_domain_supply_net pd1  -primary_power_net VDDLS1 -primary_ground_net VSS

Supply set和Supply set handle

电源集合(Supply set)

Supply set就是多组supply nets的集合,每一组包含了power供电和vss接地,方便调用。Supply set物理上不存在的,是一种抽象的,只是方便在upf中的使用。设计者只关心Supply set,不关心Supply nets。下面进行例子说明。下面的例子中myss1的电源为MYVDD,接地为MYVSS,myss2,myss3都插在myss1上,且电源和地都是MYVDD和MYVSS。

create_supply_set myss1 // 创建myss1 supply set

create_supply_set myss2// 创建myss1 supply set

create_supply_set myss3 -function {ground myss1.ground}  -function {power \ myss1.power}// 创建myss3 supply set,function只有两个选项,power和ground,这里的意思是将myss1的ground和power给到myss3

create_supply_set myss2 -function {power myss1.power} -function {ground myss1.ground} \

-update // 因为之前创建了myss2,现在使用-update更新myss2,只能更新一次。这里的意思是将myss1的power给到myss2

create_supply_set myss1 -function {power MYVDD}  -function {ground MYVSS}     \

-update //因为之前创建了myss1,现在使用-update更新myss1。这里的意思是将myss1的电源设置为MYVDD,接地设置为MYVSS。

需要注意的是,定义set之前还是需要定义port和net,然后组成set用于iso和retention等special cell

电源集合句柄(Supply set handle)

Supply set handle用于在一个pd里面设置默认值,包含了primary,default_isolation,default_retention三个基础选项。Primary又包括了power和ground。

举例1:

写法1:

set_isolation PD1_iso –domain PD1 -isolation_supply_set PD2.primary

//这里在pd1里面建立一个iso,但是它的primary即它的供电和接地来自pd2,这样的方法比第二种写法简单高效。

写法2:先定义一个在pd2 建立一个supply set ss2, 在把supply set给到PD1里面的iso。

create_supply_set ss2 -function {ground VSS}  -function {power  VDD}

// VSS,VDD都来自pd2

set_isolation PD1_iso –domain PD1 -isolation_supply_set ss2

//再把ss2的power和ground给到iso

举例2:

写法1:

create_supply_set ssPD1 -function {power MYVDD0}  -function {ground MYVSS0} // 创建ssPD1 supply set ,MYVDD和MYVSS不是顶层接入,可能被关掉。

create_supply_set ssAo  -function {power MYVDD}  -function {ground MYVSS} //  创建ssAO supply set , MYVDD和MYVSS是顶层接入,为aon信号。

create_power_domain PD1 -elements {inst1} // 创建PD1

set_domain_supply_net PD1-primary_power_net ssPD1.power -primary_ground_net ssPD1.ground //告诉工具PD1的供电来自ssPD1.power,接地来自ssPD1.ground,他们都是ssPD1这个supply set里的。

set_domain_supply_net AON -primary_power_net ssAo.power -primary_ground_net ssAo.ground //告诉工具AON的供电来自ssAo.power,接地来自ssAo.ground,他们都是ssAo这个supply set里的。

set_isolation PDiso -domain PD1-isolation_supply_set ssAO

-clamp_value 1 // 在PD1创建ISO,ISO的电源来自ssAO,为aon的信号,所以在pd1断电后保持1

set_retention PDret -domain PD1-retention_supply_set ssAO //在PD1创建retention电源来自ssAO,为aon的信号,所以在pd1断电保持。

写法2:

create_power_domain PD1 -elements {inst1}  // 创建PD1

set isolation PDiso -domain PD1

-isolation_supply_set PD1.default_isolation

-clamp_value 1

// 使用了pd1默认的ISO供电,这就是Supply set handle

set_retention PDret -domain PD1

-retention_supply_set PD1.default_retention

// 使用了pd1默认的retention供电,这就是Supply set handle

习题:对比下面两种upf的写法,并理解。

第一种:相当于把外面的电线和地线都拉到pd1

create_power_domain PD1-elements {inst1} //建立pd1

create_supply_port spVPD1 -direction in //建立spVPD1 电线

create_supply_port snvss //建立snvss port

create_supply_net snVPD1 -domain PD1 //在PD1建立snVPD1电线

create_supply_net snVss -domain PD1. //在PD1建立snVss地线

connect_supply_net snVPD1 -ports {spVPD1} // 链接snVPD1电线和spVPD1 port

oonnect_supply net snVss -ports {snvss} // 链接snVss地线和spvss port

set_domain_supply_net PD1 -primary_power snVPD1 -primary_ground snvss

//在告诉工具PD1的供电和接地来自snVPD1和snvss

第二种:相当于带外面的电线和地线的插座送到了pd1

create_supply_set ssPD1 -function {ground VSS}  -function {power  VDD}

create_power_domain PD1 -elements {inst1}

set_domain_supply_net PD1 -primary_power_net ssPD1.power -primary_ground_net ssPD1.ground

图 8

  1. 建立两个pd

create_power_domain TOP

create power domain pd1 -elements u_dhm_core

  1. 建立ports

create_supply_port VDD

create_supply_port VDDL

create_supply_port VSS

  1. 在top层建立supply nets,信号可以和ports一样。

create_supply_net VDD-domain TOP

create_supply_net VDDL -domain TOP

create_supply_net VSS  -domain TOP

  1. 在pd1创建supply nets,这里的reuse表示从top上的nets可以复用到这里。

create_supply_net VDDL   -domain pd1 -reuse

create_supply_net VSS     -domain pd1 -reuse

create_supply_net VDDLS1  -domain pd1

  1. 将ports和nets链接起来

connect_supply_net VDD  –ports  { VDD }

connect_supply_net VDDL -ports   { VDDL }

connect_supply_net VSS  -ports   {VSS}

  1. 但是这个时候我们还是不知道top层的电源从哪里过来的。下面的描述告诉工具,top和pd1的电和地来自哪里,TOP的电工具认为可能来自VDDL。所以需要定义。

set_domain_supply_net TOP -primary_power_net VDD -primary_ground_net VSS

set_domain_supply_net pd1  -primary_power_net VDDLS1 -primary_ground_net VSS

Supply set和Supply set handle

电源集合(Supply set)

Supply set就是多组supply nets的集合,每一组包含了power供电和vss接地,方便调用。Supply set物理上不存在的,是一种抽象的,只是方便在upf中的使用。设计者只关心Supply set,不关心Supply nets。下面进行例子说明。下面的例子中myss1的电源为MYVDD,接地为MYVSS,myss2,myss3都插在myss1上,且电源和地都是MYVDD和MYVSS。

create_supply_set myss1 // 创建myss1 supply set

create_supply_set myss2// 创建myss1 supply set

create_supply_set myss3 -function {ground myss1.ground}  -function {power \ myss1.power}// 创建myss3 supply set,function只有两个选项,power和ground,这里的意思是将myss1的ground和power给到myss3

create_supply_set myss2 -function {power myss1.power} -function {ground myss1.ground} \

-update // 因为之前创建了myss2,现在使用-update更新myss2,只能更新一次。这里的意思是将myss1的power给到myss2

create_supply_set myss1 -function {power MYVDD}  -function {ground MYVSS}     \

-update //因为之前创建了myss1,现在使用-update更新myss1。这里的意思是将myss1的电源设置为MYVDD,接地设置为MYVSS。

需要注意的是,定义set之前还是需要定义port和net,然后组成set用于iso和retention等special cell

电源集合句柄(Supply set handle)

Supply set handle用于在一个pd里面设置默认值,包含了primary,default_isolation,default_retention三个基础选项。Primary又包括了power和ground。

举例1:

写法1:

set_isolation PD1_iso –domain PD1 -isolation_supply_set PD2.primary

//这里在pd1里面建立一个iso,但是它的primary即它的供电和接地来自pd2,这样的方法比第二种写法简单高效。

写法2:先定义一个在pd2 建立一个supply set ss2, 在把supply set给到PD1里面的iso。

create_supply_set ss2 -function {ground VSS}  -function {power  VDD}

// VSS,VDD都来自pd2

set_isolation PD1_iso –domain PD1 -isolation_supply_set ss2

//再把ss2的power和ground给到iso

举例2:

写法1:

create_supply_set ssPD1 -function {power MYVDD0}  -function {ground MYVSS0} // 创建ssPD1 supply set ,MYVDD和MYVSS不是顶层接入,可能被关掉。

create_supply_set ssAo  -function {power MYVDD}  -function {ground MYVSS} //  创建ssAO supply set , MYVDD和MYVSS是顶层接入,为aon信号。

create_power_domain PD1 -elements {inst1} // 创建PD1

set_domain_supply_net PD1-primary_power_net ssPD1.power -primary_ground_net ssPD1.ground //告诉工具PD1的供电来自ssPD1.power,接地来自ssPD1.ground,他们都是ssPD1这个supply set里的。

set_domain_supply_net AON -primary_power_net ssAo.power -primary_ground_net ssAo.ground //告诉工具AON的供电来自ssAo.power,接地来自ssAo.ground,他们都是ssAo这个supply set里的。

set_isolation PDiso -domain PD1-isolation_supply_set ssAO

-clamp_value 1 // 在PD1创建ISO,ISO的电源来自ssAO,为aon的信号,所以在pd1断电后保持1

set_retention PDret -domain PD1-retention_supply_set ssAO //在PD1创建retention电源来自ssAO,为aon的信号,所以在pd1断电保持。

写法2:

create_power_domain PD1 -elements {inst1}  // 创建PD1

set isolation PDiso -domain PD1

-isolation_supply_set PD1.default_isolation

-clamp_value 1

// 使用了pd1默认的ISO供电,这就是Supply set handle

set_retention PDret -domain PD1

-retention_supply_set PD1.default_retention

// 使用了pd1默认的retention供电,这就是Supply set handle

习题:对比下面两种upf的写法,并理解。

第一种:相当于把外面的电线和地线都拉到pd1

create_power_domain PD1-elements {inst1} //建立pd1

create_supply_port spVPD1 -direction in //建立spVPD1 电线

create_supply_port snvss //建立snvss port

create_supply_net snVPD1 -domain PD1 //在PD1建立snVPD1电线

create_supply_net snVss -domain PD1. //在PD1建立snVss地线

connect_supply_net snVPD1 -ports {spVPD1} // 链接snVPD1电线和spVPD1 port

oonnect_supply net snVss -ports {snvss} // 链接snVss地线和spvss port

set_domain_supply_net PD1 -primary_power snVPD1 -primary_ground snvss

//在告诉工具PD1的供电和接地来自snVPD1和snvss

第二种:相当于带外面的电线和地线的插座送到了pd1

create_supply_set ssPD1 -function {ground VSS}  -function {power  VDD}

create_power_domain PD1 -elements {inst1}

set_domain_supply_net PD1 -primary_power_net ssPD1.power -primary_ground_net ssPD1.ground

低功耗设计及其UPF实现第二节相关推荐

  1. 低功耗设计及其UPF实现第一节

    第一节:低功耗设计的基本单元和概念 大家好,最近疫情宅家,工作没有那么忙,所以写一下之前从事过的低功耗设计并和大家分享,希望大家多多提出不足.本次总结一共分为若干小节(还没定),我会从最最基础的低功耗 ...

  2. 低功耗设计及其UPF实现第四节(最后一节)

    低功耗设计方法学(4) pst 在upf中,使用pst来定义每个pd之间的电压关系,工具也使用pst来检查isolation rules,leve shifter rules是否完全或者冗余.pst不 ...

  3. 低功耗设计及其UPF实现第三节

    低功耗设计方法学(3) 本节学习一些UPF的描述,这些描述是实际项目最最使用的. Level shifter 从高电压到低电压不需要LS,反之需要. 时钟需要专门的LS. 图1中蓝色部分就是LS. 图 ...

  4. 低功耗设计——基于UPF进行设计

    UPF, 统一电源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的电源格式,是一组标准的类Tcl 语言的集合,用来描述芯片设计中的低功耗意图(Low-Powe ...

  5. AOSP>设计>测试(第二节)测试开发工作流

    AOSP>设计>测试 第二节 测试开发工作流 一.概览 测试类型 测试用例准则 二.简单配置 示例 设置 三.复杂配置 目标准备器 测试类 四.插桩测试 概览 主要概念 步骤总结 自插桩测 ...

  6. 芯片低功耗设计之UPF简介

    可以把芯片设计粗略分为三个部分:功能.时序和电源,它们分别对应RTL.SDC和UPF三种设计文件. 前端工程师对RTL和SDC肯定是非常熟悉的,但是UPF(SNPS叫UPF,Cadence叫CPF)更 ...

  7. 第二节认识计算机教案,第二章 第二节 局域网的构建 教学设计_博客

    <第二章 第二节 局域网的构建 教学设计_博客>由会员分享,可在线阅读,更多相关<第二章 第二节 局域网的构建 教学设计_博客(3页珍藏版)>请在装配图网上搜索. 1.第二章 ...

  8. 低功耗设计(low power design)和UPF介绍(含代码示例)

    目录 一.低功耗实现方法 1.多电压域技术(Multi-Voltage) 2.电源门控(MTCOMS Power Gating) 3.多电压+功耗控制+寄存器Retention技术 4.低电压stan ...

  9. 【嵌入式设计】嵌入式低功耗设计

    本文转自https://www.amobbs.com/thread-4932393-1-1.html 文章目录 前言 1.低功耗的概念 1.1.一种AD采样功耗优化方案 2.硬件低功耗设计概述 3.软 ...

最新文章

  1. quick time不可用是什么意思_自动挡上每个字母都代表什么意思?可以用一句话总结...
  2. 三层交换(VLAN间互通+路由功能)+VTP+STP(PVST)综合实验(理论+实践=真实)
  3. SAP CRM点了附件的超链接后报错的处理方式
  4. 自动提醒IE6访客升级浏览器,
  5. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
  6. 安卓牛客专项练习2020.12.31
  7. 程序员开发windows linux,好程序员不用windows作开发环境
  8. 自己动手写Docker系列 -- 4.2使用AUFS包装busybox
  9. c 连接mysql数据库_C++连接mysql数据库的两种方法
  10. 第二个冲刺周期第五天
  11. 二、Java的三大特征(或者四大特征)
  12. php获取qqkey源码,易语言取QQKEY源码
  13. TiDB 产品常见问题
  14. 华硕飞行堡垒扬声器没声音_华硕玩游戏没声音_华硕飞行堡垒玩游戏卡
  15. Util: Java生成文件的md5文件方法的代码
  16. Java设计一个测桃花模块_20145209刘一阳《JAVA程序设计》第一周课堂测试
  17. 【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish
  18. JavaWeb-10-JavaScript高级学习笔记
  19. 多线程下载王者荣耀高清壁纸(过程超详细)
  20. 用网线实现两台电脑之间的大文件传输(使用电脑备份)

热门文章

  1. QCC3040---蓝牙名称修改
  2. Volo.Abp.EntityFrameworkCore.MySQL 使用
  3. windows store下载_仰望星空?5款安卓/苹果/Windows天文程序让你妙不可言
  4. pdo mysql 安装 zval_macos下编译安装php5.2.17步骤
  5. Fedora14 Samba 配置
  6. appium向右滑动
  7. 【NVivo教程】如何进行主题分析
  8. 【数字信号处理2】IIR 滤波器设计
  9. Mvc 微信企业号开发之ACCESS_TOKE 获取
  10. 北大青鸟汉字注释机内码_消防维修北大青鸟消防主机汉字注释如何书写?