Skipper & Tcl 笔记
https://www.cnblogs.com/yeungchie/
ski-db
打开一个文件获取 lib 对象 dbImport
set file "layout.gds"
set lib [dbImport $file]
从 lib 对象获取 libId dbLibGet
set libId [dbLibGet -lib $lib -attr id]
获取数据精度
set dbum [expr int([dbLibGet -lib $lib -attr dbuPerUm])]
获取顶层单元名 dbLibTopCell
set top [dbLibTopCell $lib]
从 lib 对象指定名称获取 cell 对象
dbCellGetByName
set cell [dbCellGetByName -lib $lib -cellName $top]
获取 cell 的 bBox dbCellGetBBox
set box [dbCellGetBBox -cell $cell]
创建一个新的 newlib dbLibCreate
set newLib [dbLibCreate "NewLib" -dbu $dbum]
在 newLib 中创建一个新的 newCell
dbCellCreate
set newCell [dbLibCreate -lib $newLib -cellName "newCell"]
在 cell 中搜索实例 dbFindInst
set insts [dbFindInst -cell $cell -masterNamePattern ".+"]
# 正则匹配所有名字就是全都搜出来
获取实例参数 dbFigGet
set master [dbFigGet $fig -attr master]
set xy [dbFigGet $fig -attr pos]
set ori [dbFigGet $fig -attr orient]
set mag [dbFigGet $fig -attr mag]
在 cell 中搜索 label dbFindLabel
set labels [dbFindLabel -cell $cell -strPattern ".+" -regexp]
# 这个函数需要指定 -regexp 才会启用正则
获取 label 参数 dbFigGet
set layer [dbFigGet $fig -attr layer]
set purpose [dbFigGet $fig -attr purpose]
set xy [dbFigGet $fig -attr pos]
set text [dbFigGet $fig -attr str]
set height [dbFigGet $fig -attr height]
set ori [dbFigGet $fig -attr orient]
set justify [dbFigGet $fig -attr justify]
获取最大层次深度 dbLibMaxLevel
set level [dbLibMaxLevel $lib]
查看当前库(文件)信息 dbLibSummary
set sum [dbLibSummary $lib -general]
查看数据类型
regexp {Format\\s+:\\s+(\\S+)\\s} $sum _ format
puts $format
导出 lib dbExport
- GDSII
dbExport $lib "filename.gds" -preserveProp -emptyCell skipNone -skipSwitchCell
- OASIS
dbExport $lib "filename.gds" -preserveProp -oasis -replaceInAString -writeInvalidString -cblock -cblockTable -emptyCell skipNone -skipSwitchCell
# 需要指定 -oasis 才是 OASIS 格式导出
# 且部分参数只有 OASIS 才支持,导出为 GDSII 时使用会报错
ski-flashlvl
快速 LVL
ski-flashlvl layout_1.gds TOPCELL layout_2.gds TOPCELL lvl.rep [-OASISIN]
Tcl
不换行 puts
set blog "YEUNGCHIE"
puts -nonewline $blog
刷新标准输出缓冲区
flush stdout
等待获取标准输入
gets stdin reply
puts $reply
查看数组中某个元素的位置
也可以用来检测是否存在
set array [list a1 a2 b3 b4 5]
lsearch -exact $array b4
# 3 在第 3 的索引位置
lsearch -exact $array ab
# -1 返回 -1 代表不存在
数组排序
- 简单排序
lsort [list a12 a1 b0 a10 a8 a1]
# a1 a1 a10 a12 a8 b0
- 如果字符串中存在数字,按照正确的数字大小排序
lsort -dictionary [list a12 a1 b0 a10 a8 a1]
# a1 a1 a8 a10 a12 b0
- 排序并去重
lsort -dictionary -uniq [list a12 a1 b0 a10 a8 a1]
# a1 a8 a10 a12 b0
错误捕获
catch { try_command } aa bb