DEF

现在的综合一般分为logic synthesis和physical synthesis,为了让我们综合出来的netlist和PR做完place& route后的netlist有更强的correlation,目前都会采用physical synthesis

DC TOPO & DC Graphical

这是DC的两种综合模式,DC graphical相比DC Topo mode,有这更强的correlation,并且在综合阶段就考虑到congestion的问题;
我们会在后续的文章中介绍DCG 和DC Topo的区别!

Physical constraints

既然是physical synthesis,那么我们就需要读入physcial constraints,首先通过read_def读入事先准备好的def,然后通过extract_physical_constraints命令抽取DEF中的physical constraints;

下面详细介绍DEF中的相关内容

Macro Location & Orientation

顾名思义,macro location和orientation用于描述design中macro的摆放位置以及方向信息;
这些信息都在COMPONENTS中描述;

Keepout Margins

在marco和macro执念,有一些区域是不能做place的,我们需要在DEF中描述,通过HALO描述,如下

FIXED

这里的marco用来FIXED来描述,表示这个cell已经出于placed状态了,后续的操作都不能移动他;
另外,在DEF中,还会有其他的术语来描述cell的place状态,具体如下表

UNITS DISTANCE MICRONS

这个units的值并不是随便定义的,其值应该小于等于Tech lef中指定的值,通常情况下,两者的值应该是相等的,在先进工艺节点下,如果两者的值不相等,会造成VIA 偏移;
下面是DEF中的描述
UNITS DISTANCE MICRONS = 2000;
这里的2000并不是实际的距离,其意义为:
1um = 2000 units;
所以通过这个变量,可以根据DEF中的坐标信息,去计算实际的距离,计算方法为:
实际距离 = 坐标 / 2000;

Placement Bound

placement bound是一个约束,用于控制placement的摆放,通常情况下,在同一个bound区域内的cell,会摆得更近一点;
DEF中通过REGIONS来描述bound,并将指定的cell放入该bound中,这些cell通过GROUPS来指定,如下图所示

这里我们创建了c20_group这个placement bound,并指定其type为FENCE,以及相关的坐标;
另外,在GROUPS内指定了三个cell,这些cell关联的placement bound为c20_group,另外,这个bound为SOFT;

Port Location & Orientation

顾名思义,这个变量用于描述design的port的location和orientation信息,使用PINS描述;
例如

这里的port为hard_resetb,其net也是hard_resetb,direction为input,并且还指定了这个net所属的layer为M11;

Site Array Information

我们知道,site是DEF中最小的单位,用于摆放最小的cell,而ROW则由一行site组成,也可以称为site array,而site arrays就组成placement的area;

上图中的site为TS05_DST;

Routing Track

Tracks define the routing grid for standard cell-based designs,也就是tracks用于给standard cell做routing grid;
Tracks是走线的轨道,两条track之间的距离则是pitch;
提供tracks信息,可以更准确得预估congestion,可以让DC和ICC的结果更加接近;

Wiring keepouts

顾名思义,wiring keepouts指的是不能布线的区域

Site name matching

首先是site的定义,如下图

1、这里一行代表Row,而Row内部有很多小矩形,这些小矩形就是Site,也就是说,Row是由Site组成的;
2、工具在横向移动cell时,site最小的移动距离,也就是说,cell移动的距离不能比Site的横向宽度要小,并且移动的距离应该是Site的整数倍距离;
3、Site是最小的standcell的单位;

我们在综合过程中,会读入milkway reference lib,这个lib中也有site unit,DEF中也有site unit,如果两个site unit对应不上的话,需要进行下面的设置
set mw_site_name_mapping {def_site_name mw_ref_lib_site_name}

这里我们设置了三组mapping关系,分别是:
1、CORE & TS05_DST
2、Core & TS05_DST
3、core & TS05_DST
4、unit & TS05_DST

Blockage

Blockage意为阻塞物,在这里就是指防止工具触碰的区域。总的来说blockage可以分为两类:placement blockage和routing blockage。Placement blockage的区域禁止tool摆放cell进来,routing blockage的区域禁止绕线。需要注意routing blockage是要分层的,包括via层也可以上routing blockage。而placement blockage是和cell摆放相关,就不会分层;

Hard & Soft & Partial Blockage

Hard pblk区域是tool不论在任何阶段都不能放cell进来,最终出来的database一定是没有任何cell在hard pblk里的,除非user手动加。Soft pblk指的是tool摆cell的时候不能摆进来,但是之后的legalization和optimization就可以放进来了。Partial pblk就是tool可以摆进来一定数量的cell,其面积不能超过partial pblk所规定的百分比;

Blockage的概念很简单,但确实能帮我们方便地指导tool的工作。比如在很多时候,我们不希望在某些区域出现std cell,我们就会上一些hard pblk。最常见的区域有macro的周围,macro与macro之间的narrow channel,以及macro与core边界围起来的区域,总之,一切可能发生congestion或者IR不好的区域都可以设置blockage;

这里参考了下面的文章:
原文链接:https://blog.csdn.net/weixin_52636726/article/details/122501706

Halo

Halo与Blockage有点类似,也称为或者keep out margin;它不是加在floorplan上的,而是加在特定instance上的。比如我给一个macro加了一个宽度1um的halo,它的作用其实也等效于加宽度1um的pblk;
但是halo是加载instance上的,意思是如果我们移动了instance,其halo也会跟着一起移动,永远保证它周围1um范围不会有cell;而pblk不一样,instance动的话和pblk没关系。
Halo能帮我们方便地处理某些情况,比如我们不希望某一类cell靠在一起,就可以给这类cell左右两边加halo;

OBS

在读取cell或者macro的lef的时候会出现OBS,它是obstruct的简写,其作用就类似于routing blockage。如果这个macro的出pin层就希望直接连via上去,不希望pin层有任何走线,这个macro在设计的时候可能就会把pin之外的所有区域盖上OBS,这样tool在绕线的时候就不会绕到OBS里,所以tool就一定会先打一个via在pin上,再连出来。如果绕线时发生了DRC,经常要检查一下是不是OBS在捣乱

原文链接:https://blog.csdn.net/weixin_52636726/article/details/122501706

Core Area & Die Area

在使用initialize_floorplan创建floorplan时,需要指定-boundary,例如
initialize_floorplan -boundary {{0 0} {800 800}}
这样就创建了一个800800(umum)的floorplan,这里的800*800是指floorplan的Die Area;
而往往Die Area和Core area往往会有一个gap,为什么呢?
答:
因为Core Area和site与row有关,Core area必须是Site宽度和Row高度的整数倍;
而我们在生成Die Area时往往不是Site和Row的整数倍,所以会造成两者之间有gap;
而这个gap我们可以通过**-core_offset**指定,例如
initialize_floorplan -boundary {{0 0} {800 800}} -core_offset {0 0.240}
这就意味着在core和die在Y轴方向上有0.240的偏差;
注意:
横向offset必须是site的宽度的整数倍,纵向offset必须是site高度的整数倍;
Site在tech lef或者tf文件中有定义;

这里有两种site:core和bcore,其中core的宽度为0.051,高度为0.210;bcore这个site的宽度为0.051,高度则为0.420;

Layers使用方法

在route时,需要用到layer,例如M0到M11,有12层layer,每层layer都有不同的使用方法!

M0 layer

通常来说,M0 layer往往用于做power rail,也就是VDD和VSS;

M1 layer

Legalize

在做place时,摆放cell时,需要判断该该cell是否legalized,那么判断cell是否legalized的条件是啥?
答:
1、首先要判断cell是否在Row上;
2、cell要和site对齐,在横向移动cell时,需要移动的距离应该是Site的整数倍;
3、cell的宽度必须是site横向宽度的整数倍;
4、cell的高度必须是Site高度的整数倍;
5、不能和其他的std cell有overlap;
6、不能有spacing规则的违反;
7、cell orientation必须与Site规定的一致;

Cell orientation

Orientation也就是朝向,这里我们指的是std cell的朝向,cell的朝向会影响其pin的位置以及对应的连接关系;
对于已经摆放好的cell,可以通过orientation这个属性获取其朝向;
目前orientation允许的值包括:
1、R0
2、R90
3、R180
4、R270
5、MX
6、MXR90
7、MY
8、MYR90
其中,R0,R180,MX,MY用的比较多;
那么这些值代表的实际意义是什么呢?
答:
R所代表的的意义就是Rotate,也就是转,后面的数字就是代表这个Cell转多少度;
M则是Mirror的意思,就是镜像,MX也就是以X轴做镜像,MY则是以Y轴做镜像;

为什么做cell orientation会失败?

Site & Row是有legal orientation的,也就是当前Site所允许的orientation是有限制的,比如说这个site的legal orientation只允许R0这个orientation,那么我们对这个cell做其他类型的orientation就会失败;

那么能不能添加site的legal orientation呢?
答:
可以,在tech lef中我们可以查询site的信息,如下图
这里可以看到core这个 SITE的SYMMETRY为Y,也就是说这个SITE是支持Y轴镜像的,如果是X则支持X轴镜像;如果是X和Y,那么是X轴镜像和Y轴镜像都支持;
再通过set_attribute设置其symmetry为Y,这个site支持的legal orientation变为:RO和MY了!

End Cap

Place Route相关相关推荐

  1. IP、Route相关命令基础知识

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  2. SAP Spartacus全局配置里和路由Route相关的配置

    在configuration.service.ts里查看config对象: 展开routing字段: 所有路由配置信息都在里面: 和产品相关的路由信息: 要获取更多Jerry的原创文章,请关注公众号& ...

  3. 最快学习之Vue Route

    Vue Router , Vue.js 的官方路由管理器. 传统应用下的Vue Router演示 传统Web开发通过<script>标签引入js 文件, Vue和Vue Router也可以 ...

  4. 一台电脑内外网同时上网route配置方法

    内外网同时上配置路由 1. 网卡A(外网) •网关 192.168.1.1 2. 网卡B(内网) •网关 172.16.1.1 •IP 172.0.0.0(代表172开头的所有IP) •子网掩码 25 ...

  5. kong笔记——Service、Route路由功能

    kong笔记 目录导航 在上两篇文章,我们主要介绍了kong的概念以及kong的部署,相信大家对kong已经有了基本认识,那么我们该如何使用它呢? kong的功能有许多,我们一个一个来,先从kong的 ...

  6. Linux内核网络栈1.2.13-route.c概述

    参考资料 <<linux内核网络栈源代码情景分析>> route路由表概述 在IP协议的实现中,只要发送数据包都要查询路由表,选择合适的路由选项,确定下一站的地址,并构造MAC ...

  7. .NET/ASP.NET Routing路由(深入解析路由系统架构原理)

    阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4 ...

  8. 【详细教程】教你如何使用Node + Express + Typescript开发一个应用

    Express是nodejs开发中普遍使用的一个框架,下面要谈的是如何结合Typescript去使用. 目标 我们的目标是能够使用Typescript快速开发我们的应用程序,而最终我们的应用程序却是编 ...

  9. MVC Controller与ActionResult的返回值

    Action的要求 • 必须是一个公有方法 • 必须返回ActionResult类型 • 必须是实例方法 • 不能是范型方法 • 没有标注NonActionAttribute • 不能被重载(over ...

最新文章

  1. es dsl java api_ElasticSearch 系列 - RestFulAPI(DSL)
  2. oracle中create table with as和insert into with as语句
  3. map python2 python3 兼容_windows下 兼容Python2和Python3的解决方法
  4. php可变数量的参数
  5. Wilcox:子类化顶级窗口
  6. linux 简单Shell程序设计,利用linux下的c语言编程来简单的实现一个shell功能实现!...
  7. 未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...
  8. NIM的完整形式是什么?
  9. Android 系统开发系列二
  10. cv2不能读取中文路径
  11. 学习笔记——Servlet原理
  12. host地址切换工具-SwitchHosts
  13. Python人脸检测实战之疲劳检测
  14. 大数据教程,大数据实战教程,大数据教程电信信号强度诊断项目实战
  15. b51显微镜_1112-揭开微观世界的奥秘--显微镜发明的科学历程
  16. Java之网络编程(一)
  17. 能拿驾照就能通过 Elastic 认证考试!
  18. 联阿里接腾讯,B站如何实现“意义非凡”的一年
  19. 解决js获取当前时间精确到秒并格式划成数字(20200712120610)
  20. java excel 导入 格式转换_【转】JAVA实现EXCEL的导入和导出(二)

热门文章

  1. Linux - 第18节 - 网络基础(传输层一)
  2. java中如何定义一个_java中如何定义一个方法
  3. Spring Cloud学习笔记(一)概要
  4. DS1820时序分析
  5. 海康威视iVMS综合安防系统任意文件上传漏洞复现(0day)
  6. Houdini 17正确安装方法
  7. 计算机岗位需要具备什么技能点
  8. PCI相关(4)- PCIe总线事务-TLP格式及路由
  9. Qt编写物联网管理平台30-用户登录退出
  10. wps,word缩印怎么设置