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

本文主要是介绍低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下图所示为咱们社区低功耗四核A7 Top Hierarchical Flow后端训练营中的一个案例,设计中存在若干个Power Domain,其中Power Domain2(简称PD2)为default Top Domain,Power Domain1(简称PD1)为一个需要power off的domain,PD1和PD2为同一个Voltage Domain,Power Domain3也是一个需要power off的domain,且它的工作电压是VDD1。

数字IC后端低功耗设计实现案例

数字IC后端设计零基础快速入门(附数字IC后端设计实现培训视频)

数字IC实战后端项目| 必须掌握的28个SoC低功耗项目经验!

对于这样的low power设计需求,每个数字IC后端工程师都应该能够写出对应的power intent约束文件upf文件。

这个案例在实际IC后端项目中也是非常常见的。下面小编根据这个案例分享下常见的几个问题。

1)Always On Buffer的Secondary PG Pin连接错误

PD1内部是可以使用Aon Buffer的,但它的Secondary PG Pin只能连接到VDD这条net上,而不能连接到VDD1上。Innovus的upf flow是support自动插Aon Buffer,并且把secondary pg pin连接到global VDD net上。

但工具很容易出现一些问题,比如从PD2的一根信号经过PD1,并且插入若干颗buffer/inverter,最后再穿出到PD2。但这几颗buffer/inverter有可能是如下几种情况:

  • 普通buffer/inverter
  • 使用aon buffer但secondary pg pin连接错误(PD2内的aon buffer secondary pg pin连接到VDD1)

数字IC秋招笔试面试必备 | 低功耗设计实现十大灵魂拷问

所以,为了避免这个问题,我们通常可以不让这根信号穿到PD1内部。具体方法可以使用upf来约束。

update_power_domain –name PD1 –user_attributes {disable_secondary_domains {PD2 PD3}}

create_power_domain PD1
-supply {primary}
-supply {extra_supplies “” }
-include_elements

史上最全的数字IC后端设计实现培训教程(整理版)

2)Always On Buffer in 相对Aon Domain

下图黄色所示为PD2内一根普通信号,但在做完placement后发现这条net上有很多AON的buffer和inverter。即便这个PD2是一个power off的 power domain,这根信号上也只需要普通buffer即可。

如果出现这种情况,最终的low power验证clp或mvrc都会报出相应的violation。

低功耗upf flow always on domain插aon buffer案例

3)Common Buffer in Power Off Domain

在数字IC后端低功耗设计实现中,我们会经常下图绿色标注的timing path,其中有两个普通buffer是在PD1内。这明显不符合低功耗设计实现的power约束。

在这里插入图片描述

盘点Power Switch Cell在实际项目中应用注意事项

【思考题】Power Domain1和Power Domain3之间的最小间距应该如何预留?为什么?

通常出现这种情况,我们需要重点检查upf文件中的pst state描述,查看各个power domain的开关应用场景是否描述完整准确。

低功耗后端设计实现UPF文件

在这里插入图片描述

4)跨Power Domain绕线问题

下图所示为一根从PD1中cell B的输出连接到PD3的cell C输入端信号对应的routing走线。这条net工具走线时跨越在PD2上,当这条net出现max transition时我们是不好修的。

在这里插入图片描述

因此,我们需要通过设置如下绕线和opt的mode来控制工具走线。下图所示为施加特殊routing constraint约束后的绕线结果。很显然,这根信号的走线没有跨在PD2上。

setRouteMode -earlyGlobalHonorMsvRouteConstraint true
setNanoRouteMode -routeHonorPowerDomain true
setOptMode -addAOFeedThruBuffer false

在这里插入图片描述

5)各大Power Domain形状切分原则

下面通过几个case来分享低功耗后端设计实现过程做模块partition时应该遵守的几大原则。

Case1: Power Domain形状尽量规则

通常情况power domain的形状(子模块单独harden模块)要尽量规则,特别是timing和routing都不太好做的设计。

下图左侧存在大量拐角及窄channel都是一个不好floorplan的表现。右侧所示的模块切分相对更好,但这种L型的形状在模块直角转弯处也非常容易有timing和routing问题。

在这里插入图片描述

Case2: 避免Macro或Blockage放置在Power Domain中间区域

这个就是我们一直提倡的摆放Macro的方法或原则——Macro尽量摆放在模块或Power Domain的边界处。所以在做模块或Power Domain切分时需要考虑好内部Macro的情况,特别是那种宽度或高度个别大的Macro。

在这里插入图片描述

Case3: 避免thin channel的PD

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

Case4: Power Domain边界处尽量不要摆放Default PD的Memory

当PD1接口信号要往左下角出来和Default PD进行交互时,PD1边界处的Macro会挡住标准单元的摆放和阻挡接口信号线的routing。

在这里插入图片描述

而且我们知道PD1接口出来的信号还需要插isolation cell,如果这类isolation cell被摆放至图中的黄色区域,肯定会有max transition violation。不巧的是这类信号对应的net还必须设置dont touch。

这篇关于低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951014

相关文章

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2