Calibre 3Dstack --每日一个命令day1【die】(3-1)
Calibre 3Dstack --每日一个命令day2【component】(3-2)
Calibre 3Dstack --每日一个命令day3【stack】(3-3)
Calibre 3Dstack --每日一个命令day4【connect】(3-4)
Calibre 3Dstack --每日一个命令day5【config】(3-5)
Calibre 3Dstack --每日一个命令day6【process&export_layout】(3-6)
Calibre 3Dstack --每日一个命令day7【centers】(3-7)
Calibre 3Dstack --每日一个命令day8【connected】(3-8)
Calibre 3Dstack --每日一个命令day9【copy】(3-9)
Calibre 3Dstack --每日一个命令day10【custom_check】(3-10)
Calibre 3Dstack --每日一个命令day11【dangling_ports】(3-11)
Calibre 3Dstack --每日一个命令day12【density】(3-12)
Calibre 3Dstack --每日一个命令day13【enclosure】(3-13)
Calibre 3Dstack --每日一个命令day14【external】(3-14)
Calibre 3Dstack --每日一个命令day15【extra_ports】(3-15)
Calibre 3Dstack --每日一个命令day16【floating_pads】(3-16)
Calibre 3Dstack --每日一个命令day17【floating_texts】(3-17)
Calibre 3Dstack --每日一个命令day18【floating_trace】(3-18)
Calibre 3Dstack --每日一个命令day19【internal】(3-19)
Calibre 3Dstack --每日一个命令day20【locations】(3-20)
Calibre 3Dstack --每日一个命令day21【missing_ports】(3-21)
Calibre 3Dstack --每日一个命令day22【multi_texts】(3-22)
Calibre 3Dstack --每日一个命令day23【multi_trace】(3-23)
Calibre 3Dstack --每日一个命令day24【no_texts】(3-24)
Calibre 3Dstack --每日一个命令day25【no_trace】(3-25)
Calibre 3Dstack --每日一个命令day26【offgrid_centers】(3-25)
Calibre 3Dstack --每日一个命令day27【overlap】(3-27)
Calibre 3Dstack --每日一个命令day28【select_checks】(3-28)
Calibre 3Dstack --每日一个命令day29【unselect_checks】(3-29)
Calibre 3Dstack --每日一个命令day30【3dstack_block】(3-30)
stack
本文介绍了3D堆叠组装语法文件中的核心命令定义,重点说明如何指定各类对象的位置信息。主要内容包括:
-
必选参数-stack_name定义堆叠名称;
-
对象放置参数集(-die/-component等)及其子参数:-name(必选)、-anchor/-placement(互斥位置定义)、-mag/-rotate/-flip等变换参数;
-
层级(tier)定义和堆叠引用(stack_ref)方法;
-
特殊功能参数如-rename_text文本重命名、-ignore_pin引脚忽略规则;
-
示例展示了包含多个层级的堆叠定义,演示了位置、旋转、翻转等参数的组合使用。
该语法支持构建复杂的3D/2.5D封装结构,通过坐标变换和层级分组实现精确的器件排布。
3DSTACK+ 扩展语法文件中的必选命令 定义组装中各类对象的位置信息。
用法
tcl
stack -stack_name stack_name {die_stack | tier_spec | stack_ref }...
die_stack 用法
tcl
-die | -component | -package | -laminate | -substrate '{'
-name name
[-anchor anchor_name from_anchor_name to_anchor_name | -placement x y]
[-mag factor] [-rotate angle] [-flip {x | y}] [-invert]
[-rename_text {"expression"... | {-file file} }]
[-ignore_pin {"expression"... | {-file file} } ]
[-source source_name]
'}' [-z_origin value]
tier_spec 用法
tcl
-tier '{'
{die_stack | stack_ref }...
'}'
stack_ref 用法
tcl
-stack stack_name
参数
-
-stack_name stack_name必选参数集,指定用于规则检查命令的堆叠名称 。若多次指定此命令,每个stack_name的取值必须唯一。 -
-die | -component | -package | -laminate | -substrate '{' arguments '}'参数集,指定裸片、组件、封装、层压板或衬底的放置信息。其内部参数说明如下:-
**
-name name**必选参数集,指定一个放置实例。该对象必须已在文件中定义。 -
-anchor anchor_name from_anchor_name to_anchor_name可选参数集,指定锚定信息。-
anchor_name:指定已在堆叠中放置的对象名称。 -
from_anchor_name:指定为anchor_name对象定义的锚点名称。 -
to_anchor_name:指定为当前对象定义的锚点名称。-anchor与-placement互斥 。若两者均未指定,该对象将被放置在上一个指定裸片的位置。
-
-
-placement x y可选参数集,指定对象的放置位置。该位置由 x、y 坐标(x y)定义,单位为微米 。-anchor与-placement互斥 。若两者均未指定,该对象将被放置在上一个指定对象 的位置;若此前无已放置对象,默认位置为(0 0)。 -
-mag factor可选参数集,指定放置实例的放大 / 缩小因子。对象内的坐标数据将乘以该因子。 -
-rotate angle可选参数集,指定当前放置实例的旋转角度 。角度必须为 0 到 360 之间的整数。 -
-flip {x | y}可选参数集,指定当前放置实例的翻转轴。若从上方查看版图:-
沿 y 轴翻转:左侧图形移至右侧,右侧图形移至左侧。
-
沿 x 轴翻转:顶部图形移至底部,底部图形移至顶部。该选项不影响 裸片的
-top和-bottom层定义,但会影响裸片的放置坐标。
-
-
-invert可选参数,指示在当前放置实例中,顶层连接的层变为底层连接,底层连接的层变为顶层连接 。此时,若从侧面(横截面视图)查看版图,顶层的层将移至底层,底层的层将移至顶层。裸片的放置坐标不改变 ,但-top和-bottom层定义会被影响。 -
-rename_text {"expression"... | {-file file} }可选参数集,指定文本重命名规则。表达式为 GNU 正则表达式 。除了直接内联表达式,也可指定包含表达式列表的文件路径。文件中每行一个表达式,示例:/A/B/ /A.*B/R/ /^VDD.*/VCC/ /A/B/g -
-ignore_pin {"expression"... | {-file file} }可选参数集,指定一个表达式,用于匹配在版图提取中需要忽略的一个或多个引脚名称 。源网表中与被忽略版图引脚匹配的对应端口也会被忽略。该表达式为不区分大小写 的 GNU 正则表达式。除了直接内联表达式,也可指定包含引脚忽略表达式列表的文件路径。文件中每行一个引脚或表达式,示例:VSS VDD ^A1$ A2表达式选项与
-file选项互斥。注 若要在报告中列出所有成功忽略的引脚,请在
config -report参数集中添加-report_ignored_pins YES。详情参见第 103 页的-report。 -
-source source_name可选参数集,指定单元对应的源放置实例 ,功能类似于标准 Calibre 3DSTACK 中的map_placement命令。若源网表为层级化结构,则支持层级化名称,使用正斜杠 (/) 作为层级分隔符。示例:-
源网表的顶层单元名为
3DSTACK_TOP,包含一个子电路INTERPOSER_CHIP的放置实例,名称为INTERPOSER。 -
INTERPOSER_CHIP包含两个放置实例,名称为DIE1和DIE2。 -
若要映射到
DIE1,需指定层级化source_name为INTERPOSER/DIE1。
-
-
-
-tier '{' {die_stack | stack_ref}... '}'参数集,指定一个层级(tier) ,由放置在同一 z 坐标 的裸片和堆叠组成。层级提供了一种并排放置元素的方法。工具会对同一层级内的裸片放置实例执行额外的连接检查。 -
-stack stack_name参数集,指定在 Calibre 3DSTACK+ 规则文件中定义的堆叠名称 。同一个堆叠不能被引用多次。 -
-z_origin value可选参数集,指定裸片距离堆叠底部的高度 ,取值为距离(单位:微米)。此选项用于生成横截面组装视图。
说明
stack 语句定义了构建 3D 封装的组装操作 ,包括裸片放置实例的位置以及连接这些实例的接口层。堆叠代表任意一组垂直对齐的对象 。一个完整的 3D 堆叠可包含多个对象放置实例;在 2.5D 中介层方案中,每个堆叠由单个裸片放置实例和中介层组成;也可以存在包含多个堆叠的中介层,每个堆叠由多个裸片(或等效对象)放置实例组成。
对于 Calibre 3DSTACK,所有堆叠定义会被合并为一个单独的组装。
命令中必须至少指定一个裸片、堆叠或层级 ,且这些元素可被多次指定。堆叠参数的顺序决定了堆叠的结构 ,顺序为从下到上 ,但并不一定表示裸片放置实例之间存在交互。堆叠中每个后续元素都会被放置在 z 坐标大于前一个元素的层中。
-tier 选项用于并排分组元素------ 同一层级内的所有元素位于相同的 z 位置。该选项在连接检查时具有特殊含义.
注 裸片层之间的连接关系由层定义和裸片位置 隐式决定。若需显式定义连接关系,请使用
connect命令。
放置实例命名规则
生成的放置实例名称采用以下格式(尖括号 < > 不属于格式的一部分):
<stack-name>_tier<tier-index>_<die-name><placement-id>
其中:
stack-name:堆叠的名称。tier-index:层级在堆叠中位置的生成编号,从 1 开始,从堆叠底部到顶部,每个层级的编号递增 1。die-name:裸片的名称。placement-id:每个唯一层级 - 裸片对的标识编号。
示例
tcl
stack
-stack_name w_tier
-tier {
-die {-name RAM --mag 1.1 --flip x -placement 0 0}
-die {-name RAM --mag 1.1 --rotate 90 --flip y -placement 0 750}
-die {-name RAM --mag 1.1 --rotate 180 -placement 750 0}
-die {-name RAM --mag 1.1 --rotate 270 -placement 750 750}
}
-die {-name INT --invert --rotate 90}
-tier {
-die {-name MEM --anchor INT anchor_MEM1 anchor_INT -source pRam1}
-die {-name MEM --anchor INT anchor_MEM2 anchor_INT -source pRam2}
-die {-name MEM --anchor INT anchor_MEM3 anchor_INT -source pRam3}
}
-die {-name MEM --placement 100 100}
上述示例定义了一个名为 w_tier 的堆叠,包含以下裸片放置实例(为简化说明,每个裸片放置实例的高度均为 100):
-
前四个裸片构成一个层级:
-
RAM 裸片放置在
(0, 0, 0),放大因子 1.1,沿 x 轴翻转。 -
RAM 裸片放置在
(0, 750, 0),放大因子 1.1,旋转 90 度,沿 y 轴翻转。 -
RAM 裸片放置在
(750, 0, 0),放大因子 1.1,旋转 180 度。 -
RAM 裸片放置在
(750, 750, 0),放大因子 1.1,旋转 270 度。
-
-
INT 裸片 放置在
(0, 0, 100),旋转 90 度,且顶层与底层的层被反转。 -
接下来三个裸片构成另一个层级 ,并使用了
-source选项:-
MEM 裸片放置位置
(0, 0, 200),通过锚定定义计算得出。 -
MEM 裸片放置位置
(0, 500, 200),通过锚定定义计算得出。 -
MEM 裸片放置位置
(0, 1500, 200),通过锚定定义计算得出。
-
-
MEM 裸片 放置在
(100, 100, 300)。
忽略引脚
也可按如下方式指定忽略特定引脚:
tcl
stack -die { -name die -ignore_pin "VSS" }