数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2Innovus)

吾爱IC社区星友提问:请教星主和各位大佬,对于一个模块如果不加干预工具会让inst挤成一团,后面eco修时序就没有空间了。如果全都加instPadding会导致面积不够overlap,大家一般怎么处理这种问题?

在数字IC后端设计实现中经常会有这方面的困扰。这也是小编在咱们社区IC后端训练营中一直强调每个步骤做完都要做physical方面的检查——congestion和density map review。

对于一个design结果,congestion的overflow太高会导致design绕不通,这点相信所有人都已经有共识了。那么density太高,会有哪些弊端呢?

1)后续Timing ECO无法做cell sizeup和buffer insertion
2)PT Dmsa Timing和PR Timing ECO后结果一致性差
3)Routing DRC
4)动态IR Drop差

那么我们在做数字后端PR实现时应该如何控制congestion和density的约束呢?

Innovus:

● 设置Module Padding

setPlaceMode -modulePadding 1.2

上面的mode setting相当于把指定module的面积扩大20%。

如果想要reset module padding的设置,我们可以把modulePadding值设置成1.0。

需要注意的是Module padding 仅仅对corase placer引擎有用,而且是一个soft constraint。如果希望工具在其他阶段比如refinePlace也honor这种约束,我们需要使用specifyInstPad来约束。而且还需要设置如下特殊的place mode setting。

setPlaceMode -place_detail_honor_inst_pad

● 均匀摆放

setPlaceMode -place_global_uniform_density true (对于设计density低于70%的更有用)

setPlaceMode -place_global_max_density 0.82

setOptMode -maxLocalDensity 0.75(隐藏变量)

ICC2:

下图所示为ICC2中没有使用congestion和density控制开关的实现结果。从图中可以看到局部区域congestion非常严重,而且module的cell非常聚集,设计中很多地方都是空的。

ICC2 Congestion Map &Density Map

在ICC2中是支持工具自动调整density和congestion约束值的。在place的log中往往能看到如下所示的信息。

Information: Automatic density control has selected the following settings: max_density xx; congestion_driven_max_utilization xx (PLACE-027)

如果我们发现工具自己调整的结果不理想,我们可以通过下面的app option将auto max density功能关掉,并设置上我们自己认为合理的约束值。
set_app_options -list [list plan.place.auto_max_density false]
place.coarse.max_density=0

set_app_options -name place.coarse.congestion_driven_max_util -value $util_value

set_app_options -name place.coarse.max_density -value $density_value

Standard cell均匀分布后的congestion map

● place.coarse.auto_density_control

默认true,工具会在不产生congestion的情况下尽量提高局部的cell density。如果我们发现工具最终做出来的density还是太高了,我们可以不让工具自己来调整density值。

● place.coarse.max_density

默认0,place时local density的最大值,遇到auto density control为true时工具会在不同阶段给出合适的max density值,当我们定义一个density值,工具会尽量按照这个约束值来做标准单元的摆放。

● place.coarse.congestion_driven_max_util

默认0.93,congestion driven的情况下,工具为了降低congestion区域的利用率,其周围的利用率最高可以堆到多少。如果当我们自定义的congestion值超过整个design的利用率,这个设置就失效了。

max_util来控制解congestion时,往四周推散cell的力度,最高不可以超过它。比如max_util=0.9,那么往周围推散cell时,周围的std cell密度(利用率)达到了0.9就停止推了,即使还没有完全解决congestion也会停下来。

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

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

相关文章

在 Python 中检查一个数字是否是同构数

更多资料获取 📚 个人网站:ipengtao.com 同构数,又称为自守数或自同构数,是一类特殊的数字,它们具有一种有趣的性质:将其平方后的数字,可以通过某种方式重新排列得到原来的数字。本文将详细介绍…

Schema Builder - Salesforce的图形化工具

Schema Builder这个工具最近几年接触Salesforce的宝们用到的很少,这里给大家简单介绍下: 1. Schema Builder是一个动态的环境,在这个环境里管理员能查看或更改组织内对象及对象之间的关联关系;如果一开始接触CRM可以通过这个图形…

Java安全 CC链1分析

Java安全之CC链1分析 什么是CC链环境搭建jdk下载idea配置创建项目 前置知识Transformer接口ConstantTransformer类invokerTransformer类ChainedTransformer类 构造CC链1CC链1核心demo1demo1分析 寻找如何触发CC链1核心TransformedMap类AbstractInputCheckedMapDecorator类readO…

【计算机网络】第七,八,九章摘要重点

第七章网络管理 1.计算机网络面临的两大威胁? 恶意程序有:计算机病毒,计算机蠕虫,特洛伊木马,逻辑炸弹,后门入侵和流氓软件。 2.安全的计算机网络四个目标: 机密性,端点鉴别&…

阿里云2024年活动优惠券领取和使用以及云服务器价格表

2024阿里云优惠活动,免费领取阿里云优惠代金券,阿里云优惠活动大全和云服务器优惠价格表,阿里云ECS服务器优惠价99元一年起,轻量服务器优惠价61元一年,阿里云服务器网aliyunfuwuqi.com分享阿里云优惠券免费领取、优惠活…

力扣:494. 目标和(动态规划)(01背包)

题目: 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 例如,nums [2, 1] ,可以在 2 之前添加 ‘’ ,在 1 之前添加…

Git学习笔记(第2章):Git安装

官网地址:Githttps://git-scm.com/ Step1:查看Git的GNU协议 → 点击“Next” Step2:设置Git的安装位置(非中文、无空格的目录) → 点击“Next” Step3:选择Git的选项配置(推荐默认设置) → 点击“Next” Step4:设置Git…

chatgpt国内使用网站(免费收藏级)

如果您认为本文对你有帮助,希望可以点赞收藏!感谢您的支持 下面我为你推荐我自己在用的gpt类工具,帮你在工作学习生活上解决一些大小问题 🎉智能GPT 地址: https://meet.adminjs.net 在他的详情中有详细的使用介绍&am…

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息,除了用WebSocket可实现,还有一种服务器发送事件(Server-Sent Events)简称 SSE,这是一种服务器端到客户端(浏览器)…

为vs code配置unity开发环境

1.安装.NET.Core SDK 我们可以访问官网下载安装SDK及tool(https://www.microsoft.com/net/download/core)下载。有的系统只提供了执行文件,没有提供安装包,需要自己做一些配置。 下载好对应的版本就可以安装了,安装好以…

Lua 快速入门 · 教程笔记

Lua语言快速入门 教程笔记 前言1. Lua 语言介绍2. Lua 语言基础之基本语法声明变量声明方法使用 if - else使用 for使用 while 3. Lua 语言基础之表4. Lua 语言基础之数组插入元素移除元素获取表的长度全局表 5. Lua 语言面向对象之复制表的方式面向对象实现继承和重写父类方法…

SpringMVC基础知识学习笔记

Universe Infinity Inc. 目录 一、学习SpringMVC主要是学什么1、SpringMVC的基本原理2、SpringMVC学习串联 二、快速体验SpringMVC的开发1、新建项目,转成web项目2、引入依赖3、编写Spring的配置类4、配置web启动类,替代web.xml5、编写Handler&#xff…