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-flash

快速 LVL

ski-flash 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

Skipper & Tcl 笔记的更多相关文章

  1. tcl使用笔记

    tcl语法网站:http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm 1)拷贝文件 set PRJ_HDL_DIR "../prj/hdl&quo ...

  2. TCL语言笔记:TCL中的数组

    一.介绍 Tcl 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念.数组的存取速度要比列表有优势,数组在内部使用散列表来存储 ...

  3. TCL语言笔记:TCL中的列表操作

    一.介绍 列表则是具有特殊解释的字符串.Tcl 中的列表操作和其它 Tcl 命令一样具有相同的结构.列表可应用在诸如 foreach 这样的以列表为变元的循环命令中,也应于构建 eval 命令的延迟命 ...

  4. TCL语言笔记:TCL中的String命令

    一.介绍 字符串是 Tcl 中的基本数据类型,所以有大量的字符串操作命令.一个比较重要的问题就是模式匹配,通过模式匹配将字符串与指定的模式(格式)相匹配来进行字符串的比较.搜索等操作. 二.strin ...

  5. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

  6. TCL语言笔记:TCL中的数学函数

    一.TCL数学函数列表 函数名 说明 举例 abs(arg) 取绝对值 set a –10  ; #a=-10 set a [expr abs($a)]; # a=10 acos(arg) 反余弦 s ...

  7. TCL语言笔记:TCL基础语法

    一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...

  8. Tcl语言笔记之二

    1,表达式 1.1 操作数 TCL表达式的操作数通常是整数或实数.整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么TCL将把这个整数看作八进制的,如果前两个字符是0x则这个整数被看作 ...

  9. Tcl语言笔记之一

    1,一个TCL脚本可以包含一个或多个命令.命令之间必须用换行符或分号隔开 2,置换 substitution %set y x+100                               // ...

随机推荐

  1. ASP.NET Core框架探索之Authorization

    今天我们一起来探索一下ASP.NET Core框架中的Authorization.我们知道请求进入管道处理流程先会使用Authentication进行用户认证,然后使用Authorization进行用 ...

  2. Spring Boot 中初始化资源的几种方式

    假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...

  3. 统计&分析 EXCEL:count、counta、countblank、countif和countifs函数分享

    一.count 计算区域中包含数字的单元格的个数以及参数列表中的数字的个数. 利用函数COUNT可以计算单元格区域或数字数组中数字字段的输入项个数. 示例: 1.我要是写成=COUNT(B1,D1), ...

  4. Redis的Unable to connect to Redis和java.io.IOException: 远程主机强迫关闭了一个现有的连接问题的解决

      学习项目xhr系统用到springboot + vue(https://github.com/lenve/vhr),文档中要求使用到RabbitMQ,但是从我搭建开发环境来看,是否配置Rabbit ...

  5. 后门及持久化访问4----Com组件劫持

    代码及原理介绍 COM是Component Object Model(组件对象模型)的缩写,COM组件由DLL和EXE形式发布的可执行代码所组成.每个COM组件都有一个CLSID,这个CLSID是注册 ...

  6. DVWA high 带token暴力破解

    一.选择Pitchfork模式.选择要爆破的参数 二.配置Options 找到optiops(设置)把线程设为1 配置Grep=Extract,点添加 点击Refetch response 获取返回的 ...

  7. 航模电池平衡头接线,1S-6S原理图

    1-4S平衡头接线 S数代表几级锂电池串联,比如3S代表串联了3级,所以总电压为3*3.7V=11.4V.(每一级可能是多个电芯并联) 图源:百度贴吧 图源:5imx论坛 3S电池示例 B6充电器

  8. 网络编程 --安装wkhtmltopdf出现中文乱码的情况

    1 首先下载安装包 2安装依赖文件apt-get install libxfont1 xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi su ...

  9. redis 为什么是单线程的?

    一.Redis为什么是单线程的? 因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽.既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理 ...

  10. 面试问题之C++语言:C与C++的区别

    C是C++的基础,C++语言和C语言在很多方面是兼容的. C是结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出或实现过程(事务 ...