数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)

server/2024/11/17 14:09:08/

下图所示为咱们社区T12nm A55低功耗实现项目。其实这个项目还可以根据产品的需求做一些改进。改进后项目实现的难度会大大增加。也希望通过今天的这个项目案例分享,帮助到今年IC秋招的同学。

芯片低功耗设计实现upf编写指南(附低功耗项目案例)
在这里插入图片描述

T12nm工艺数字IC后端实现难点都有哪些?

如何规避顶层Top到子模块接口的setup和hold violation?

Timing Signoff之check_timing检查(今晚19:10分直播)

这个T12nm A55低功耗项目使用的upf部分截图如下所示。

在这里插入图片描述
在这里插入图片描述

低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?

比如下图所示的A55包含三个Power Domain,分别是PDCPU(PD_PSO),PDSYS(PD_AW_ON)和PDCPU_MEM。

在这里插入图片描述

这里把PDCPU子power domain中的Memory又划了一个单独的power domain。如果想再复杂点,还可以按照不同memory划分成多个memory的power domain

【思考题】PDCPU_mem这个Power Domain的powerplan应该如何设计?

这里的Memory需要选用自带power gating的memory类型,这些memory的端口也有类似power switch cell NSLEEP信号,用来控制memory的开和关。

在这里插入图片描述
在这里插入图片描述

所以这样的设计不仅要给PDCPU中的power switch cell串链,还需要给memory串链。

假如所有Memory是串在一条chain上,那么大体上串链的结果如下图所示。稍微有点sense的数字后端工程师看到这里就知道此时会有max transition violation。

在这里插入图片描述

低功耗设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?

图片

这些max transition violation主要出现在以下几个地方。

左侧memory和右侧memory进行chain连接的net

memory_req和memory_ack信号(第一颗memory和最后一颗memory)

【思考题】memory_req和memory_ack信号在PDSYS Domain中是否需要插always on buffer? Memory之间这根串链信号在PR阶段是否需要特殊处理?为什么?

对于两个power domain中的power switch cell串链,需要留意到PDSYS Power Domain也是需要power off的,只不过它比PDCPU更AON(PDCPU OFF,PDSYS ON)。所以这两个power domain内部的power switch cell链不能串在一起,串链控制信号也必须从外部单独提供。

在这里插入图片描述

此外,还可以时序要求,把PDCPU和PDSYS做成两个Voltage Domain即两边工作电压不一样。此时upf还需要描述这两个domain边界处的Level Shifter 的约束。

对于从PDCPU—> PDSYS这个方向的接口信号,需要让工具添加ELS(Isolation cell + LS)。

对于从PDSYS—> PDCPU这个方向的接口信号,只需要插普通的LS。

在这里插入图片描述

【思考题】Enable Level Shifter Cell是应该选用source还是destination类型的?

在这里插入图片描述

另外还需要注意isolation cell和level shifter cell的摆放要求。比如isolation cell到底应该放在哪个power domain?isolation cell或Enable Level Shifter Cell的input pin是否可以插普通buffer?

在这里插入图片描述

而且PR后端实现做完还需要去检查对于PD_PSO这个power domain所有输出的接口是否都有插上isolation cell。

在这里插入图片描述


http://www.ppmy.cn/server/142663.html

相关文章

Scala的Set集合

//设置一个Book。有三个属性:书名,作者,价格 class Book(var bookNmame:String,var author:String,var price:Double){} object demo7 {def main(args: Array[String]): Unit { // val set1 Set(1,1,2,3,3) // println(set1)//创建可…

背景替换大模型图像处理gradio部署服务

愿我们终有重逢之时,而你还记得我们曾经讨论的话题。 group 868373192 second group 277356808 1. 导入库 import gradio as gr from PIL import Image from modelscope_studio import encode_image, decode_image, call_demo_service import json import os from…

HP G10服务器ESXI6.7告警提示ramdisk tmp已满

物理服务器是HP G10 VCENTER内两台服务器报错提示ramdisk"tmp"已满,无法写入文件 登录ESXI命令行后发现两台主机的/tmp目录都没有空间了 定位到是ams-bbUsg.txt文件占用了大量的空间 1、关闭集群的DRS功能 2、迁移当前主机上面运行的所有虚拟机至其他主…

传奇996_22——自动挂机

登录钩子函数中执行 callscript(actor, "../QuestDiary/主界面基础按钮/主界面基础按钮QM", "基础按钮QM")基础按钮QM执行了已下代码 #IF Equal <$CLIENTFLAG> 1 #ACT goto PC端面板加载#IF Equal <$CLIENTFLAG> 2 #ACT goto 移动端面板加载…

Redis下载历史版本

Linux版本&#xff1a; https://download.redis.io/releases/ Windows版本&#xff1a; https://github.com/tporadowski/redis/releases Linux Redis对应gcc版本

Javamail发送Excel附件具体实现

在我写大学生高考志愿填报的时候&#xff0c;将推荐出来的专业表的信息发送到指定的账户的邮件中 下面代码的实现讲解&#xff1a; 首先创建配置文件&#xff0c;配置邮箱账户的信息配置用于生成表格的实体类&#xff0c;实体类中的信息就对应着Excel表中的信息逻辑的具体实现…

Python 打包教程:从零开始构建可分发的Python包

Python 打包教程&#xff1a;从零开始构建可分发的Python包 引言 在Python开发中&#xff0c;打包是一个重要的环节。无论是共享代码、发布库还是部署应用&#xff0c;创建一个可分发的Python包都是必不可少的步骤。本文将详细介绍如何打包Python项目&#xff0c;涵盖从基础知…

11.12.2024刷华为OD-集合的使用,递归回溯的使用

文章目录 HJ41 集合的使用HJ43 迷宫问题--递归回溯的使用语法知识记录 HJ41 集合的使用 HJ43 迷宫问题–递归回溯的使用 def dfs(x, y, path, grid):n len(grid)m len(grid[0])if x n-1 and y m-1:for cor in path:print("({},{})".format(cor[0],cor[1]))# 判断…