| ||
1、删除gds中某一个cell----应用场景:可用来删除空的cell,保证drc的正常进行
################################################# #usage: calibredrv script.tcl ################################################# set gdsIn gds_path1 set gdsOut gds_path2 set cell adc_test set L [layout create $gdsIn -dt_expand -preserveProperties] $L delete cell $cell -deleteChildCells puts "delete cell $cell" $L gdsout $gdsOut
2、flatten gds ----应用场景:打散gds的hierarchy结构
################################################# #usage: calibredrv script.tcl ################################################# set gdsIn test.gds.gz set topcell chips #read gds layout create test.gds.gz -dt_expand #flatten gds layout0 flatten cell $topcell #modify gds number/dataout,if you need layout0 modify layer 61.0 31.0 #write out gds,if you need write out specify layer that can use "-map" option layout0 gdsout modify,gds,gz $topcell
3、add specify layer shape for gds ----应用场景:需要对gds全局覆盖上一层指定layer的shape
###################################################### #usage : calibredrv script.tcl <layout_filename> ###################################################### set design [lindex $argv 0] set L [layout create $design -dt_expand -preserveProperties] set topcell [$L topcell] set region [$L bbox $topcell] set llx [lindex $region 0] set lly [lindex $region 1] set urx [lindex $region 2] set ury [lindex $region 3] $L create layer 108.0 $L create polygon $topcell 108.0 ${llx}d ${lly}d ${urx}d ${ury}d #if you need size up shape,can Open comments #$L SIZE 108.0 108.0 BY 1 $L gdsout $design
4、scan gds中的tag(text)
###################################### #usage: calibredrv script.tcl ###################################### set gdsfile "test.gds.gz" set cells [layout peek $gdsfile -cells] set scan_result [open ./scan_result.txt w] foreach obj $cells { set textlist [layout peek $gdsfile -celltext $obj] foreach tag $textlist { set cellname [lindex $tag 0] if {[string compare [lindex $tag 1] {}] == 0} { puts "$cellname no tag!" } else { for {set i 1} {$i < [llength $tag]} {incr i} { set group [lindex $tag $i] set text_name [lindex $group 0] if {[regexp "&" $text_name]} { set ori_x [lindex $group 1] set ori_y [lindex $group 2] set gds_num [lindex $group 3] set datatype [lindex $group 4] puts $scan_result "$cellname has tag {$text_name},coordinate : {$ori_x $ori_y},layer is {$gds_num,$datatype}" } } } } } close $scan_result
5、delete gds中的指定字符的tag(text)
###################################### #usage: calibredrv script.tcl ###################################### set gdsfile "test.gds.gz" set topcell "top" set layerlist "10.0 11.0 12.3" set gdsout "test_notag.gds.gz" set pattern "&" set L [layout create $gdsfile -dt_expand -preserveProperties] set mycell [$L cells] set handle [open ./delete.txt w] for {set i 0} {$i < [llength $layerlist]} {incr i} { set layer [lindex $layerlist $i] foreach cell $mycell { set clist [$L iterator text $cell $layer range 0 end] foreach obj $clist { set text_name [lindex $obj 0] set ori_x [lindex $obj 1] set ori_y [lindex $obj 2] if {[regexp $pattern $text_name]} { $L delete text $cell $layer $ori_x $ori_y $text_name puts $handle "$cell delete tag : $text_name , layernumber : $layer" } } } } close $handle #遍历并打印删除后的tag list set results [open ./results.txt w] for {set i 0} {$i < [llength $layerlist]} {incr i} { set layer [lindex $layerlist $i] foreach cell $mycell { set clist [$L iterator text $cell $layer range 0 end] foreach obj $clist { puts $results "$cell tag : $obj, layernumber : $layer" } } } close $results $L gdsout $gdsout
6、merge cell/dummy...
################################################# #usage : calibredrv script.tcl ################################################# proc ImportGds {gds cell x y mirror angle} { global L0 Topcell set x [expr $x*1000] set y [expr $y*1000] set LT [layout create $gds -dt_expand -preservePaths] $L0 import layout $LT FALSE rename -dt_expand -preservePaths $L0 create ref $Topcell $cell $x $y $mirror $rangle 1 } proc renameTopcell {gds prefix filename} { set LR [layout create $gds -dt_expand -preservePaths] set top_name [$LR topcell] $LR cellname ${top_name} ${top_name}_${prefix} $LR gdsout ${filename} } renameTopcell A.gds.gz Atopcellname ./A_rename.gds.gz set L0 [layout create B.gds.gz -dt_expand -preservePaths] ImportGds A_rename.gds.gz A(rename)topcellname 24 24 0 0 $L0 gdsout C.gds.gz topcellname