数字IC后端PPA优化| Timing一致性调整方法和Module Region规划方法

Q1:直播课经常讲到一致性,这个一致性的话一般是指place,CTS和PT的derating time,uncertainty和transition吗,我大概知道innovus的uncertainty设置要比PT里面高一点,但具体设计时这几部分的大小应该是一个什么样的关系或者需要大多少,这个有没有一些经验值?

我们一般讲的Correlation有Timing Correlation和Physical Correlation。

下面这张图是我之前分享的一个后端实现全流程思维导图,其中就把correlation按照Timing和Physical两个大方向进行划分(添加微信ic-backend2018免费领取这份思维导图)。

在这里插入图片描述
数字IC后端实现之Setup Violation修复案例(Data&Clock Tree ECO修复手段)

Timing Correlation又分PR实现不同阶段之间的时序一致性。

比如Placement做完setup wns是-0.1ns,长clock tree优化时序后setup wns是-0.25ns,这种就是典型的两个阶段之间的timing不一致!

那为何要追求一致性呢?因为长clock tree后的timing比较差,而这个情况在placement阶段工具压根没看到,那自然就不会做优化,即placement优化不到位。

我们最理解的结果是placement做完,CTS做完clock tree后timing情况就应根据接近于placement后的结果。

这两个步骤的差别是placement阶段clock还是ideal的(时钟从root到sink的时间为0),而CTS做完各个sink的到达时间是不一致的,所以它们差一个clock skew!

手把手教你如何分析debug Clock Skew高达上ns的案例

那我们是否可以在placement阶段提前把后续CTS阶段的clock skew考虑进来呢?答案是可以的。

在这里插入图片描述

我们在placement阶段可以设置一个更大点的clock uncertainty。

这个也就是咱们经常看到的placement clock uncertainty = Clock Jitter +预估clock skew +Timing Margin。

我们应该尽量让工具在placement阶段就把标准单元摆放到最佳的位置上,并把时序一步优化到位。后续其他阶段仅仅是针对实际clock skew和实际走线带来的一些时序变化进行的时序优化。这个优化过程可以比较轻松实现。

这样实现出来的结果我们可以把PR每个阶段的density控制在一个数量级!

PR是基于逻辑连接的物理实现的过程,它里面用的delay计算engine和RC抽取engine肯定和Starrc,PT是不一样的。所以PR和PT之间的一致性也是我们需要关注的。

而我们知道delay就分两种,分别是cell delay和net delay。

在这里插入图片描述

所以这两个阶段的timing一致性可以在PR阶段通过以下几个方法来调整(PT中对应值是不能改的)。

1)调整clock uncertainty

2)调整考虑OCV设置的set_timing_derate值

3)调整RC Scale Factor系数

而physical一致性主要指两边的routing drc结果是否比较接近。

IC后端项目案例 | Innovus DRC Violation分析及Floorplan合理性分析

Q2: Place阶段有时候出现critical path不在dpu里面需要设置region,想请问这个region是针对什么设置的,我不知道里面应该放什么。因为我想直接在place阶段就设置好region,如果这样可以的话在core的不同部位这个region里面应该摆什么?比如说给一个dpu设一个region它应该放在core的哪一个部位?

Region一般是针对某个module来设置的。以咱们T28 a7core直播课讲的这个案例为例,u_ca7pfu这个module工具自动摆放后被拆成两部分。这时候我们可以把这个module做成一个region,规划在中间那个位置。 DPU模块一般是位于远离io port那个对角位置,靠近DDATA SRAM。

在这里插入图片描述

添加region的的脚本命令如下所示。

set cells [dbGet top.insts.name u_cortexa7noram/u_ca7pfu* -p]
set cells_name [dbGet $cells.name]
createInstGroup PFU
addInstToInstGroup PFU $cells_name
createRegion PFU {300 300 500 600}

我们还可以根据设计的data flow和官方推荐的module分布来精细化规划每个module的摆放位置。

ARM Cortexa7core 模块分布图

数字IC设计实现之分段长clock tree典型案例(clock tree synthesis)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918464.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子电气架构 --- 软件定义汽车的驱动和挑战

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

机器学习——10 支持向量机SVM

1 支持向量机 1.1 故事引入看下图左边,蓝色和红色的点混在一起,这就像一堆数据,没办法用一条简单的直线把它们分开。再看下图右边,有一条直线把蓝色和红色的点分开,这就是SVM在找的“决策边界”,它能把不同…

若以微服务部署踩坑点

windows docker desktop 部署nacos mysql1、docker部署nacosdocker pull nacos/nacos-server:v2.4.3docker启动命令 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privilegedtrue --network bridge -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMm…

Lua基础+Lua数据类型

Lua基础 Lua介绍 特点:轻量、小巧。C语言开发。开源。 设计的目的:嵌入到应用程序当中,提供灵活的扩展和定制化的功能。 luanginx,luaredis。 环境安装 windows上安装lua: 检查机器上是否有lua C:\Users\cpf>lua lu…

基于VuePress2开发文档自部署及嵌入VUE项目

最近在搞前端开发帮助文档,转了一圈发现Vue提供了一个高性能的、Vue驱动的静态网站生成框架-VuePress。VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容(如文档、博客等),然后 VuePress 会生…

Flask初步学习

文章目录一、初识Flask1.1 Pycharm修改环境配置1.2 运行第一个flask项目1.3 获取数据请求1.3.1 动态路由参数一、初识Flask 1.1 Pycharm修改环境配置 file——settings——project——python Interpreter——add interpreter——add local interpreter 1.2 运行第一个fla…

word的正则替换

word查看选中了几行 word替换掉空行 替换空行 按下 “Ctrl H” 组合键打开 “查找和替换” 对话框,在 “查找内容” 框中输入 “pp”,“^p” 代表段落标记,两个 “^p” 表示连续的两个段落标记,即空行。在 “替换为” 框中输入 “…

Spring Framework源码解析——DisposableBean

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl一、概述 DisposableBean 是 Spring 框架中用于定义 Bean 销毁时回调行为的核心接口之一。它提供了一个标准化的钩子方法 destroy(),允许 Bean 在容器关闭或作用域…

linux安装和使用git

Linux 上安装 Git 在 Linux 上安装 Git,你可以按照以下步骤进行: 打开终端:打开你的 Linux 终端应用程序。通常可以通过在应用程序菜单中搜索 "Terminal" 或 "终端" 来找到它。 更新软件包列表:运行以下命令…

数字图像处理4

预处理——ROI——形态学处理形态学处理形态学变化只能在二值图上处理1.腐蚀Erode对kernel映射的区域做与操作,包括自己在内如果有0则中间赋值成02.膨胀Dilate对kernel映射的区域做或操作,包括自己在内如果有1则中间赋值成13.其他操作开操作:…

Solon v3.4.3 发布(国产 Java 应用开发生态基座)

Solon 框架! Solon 是新一代,Java 企业级应用开发框架。从零开始构建(No Java-EE),有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议,是“杭州无耳科技有限公司”开源的根级项目&#xff…

Spring-Security-5.7.11升级6.5.2

1.Session Management 1.1.必须明确调用SecurityContextRepository保存SecurityContext 在Spring Security 5中,默认行为是SecurityContext使用SecurityContextPersistenceFilter自动保存到SecurityContextRepository。 //版本5.7.11 //SecurityContextPersisten…

docker下载安装和使用(Hyper-V方式)

1.环境准备 左键单击电脑左下角开始按钮—>点击“设置”—>搜索“Windows功能”—>启用或关闭Windows功能—>勾选Hyper-v,启用后电脑会重启,安装环境配置成功。 选择 Hyper-v2.下载docker docker官网下载地址:https://www.docker…

【消息队列】RabbitMQ “消息队列模式” 以及NET8集成

在 .NET 8 中集成 RabbitMQ 消息队列,可以使用官方推荐的 RabbitMQ.Client 库或封装好的 MassTransit/EasyNetQ 等高级库。以下是 RabbitMQ 的基本集成代码 和 常见消息模式 的实现。 RabbitMQ 本身并没有直接支持延时消息的功能,但是可以通过一些机制来…

Docker 镜像常见标签(如 `标准`、`slim`、`alpine` 和 `noble`)详细对比

以下是 Docker 镜像常见标签(如 标准、slim、alpine 和 noble)的详细对比,涵盖基础系统、体积、适用场景及注意事项:1. 标准镜像(无后缀) 基础系统:完整 Linux 发行版(如 Debian、Ub…

(1-9-2)Java 工厂模式

目录 1.设计模式与分类 2. 工厂模式 2.1 工厂模式概述 2.2 简单工厂 2.3 学生推荐就业Demo 00.项目目录 01. 创建抽象接口Job 02. 创建实体类 03. 创建推荐工作工厂类 04. 创建学生推荐就业客户类 3. i18n国际化语言标题自适应 00. 实现效果 01. 创建抽象接口 02…

QT远程开发技巧

交叉编译时野火提供的文件 交叉编译器 GNU官网可以下载, QT库文件这里给的QT-everyWhere版本,是开源版本需要自行编译。(远程服务器通常是PC架构【AMD64】,直接apt-get install下载的qt也是Pc架构的,不能直接在板卡【ARM64】上运行,必须对源码交叉编译) 注意QT遵从GPL开源…

Linux操作系统从入门到实战(十九)进程状态

Linux操作系统从入门到实战(十九)进程状态前言一、什么是进程状态二、状态本质三、最核心的3种状态1. 就绪状态2. 运行状态3. 阻塞状态四、状态变化的核心1/两种资源如何影响状态?五、操作系统怎么管理这些状态?六、Linux里结构体…

容器技术之docker

容器技术之Docker一、什么是Docker二、为什么会出现Docker2.1 环境一致性问题2.2 虚拟化技术的局限性2.3 微服务架构的兴起三、重要概念3.1 什么是镜像3.2 什么是容器3.3 总结:3.4 Docker仓库四、安装Docker(Ubuntu系统下)1.卸载老的版本2.更…

数据结构与算法:树状数组

前言 太难了…… 一、树状数组使用场景 树状数组一般用来维护可差分的信息,比如累加和,累乘积等。举个例子,当整个数组的累加和为sum1,一个区间内的累加和为sum2,那么除了这个区间剩下部分的累加和就是sum1-sum2&am…