# ************************************************************************************* # Linux commands to get the window name and the TK window name and the geometry # The window name is "Browse Libraries/Cells" while the TK window name is .libBDialog__1 # % xprop | grep -E 'WM_NAME|WM_CLASS' (now click the window of interest) # % xwininfo -name "Browse Libraries/Cells" | grep geometry # In tcl, you could then set the window geometry with something like # > wm geometry .libBDialog__1 1379x649+200+20 # ************************************************************************************* * ************************************************** * Simple code to go thru all text objects in a cell * ************************************************** set tList [list] set cidList [list] set ewin $ediLastClickWindow(1) set cid [lAssocFetch [ediGetWinInfo -win $ewin] -editCellId] set libId [edbGetCellIdLibId $cid] set cellNameList [edbGetLibCellIndex $libId] edbSeq objId $cid text { set iobj [edbFetchObject $cid $objId] lappend tList $iobj set ttLayNum [lAssocFetch $iobj layerNumber] set ttLayDat [lAssocFetch $iobj dataType] set ttOrigin [lAssocFetch $iobj origin] set ttLayer [lAssocFetch [edbTFFetchLayerAttrByNumber $cid $ttLayNum] layerName] if {[llength $ttLayer] == 0} { set ttLayer = "None" } puts "$ttLayNum $ttLayDat $ttLayer $ttOrigin $ttJust : $ttText" edbModifyObject $cid $objId -magnification 0.01 } * ************************************************** * .ssh/config (not this -------------------------------------------- not this) Host CRAP User warwargr GatewayPorts yes LocalForward 7503 131.101.251.90:7503 (not this -------------------------------------------- not this) * Ok, usually start slam in $BB/slamwork xmodmap ~/.Xmodmap xrdb ~/.Xresources (note numeric pad "ENTER" and "Menu" key next to right key are mapped to "meta" on a PC keyboard) slam open a layout window source winstuff.tcl in layout window hit -2 --> size the tkconss and browser windows -3 --> size the layout window -4 --> window info create new schematic libs with default.cfg set reflibs to mdev65, basic, LTS * see ltstpe --> how_lts_dump.txt * Fortuneately I was about to create a .cfg file from my existing library $BB/slamwork/tsmc16Out.cfg Please use this to create a new layer generation stuff in /ubox/qccdir/myslam/userdefaults create a file : tsmc16_layers.txt create a file : generate_tsmc16_maps.pxe create a file : tsmc16.cfg generate files : tsmc16_strmin.lmap : tsmc16_strout.lmap copy the files tsmc16.cfg, tsmc16_strmin.lmap, tsmc16_strout.lmap to /ubox/ssoft/userdefaults * when you start WSL xmodmap ~/.Xmodmap xrdb ~/.Xresources * ssoft infrastructure talks about the keyboard mapping to alt and meta keys if is very difficult to understand, as there seems to be multiple levels mapping of a key in xwindows then to WSL then to the program itself xmodmap -pm --> shows what keys are currently mapped xev --> allows you to get the keycode of keys. These can be different on a real Linux computer I end up mapping the "menu" key and the KP_Enter key to be meta ! xmodmap -e "remove control = Shift_L" ! greg@DBK8S5D3:~$ xmodmap -e "keycode 0x25 = Shift_R" ! greg@DBK8S5D3:~$ xmodmap -e "keycode 115 = Shift_R" ! keycode 108 = Super_R Super_R Super_R Super_R ! keycode 117 = Super_R Super_R Super_R Super_R ! keycode 108 = Shift_L ! keycode 117 = Super_R keycode 104 = Super_R keycode 135 = Super_R * It seems different computers behave different. ON my current PC I have .Xmodmap file : keycode 117 = Super_R I have .Xresources Xcursor.size: 16 I load these with xmodmap ~/.Xmodmap xrdb ~/.Xresources * Unfortunately I lost a bunch of work to recover I have $OO/qccdir/ this has key files acoSlam.tcl and gregFunc.tcl The were Feb 8 updates I have $DD/ltstpe/lts_dump.pxe.20230204 and lts_fixport.pxe.202230213 These two files probably need refinement. You should be able to dump an LTS and also automatically renumber all the ports Please fix these soon I completely lost 16nm slam tech files however see $BB/slamwork/streamOut.log $BB/slamwork/streamIn.log I have nice tcl functions in here too * Manually checkin a license sslCloseSession DBK8S5D3 23 131.101.251.90 * Move LTS to Slam (see $DD/how_LTS_move.txt") * Start X11 Server, and load xmodmap This file : $DD/bin/startx.sh ----------------------------------------------------------------------- #!/bin/bash cd $DD cmd.exe /c "C:\Program Files\VcXsrv\xlaunch.exe" -run vcxsrv_wsl.txt sleep 10 cd xmodmap .Xmodmap ----------------------------------------------------------------------- This file : ~/.Xmodmap ----------------------------------------------------------------------- keycode 108 = Super_R Super_R Super_R Super_R keycode 117 = Super_R Super_R Super_R Super_R ----------------------------------------------------------------------- * New slam bind keys (put all this stuff in newKeys.tcl 1. Remap F1 and F2 to F1 and F2 ediDefineKey F1 "gregSetAddMode" ediDefineKey F2 "gregClrWinBin @window" ediDefineKey "{meta}F1" "ediShowAllDisplay -screen @screen" ediDefineKey "{meta}F2" "ediToggleWinInterlock -win @window toggle" * ************************************************************************************* slam bind keys first find out which keys are not mapped, then start adding these - Here are some keys with no bindings 1, 2, 3, 5, 6, 7 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 1, 2, 3, 4, 5, 6, 7, 8, 9 (for some reason 0 is ignored) KP_Enter KP_Add KP_Divide KP_Multiply KP_Subtract grave grave grave F3, F4, F5, F6, F7, F8, F9, F10 F1, F2, F3, F5, F6, F7, F8, F9, F10 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10 - Here are some already defined bindkeys 4 --> laySet45 -win _greginv-lay-1 8 --> laySet90L -win _greginv-lay-1 9 --> laySet90 -win _greginv-lay-1 0 --> laySetAA -win _greginv-lay-1 KP_Begin (keypad 5 key) --> ediPanToPoint -win _greginv-lay-1 grave --> ediBeginWinAsTerminal _greginv-lay-1 grave --> DefineCmdMenu 172.25.32.1:0 _greginv-lay-1 ESC --> ediAbortEnter -win _greginv-lay-1 F1 --> ediShowAllDisplay -screen 172.25.32.1:0 F2 --> ediToggleWinInterlock -win _greginv-lay-1 toggle F11 --> (HARD_INTERRUPT) F12 --> ediFormDisplayControl -win _greginv-lay-1 toggle F4 --> destroy .closeWindowBDialog__greginv523 * ************************************************************************************* * add corrdinates with mouse p xval yval * issue command directly from layout window : use the ` (~) key * xmodmap -e "keycode 117 = Super_R Super_R Super_R Super_R" xmodmap -e "keycode 108 = Super_R Super_R Super_R Super_R" This sets the Menu Key and KP_Enter to work as "meta" for slam (These are for WSL, you may need different keycodes on a Linux machine) * Note : First time you start slam, it pops up a configuration window, and sets up .slamrc There is also a "slamrc" file in ssoft/etc/slamrc but I would first let it create the auto one set ewin $ediLastClickWindow(1) set wname [lAssocFetch [ediGetWinInfo -win $ewin] -containerWindow] wm geometry .$wname 1600x900+200+50 ******************************* * Slam Bindkeys (layout) ******************************* KP_Mult --> mark a window F4 --> set ref point F2 --> unselect all F1 --> set add select mode F10 --> open DLD layer menu KP_Add --> zoom in by 2 KP_Subt --> zoom out by 2 '1' --> set grid minimum (0.005) '6' --> set grid 0.1 '7' --> set grid 0.5 '9' --> lock angles manhattan '0' --> any angle '4' --> lock angles 45-degrees 'c' --> copy 's' --> stretch _s --> area stretch (first select objects) 'm' --> move 'f' --> zoom fit 'z' --> zoom area 'w' --> zoom last _q --> zoom selected objects 'q' --> query object (change properties) _m --> merge objects _s --> split _a --> select All _a --> select by area _a --> select by area (intersect) 'd' --> deselect object TAB --> cycle selected object 'x' --> save cell *************************** proc ggi { {xa "NULL"} {ya "NULL"} {xb "NULL"} {yb "NULL"} } { global ediLastClickWindow global gregWindowId set ewin $ediLastClickWindow(1) if {$xa == "NULL"} { set ua 0.0 set va 0.0 ediEnterCoord -win $ewin [list $ua $va] puts "Corr : \{$ua $va\}" return true } elseif { $ya == "NULL" } { puts "Error - must give 0 or 2 values" return false } elseif { $xb == "NULL" } { set ua $xa set va $ya ediEnterCoord -win $ewin [list $ua $va] puts "Corr : \{$ua $va\}" return true } elseif { $yb == "NULL" } { puts "Error - must give 0 or 2 or 4 values" return false } else { set ua $xa set va $ya set ub $xb set vb $yb ediEnterCoord -win $ewin [list $ua $va] ediEnterCoord -win $ewin [list $ub $vb] puts "Corr : \{$ua $va\} \{$ub $vb\}" return true } return false } # #####################