数字后端培训项目Floorplan常见问题系列专题续集1

news2025/2/7 19:35:57

今天继续给大家分享下数字IC后端设计实现floorplan阶段常见问题系列专题。这些问题都是来自于咱们社区IC后端训练营学员提问的问题库。目前这部分问题库已经积累了4年了,后面会陆续分享这方面的问题。
希望对大家的数字后端学习和工作有所帮助。

数字后端项目Floorplan常见问题系列专题

  1. 脚本中macro边加的是addHaloToBlock ,用placeBlockage 也可以吧,两者区别是什么呢?

两者功能是一样的。只不过addHaloToBlock会跟着macro走的,即挪走macro对应的halo会跟着走。

  1. 昨天训练营直播课有个同学提了一个问题 “FloorPlan阶段如何科学地预估每个Marco的走线资源与走线空间”,我想直白些问,怎样预估两个memory 之间的间距,简单举个例子具体说明吧。

这里需要先预估macro中间有哪些线可以用来绕信号线,比如只有纵向的M6可以绕的话,就根据M6的最小pitch,乘上macro的pin数量,得到这些信号线的总线宽,再加上一定的余量预估间距即可。

如果可用的绕线层更多,也是用同样的方法,平均下来再加上一定的余量进行测试。

假设macro的间距是5um,macro绕线全走中间的通道。以左图为例,Macro有30个pin,而M6的pitch是0.1um,那么30个pin全部用M6绕线的话,需要3um的间距,那么5um的间距是足够的。但是如右图所示,如果两个相同的macro相对而放,那么pin的数量就是60个,所需要的间距就是6um,5um明显就不够了。

memory channel大小估算方法

考虑macro身上也能绕线,假设macro的间距是5um,macro的宽也是5um,在不考虑macro的pg绕线情况下。以左图为例,Macro有30个pin,而M6的pitch是0.1um,那么30个pin全部用M6绕线的话,需要3um的间距,那么macro加中间通道总共10um的间距是完全足够的。而如右图所示,如果两个相同的macro相对而放,那么pin的数量就是60个,所需要的间距就是6um,15um的绕线资源也是可以完成绕线的。

在实际考虑Macro的绕线资源时,需要去掉macro本身已经用的金属层,比如一般情况下M1到M4都是macro的内部绕线层,而M4是pg network。那么M4以上的金属层就可以拿来给macro绕线,当然这里需要剔除powerplan用到的资源进行综合计算。

一般情况下两个marco间的space更多是防止base layer drc,或者如果两个marco中间需要摆放标准单元,就需要留大点。

Core area相对于die_area 为什么要设置偏差值,偏差值一般设置成多少
为了避免port跟pg出现short的drc违例,一般我们会在core和die之间预留数倍row高度的空间来给port走线,这里给个参考值3。

  1. 其他形状的foorplan如何设置,如T形,U型的floorplan形状应该如何初始化?

ICC2中其他形状的floorplan可以用gui界面来设置,也可以参考gui界面给出的脚本。这里的2是指各条边的比例,工具会根据利用率和长宽比自动计算每条边的长度。也可以在Side size control选择Length,直接指定每条边的长度。其他的形状可以参考这个进行设置。

在这里插入图片描述

也可以用下面这个命令来initi 多边形的形状。

initialize_floorplan -boundary

  1. create_tap_cel1s -1ib_cell $tapcel1_ref -pattern stagger -distance 30 -skip_fixed_cells这条语句啥意思?

这句话的作用是摆放tap cell,主要作用是将Nwell连接到VDD,p-substrate 接到VSS,避免出现latch up。

Stagger是以棋盘的方式进行摆放,具体摆放见下方的箭头所示。
30是指每个row上两个tap cell的间距,这个需要大家查询design manual进行确定,这里给的值也希望大家思考合不合理。
-skip_fixed_cells是跳过macro cell进行摆放。

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

  1. 自己摆放floorplan怎么知道有没有DRC问题?或者需要check哪些东西?

macro之间的最小间距满不满足要求;
port之间的最小间距满不满足要求;

电源网络有没有出现drc的情况,比如via过孔满不满足要求;

strap的宽度和间距满不满足要求;

电源网络会不会跟port短路等情况;

做完floorplan和powerplan之后,可以插filler写出设计gds,然后进行calibre的drc检查。具体实现脚本见社区IC后端训练营脚本。

  1. upf在floorplan阶段不会使用吗?

本案例不使用upf。在做低功耗设计实现时可能会用到upf。
这里分享一个咱们低功耗四核A7 TOP hierarchical flow实现项目使用的golden upf模版。

低功耗upf语法及结构

  1. don’t_use怎么确定list?除了foundry规定的一些cell,根据经验吗?
    set dontuse_ref “/DEL
    /FILL
    /ANTENNA
    /DCAP
    /TIEH
    /TIEL
    /BOUNDARY
    /TAPCELL
    /BHD
    /CK
    /DCCK
    /D24BWP
    /D20BWP
    /D0BWP
    /G
    /INVD21 "
    这上面基本上就是一个参考设置了,DEL
    是延迟cell,主要用于修hold,但是它面积比较大;
    FILL
    是填充单元,只有在postroute之后才需要插入;
    ANTENNA
    是天线单元,只有在route阶段才需要开启;
    DCAP是去耦单元,用于改善IR drop,同样只有在postroute之后才需要插入;
    TIEH
    和TIEL是在place和优化过程中才需要使用,将逻辑0和1连接到VSS和VDD;
    BOUNDARY
    和TAPCELL只有在floorplan阶段才需要使用,后续都不再使用;
    BHD
    这个属于bus holde,本设计不需要使用。
    CK和DCCK是时钟相关的buffer和inverter,只有在cts阶段才能使用
    D24BWPD20BWPD0BWP属于最强和最弱的cell类型,大驱动的cell容易有em问题,最小驱动的cell驱动能力太弱,能提供的优化能力有限,而且不同corner下容易因process的偏差而出现timing不一致。
    G*属于ECO cell,这个需要根据实际使用情况开启。这种cell是在做function eco时用来替换普通ECO cell用的,flow中一般都禁用。
    上面只是提供一个参考,实际上项目中可能有其他don’tuse cell需求,这个需要根据实际情况进行调整。
    请注意,设计一开始就需要将上面的cell设置dontuse属性,在某个阶段需要用到上面某种cell的时候,需要先将他的dontuse属性去掉,才能正常使用,不用之后重新设置dontuse属性。

  2. def文件是怎么生成的?不应该是floorplan吐出来的吗?怎么是floorplan的输入了?

Def文件可以通过write_def命令写出。Def是记录各种物理信息的文件,可以包括blockage、macro、port、std cell和net的详细摆放信息;
大家需要在收到摆放完macro和port之后,输出一个def文件进行保存,下一次如果说想复现这一个方案,就不需要重新手动摆放,直接读取这个def文件即可。

  1. 读入DEF文件后diearea为0/1,这是否意味着DEF文件里并没有diearea信息,这是在后面的环节中才会得到吗?

在这里插入图片描述

Diearea信息是initial_floorplan提供的,def不提供这个信息。def文件中头文件都会有一个die size的坐标。如果通过defIn读入def,需要注意下两个版本的芯片尺寸大小是否一致的情况。

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

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

相关文章

【TaskBasics】- KRTS C++示例精讲(3)

TaskBasics示例讲解 目录 TaskBasics示例讲解结构说明 项目打开请查看【BaseFunction精讲】。 结构说明 TaskBasics:应用层程序,主要用于人机交互、数据显示、内核层数据交互等; TaskBasics.h : 数据定义TaskBasics.cpp&#xff…

jenkins集成工具(一)部署php项目

目录 什么是CI 、CD Jenkins集成工具 一、Jenkins介绍 二、jenkins的安装和部署 环境部署 安装jenkins 安装gitlab 配置镜像源进行安装 修改密码 安装git工具 上传测试代码 Jenkins部署php项目wordpress 发布php代码 安装插件 测试代码发布 实现发布成功发送邮件…

在交叉编译中,常见的ELF(elf)到底是什么意思?

ELF 是 Executable and Linkable Format 的缩写,中文翻译为“可执行与可链接格式”。它是一种通用的文件格式,主要用于存储可执行文件、目标文件(编译后的中间文件)、动态库(.so 文件)以及内存转储文件&…

图神经网络_图嵌入_Struc2Vec

0 背景 之前的node embedding方式,都是基于近邻关系,但是有些节点没有近邻,也有结构相似性。如图中的u、v节点。 struc2vec算法适用于捕获结构相似性。 1 相似度(距离)计算 1.1 公式 f k ( u , v ) f k − 1 ( u …

Linux内核中Typec CC检测原理及主从模式切换原理

一,Typec CC引脚定义 可以看到,数据传输主要有TX/RX两组差分信号,CC1和CC2是两个关键引脚,作用很多: • 探测连接,区分正反面,区分DFP和UFP,也就是主从 • 配置Vbus,有US…

uniapp通过v-if进行判断时,会出现闪屏?【已解决】

1.问题:按钮切换时,通过v-if来判断,会出现闪烁情况,影响用户体验 2.v-if 闪烁问题可能的原因 ‌条件切换频繁‌:如果 v-if 指令的条件在短时间内频繁切换,会导致元素不断被销毁和重新创建,从而…

webrtc获取IceCandidate流程

在WebRTC(Web Real-Time Communication)中,ICECandidate是一个关键概念,它用于描述在建立点对点(P2P)连接时可以考虑的潜在通信端点。以下是关于WebRTC中ICECandidate的详细解释: 一、ICECandidate的定义 ICECandidate对象通常包含以下关键属性: foundation:用于唯一…

计算机网络习题(第1章 概论 第2章 数据通信基础)

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 3…

Springboot项目下面使用Vue3 + ElementPlus搭建侧边栏首页

Springboot项目下面、在html 页面 Vue3 ElementPlus 搭建侧边栏首页 1、效果图 2、static 文件下面的项目结构 3、代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><…

【C++11】可变参数模版

目录 一、可变参数模版 1.1 基本语法及原理 1.2 包拓展 1.3 empalce系列接口 一、可变参数模版 之前我们在C语言中就学过可变参数&#xff0c;但是模版类型是固定的&#xff0c;怎么变呢&#xff1f;这里c11就给出了可变参数模版 1.1 基本语法及原理 C11支持可变参数模…

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…

我的秋招总结

我的秋招总结 个人背景 双非本&#xff0c;985硕&#xff0c;科班 准备情况 以求职为目的学习Java的时间大概一年。 八股&#xff0c;一开始主要是看B站黑马的八股文课程&#xff0c;背JavaGuide和小林coding还有面试鸭。 算法&#xff0c;250&#xff0c;刷了3遍左右 项目&…

C++:单例模式

创建自己的对象&#xff0c;同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…

RBTree(红黑树)

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的插入 1. 按照二叉搜索的树规则插入新节点 2. 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏 红黑树的检测 红黑树的删除 红黑树和AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&…

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口&#xff0c;各位可以关其它的或者打开其它端口测试&#xff0c;谨慎关闭22端口&#xff01;不然就会像我下面一样握手超时&#x1f62d;&#x1f62d;&…

Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…

AEO海关认证的注意事项

AEO海关认证的注意事项繁多且至关重要&#xff0c;企业需细致准备&#xff0c;确保万无一失。 首先&#xff0c;企业需深入研读相关政策文件&#xff0c;如《中华人民共和国海关注册登记和备案企业信用管理办法》及《海关高级认证企业标准》&#xff0c;以政策为指引&#xff0…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录&#xff0c;条件&#xff1a;某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

c++编译过程初识

编译过程 预处理&#xff1a;主要是执行一些预处理指令&#xff0c;主要是#开头的代码&#xff0c;如#include 的头文件、#define 定义的宏常量、#ifdef #ifndef #endif等条件编译的代码&#xff0c;具体包括查找头文件、进行宏替换、根据条件编译等操作。 g -E example.cpp -…

JS中的闭包和上下文

变量提升 和 函数提升 这里要提到一个提升的概念&#xff0c;即在JS中&#xff0c;在解析代码之前还有一个预处理的过程&#xff0c;这个过程中会把部分变量和函数声明提前到代码的最顶部&#xff0c; 会在其他所有代码之前执行。虽然当我们按照规范&#xff08;严格模式或者T…