Cadence SKILL由Cadence开发,用于在Cadence EDA中编写自定义工具和脚本,以增强Cadence EDA工具的功能和自动化设计流程。我们可以用SKILL语言编写脚本,实现布局、仿真、数据后处理、定制EDA界面等等。
在工作中可以使用SKILL脚本在virtuoso中自动化地绘制芯片版图,减轻工作量。本文以一个通孔阵列的自动化绘制为例,介绍实现流程。本文侧重于介绍操作流程,对于脚本代码细节将简单带过。
流程的第一步自然是启动Cadence Virtuoso。启动成功后看到virtuoso的CIW窗口。窗口下方有一个可以输入并执行SKILL命令的窗口,这是我们与virtuoso交互的地方,我们可以调节一下窗口让它更清楚一些。
点击「Tools > SKILL IDE」,启动SKILL脚本的IDE(集成开发环境,可以简单地理解为写代码的地方)。
在IDE里,我们就可以编辑SKILL脚本来实现想要的功能,此处的代码的功能是实现在当前的Layout cellview中绘制一个通孔阵列。
; 编写绘制通孔阵列的函数,然后调用,也可以在其他脚本中调用。
procedure(createViaArray(VIA_layer startX startY deltaX deltaY viaWidX viaWidY RowNum ColNum)
; 调用系统创建阵列的函数。
dbCreateViaShapeArray(
deGetCellView() ; ID of the technology cellview. 获取当前的cellview的ID。
VIA_layer ; .example: "VIA67"...Layer on which to create the via shape array. 指定要绘制的阵列的层。
techGetTechFile(deGetCellView()) ; ID of the net to add the via shapes to.
startX ; X coordinate of the starting point. 指定阵列的左下角在版图中的X和Y坐标、间隔、长宽、行列数等。
startY ; Y coordinate of the starting point.
deltaX ; Length along the X axis allocated to one shape, including the width of the rectangle and the space along the X axis between two adjacent rectangles.
deltaY ; Length along the Y axis allocated to one shape
viaWidX ; Width (along the X axis) of the rectangle.
viaWidY ; Length (along the Y axis) of the rectangle.
RowNum ; Number of rows along the Y axis.
ColNum) ; Number of columns along the X axis.
)
; 指定绘制通孔阵列函数的参数的值。
VIA_layer = "VIA67"
startX = 0.0
startY = 0.0
deltaX = 0.29
deltaY = 0.29
viaWidX= 0.19
viaWidY= 0.19
RowNum = 5
ColNum = 5
; 将函数的参数的值传入,并执行该函数。
createViaArray(VIA_layer startX startY deltaX deltaY viaWidX viaWidY RowNum ColNum)
完成代码后,命名并保存至某个目录下,保存后的完整路径为:「/home/.../procedures/Procedure_createViaArray.il 」。
现在我们需要开启一个版图cellview,来绘制通孔阵列。
回到CIW窗口,点击「Tools > Library Manager」,启动库管理器。在库管理器,点击「File > New > Cell View」,在弹出的「New File」中,「Type」选择「layout」,以新建一个版图cellview。
成功打开空白的版图cellview之后,我们在CIW窗口的命令行窗口中输入指令并按回车执行:
load "/home/.../procedures/Procedure_createViaArray.il"
这样,virtuoso就会运行我们保存在该路径下的脚本「Procedure_createViaArray.il」。此时版图cellview中成功绘制了一个通孔阵列,该阵列的行数、列数、间隔、长宽、所用的层均与我们脚本中所定义的相同。
成功绘制的一个关键点是,一定要先开启一个版图cellview,再运行脚本。因为脚本会获取当前版图cellview的ID,然后在这个版图中执行绘制。如果没有版图cellview,那么脚本将报错。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删