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

devtools/2024/12/28 20:58:37/

今天继续给大家分享下数字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/devtools/146203.html

相关文章

KOI技术-事件驱动编程(前端)

1 “你日渐平庸,甘于平庸,将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的,那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人,和他们斗了那么久,最终却要变得和他们一样,…

策略模式

一、定义 策略模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算 法的变化不会影响使用算法的客户。 二、实际应用 当前有一个抽象类 鸭子 (Duck ),其中有叫声&#…

git revert

git revert 是 Git 中的一个命令,用于创建一个新的提交,该提交会撤销(或“反转”)之前某个特定提交所做的更改。这个命令非常有用,因为它允许你在不改变项目历史的情况下,撤销某个提交的更改效果。 git re…

【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现

乐企版式文件生成工程,涉及到多个票种,不乏特殊票种的生成,如果每个特殊票种都单独写逻辑,那整个代码写起来体量就不得了,如何实现代码逻辑的同时也更优雅的实现代码扩展性呢,您接着往下看。 使用设计模式 工厂模式 1、定义接口InvoiceFileService public interface Inv…

2025.01.15python商业数据分析

# # 一、 导入项目 import pandas as pd# # # 文件路径为python文件位置下的相对路径 dwx pd.read_excel("电商案例数据及数据说明/驱虫剂市场/电蚊香套装市场近三年交易额.xlsx", ) fmfz pd.read_excel("电商案例数据及数据说明/驱虫剂市场/防霉防蛀片市场近…

StarRocks 排查单副本表

文章目录 StarRocks 排查单副本表 方式1 查询元数据,检查分区级的副本数方式2 SHOW PARTITIONS命令查看 ReplicationNum修改副本数命令 StarRocks 排查单副本表 方式1 查询元数据,检查分区级的副本数 # 方式一 查询元数据,检查分区级的副…

详解VHDL如何编写Testbench

1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…

bash脚本观察程序状态

script % touch proc.sh script % chmod 755 proc.shproc.sh: #!/usr/bin/env bashSTATUS0if [ -z $1 ];then # 检查是否传了PID参数echo please enter a PIDexit 1 fiecho watching PID $1while [ $STATUS -eq 0 ] # 如果是我们初始的值,说明程序的状态还没有改变…