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

server/2024/12/27 13:33:09/

今天继续给大家分享下数字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.ppmy.cn/server/153628.html

相关文章

在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)

人无完人,持之以恒,方能见真我!!! 共同进步!! 文章目录 一、翻译环境和运行环境二、翻译环境1.编译预处理编译汇编 2.链接 三、运行环境 一、翻译环境和运行环境 在 ANSI C 的任何⼀种实现中&am…

单片机与MQTT协议

MQTT 协议简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布 / 订阅(publish/subscribe)模式的 “轻量级” 通讯协议,该协议构建于 TCP/IP 协议上&#xf…

HDLBits训练4

时间&#xff1a;2024.12.23 Dff8ar 代码 注意敏感信号的写法 module top_module (input clk,input areset, // active high asynchronous resetinput [7:0] d,output [7:0] q );always(posedge clk or posedge areset)beginif(areset) q<8b0;else q<d;end endmodul…

CSS基础-长度单位

&#x1f496;简介 在CSS中&#xff0c;长度单位分为绝对长度单位和相对长度单位。这些单位用于定义元素的尺寸、边距、填充、字体大小等属性值。 ⭐绝对长度单位 绝对长度单位指的是那些无论环境如何变化&#xff0c;其值都是固定不变的单位。它们通常适用于需要精确控制尺寸…

JS 中的作用域与变量提升

JS中有两种作用域 一个是全局作用域 一种是函数作用域 全局作用域声明的属性 哪里的可以访问 console.log(a) //undefind var a 0 vat b 1 console.log(a) // 0 函数作用域中声明的属性只能在函数中访问&#xff08;如果在外部访问就会爆错&#xff09; console.log(a) //…

2. FPGA基础了解--全局网络

前言 引入扇出的概念介绍FPGA中的全局网络为后续时序优化埋下伏笔 扇出 在FPGA设计中扇出是一个重要的概念&#xff0c;所谓的扇出就是一个控制信号所能控制的数据信号的总个数&#xff0c;比如ctrl信号的扇出就是16 reg ctrl 0; reg [15:0] out 0; always (posedge c…

低压降稳压器(LDO)典型特性压降

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、什么是压降 压降电压 VDO 是指为实现正常稳压&#xff0c;输入电压 VIN 必须高出所需输出电压 VOUT(nom) 的最小压差。请…

THREE.js 入门(六) 纹理、uv坐标

一、uv坐标 相当于x、y轴&#xff0c;通过自定义uv坐标可以截取所需的纹理范围 <template><div id"container"></div> </template><script setup> import * as THREE from "three"; import { onMounted } from "vue&…