### Getting Instance Hierarchy Path Details in Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md Similar to geGetInstHier but returns a list of lists providing more detail for each instance in the path, including iteration, row, and column for mosaic instances. Returns () if at the top level. The example gets the path details for the current window. ```SKILL geGetInstHierPath( hiGetCurrentWindow( ) ) ``` -------------------------------- ### Creating Markers with Links Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.500.md Shows two examples of creating markers using dbCreateMarker. The first creates a marker with a Skill link, and the second creates one with an HTML link. Both examples define the marker's boundary, visibility, severity, and message. Requires a valid cellview (cv). ```Skill dbCreateMarker(cv "\n" "link test" list(0:0 0:2 2:2 2:0) nil t nil "warning" "marker with link") dbCreateMarker(cv "\n" "html link test" list(0:0 0:2 2:2 2:0) nil t nil "warning" "marker with html link") ``` -------------------------------- ### Getting Cellview Display List in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Returns a display list containing display functions for all objects in the specified cellview and its hierarchy. The example gets the display list for the cellview being edited in `window(2)`. ```SKILL geCellViewToDlist( window(2)~\>editCellView ) ``` -------------------------------- ### Get Instance View Levels (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.50.md Retrieves the instance-specific display start and stop levels for instances in the current window. Returns a list of lists, where each sublist is `(instanceId (startLevel stopLevel))`. ```SKILL geGetAllInstViewLevel( ) ``` -------------------------------- ### Getting Hierarchical Member Instance Path SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Retrieves a list describing the sequence of instances and their iteration numbers that were descended into or edited in place to arrive at the cellview currently displayed in the window. Each list element contains the instance database ID and the iteration number. The function returns `nil` if the window is displaying the top-level cellview. ```SKILL geGetHierMemInst( getCurrentWindow( ) ) db:01234567 0 db:45678900  1 ``` -------------------------------- ### Getting All Instance View Levels (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.900.md Retrieves a list of all instance-specific display threshold levels (start and stop) currently set within the graphical editor. Returns nil if no instance view levels are defined. ```SKILL geGetAllInstViewLevel( ) ``` -------------------------------- ### Getting Instance View Levels (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.900.md Retrieves the start and stop display threshold levels specifically defined for a given instance. Returns a list of integers representing the levels or nil if no custom levels are set for the instance. Requires the instance ID as an argument. ```SKILL geGetInstViewLevel( ) ``` -------------------------------- ### Getting and Setting Marker Name (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Creates an annotation type marker, retrieves its initial name (which is empty), sets the marker name to 'foo' using dbSetMarkerName, and then retrieves the name again to confirm the change. Demonstrates querying and modifying the name property of a marker object. ```SKILL m1 = list( (-2.0:-2.0) (-2.0:2.0) (2.0:2.0) (2.0:-2.0) (-2.0:-2.0) ) marker1 = dbCreateMarker(cv "marker1 - annotation type marker" "layout" m1 nil t t "annotation" "annotation marker") dbGetMarkerName(marker1) => "" dbSetMarkerName(marker1 "foo") dbGetMarkerName(marker1) => "foo" ``` -------------------------------- ### Creating Pie/Donut Shape with Virtuoso Photonics SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1550.md Demonstrates how to create a pie slice or donut shape using the `ccCreatePie` function. The first example creates a donut shape with specified parameters. The second example illustrates an error that occurs when the `?endLength` is too short for creating a cap. Requires a cellview object and a layer-purpose pair. ```SKILL/Virtuoso Script ccCreatePie(cv "waveguide" ?angle 45 ?startRadius 2 ?length 5 ?genFigs nil) => cc@0x269c83e0 ccCreatePie(cv "waveguide" ?length 5 ?endLength 4) => *** ERROR *** end length is too small. It must be at least 5 to generate the cap. ``` -------------------------------- ### Setting Probe Net Filter to Show in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Demonstrates how to get the current window and cellview and set a filter to show only specific nets ("VDD", "VSS") using `geSetProbeNetFilter`. This is different from the previous example which hid the nets. ```SKILL window = hiGetCurrentWindow() cellView = geGetEditCellView(window) geSetProbeNetFilter(cellView "Show" list("VDD" "VSS")) ``` -------------------------------- ### Getting Instance Hierarchy String SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Provides a slash-separated string detailing the hierarchical path of instances and their iteration numbers that lead from the top level to the cellview currently displayed in the specified window. Returns `/` if the window is showing the top-level cellview. This string format can be used in tool interfaces. ```SKILL geGetInstHier( getCurrentWindow( ) ) ``` -------------------------------- ### Setting Window Status with geSetWindowStatus in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md This snippet provides an example of setting the status value for a given window and application using the `geSetWindowStatus` function. It obtains a window ID and then calls `geSetWindowStatus` with the window, application name ('default'), and a status value (64), showing the typical return value which often reflects the newly set status or a related value. ```SKILL windowId = window(2) => window:2 geSetWindowStatus(windowId ’default 64) => 66 ``` -------------------------------- ### Creating Instance Terminal by Position - Database API - Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2200.md Illustrates the creation of an instance terminal (`instTerm`) that connects to a specified net (`net`) and instance (`i1`), linking based on the terminal's position (0) within the master. Requires valid `net`, `i1`, and position. ```Skill dbCreateInstTermByPosition(net i1 0) ``` -------------------------------- ### Getting Window by CellView SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Finds and returns the ID of a window where the specified cellview is currently being displayed. If the cellview is displayed in multiple windows simultaneously, the function returns the ID of the first window it encounters. This function is helpful for obtaining a window handle when starting with a cellview object. ```SKILL geGetCellViewWindow( cell3 ) ``` -------------------------------- ### Creating Waveguide Connectors via Waypoints SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.800.md Demonstrates creating photonic waveguide connectors using the `phoWayPointConnector` function with lists of points (either simple distance/offset or coordinate pairs). It shows setting the layer ('waveguide') and width, and explores optional parameters like start port angle and radius. ```SKILL shapeDataList = list( 0:0 15.708:20 31.4159:0 47.12385:-20 62.8318:0 78.54:20 100:20) cv = geGetEditCellView() phoWayPointConnector(cv "waveguide" ?width 0.5 ?shapeDataList shapeDataList) ``` ```SKILL shapeDataList = list( list(0.0 0.0) list(150 0.0) list(150 -23) list(180 -23) list(180 40) list(200 40) list(200 0.0) list(230 0.0) list(230 40) ) cv = geGetEditCellView() phoWayPointConnector(cv "waveguide" ?width 0.5 ?shapeDataList shapeDataList) ``` ```SKILL phoWayPointConnector( cv "waveguide" ?shapeDataList shapeDataList ?width 0.5     ?startPortAngle 30 ?startPortRadius nil) ``` ```SKILL phoWayPointConnector(cv "waveguide" ?shapeDataList shapeDataList ?width 0.5    ?startPortAngle 30 ?startPortRadius 10/20/30) ``` ```SKILL phoWayPointConnector(cv "waveguide" ?width .5 ?shapeDataList shapeDataList    ?autoWide t ?autoWideTaperAngle 30 ?autoWideTaperStyle 'exp ?autoWideWideWidth 3.0 ?autoWideStubLength 2.0 ?autoWideMinWideSectionLength 1.0) ``` -------------------------------- ### Getting Path Boundary in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1500.md Returns the polygon boundary for the specified path object. The example shows how to create a path and then get its boundary, illustrating the coordinate list format of the output. ```SKILL dbGetPathBoundary(dbCreatePath(cv '("text" "drawing") list(0:0 10:0 10:10 0:0) 0.1)) \> ((0.0 -0.05) (10.05 -0.05) (10.05 10.02) (9.98 10.05) (-0.035 0.035) (0.035 -0.035) (9.95 9.88) (9.95 0.05) (0.0 0.05) ) ``` -------------------------------- ### Creating Via - dbCreateVia Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2150.md Creates a custom or standard via according to the specified viaDef type and optional parameter list. The example shows how to get the current cellview, technology file, find a via definition by name ("M2_M1v"), define parameters like cut rows and columns, and then create the via object at location (5,5) with rotation "R0". ```Skill cvId = geGetEditCellView() tech = techGetTechFile(cvId) viaDefId = techFindViaDefByName(tech "M2_M1v") viaParams = list(list("cutRows" 3) list("cutColumns" 3)) newVia = dbCreateVia(cvId viaDefId list(5 5) "R0" viaParams) ``` -------------------------------- ### Creating Instance Terminals with dbCreateInstTerm (Skill) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.550.md Shows the necessary steps in Skill to create an instance terminal using `dbCreateInstTerm` and connect it to a net. This involves creating the required master net and terminal, instantiating the master cellview, creating a net in the current cellview, and then linking them together via the instance terminal. ```Skill net = dbCreateNet(master "A") term = dbCreateTerm(master "" "input") inst = dbCreateInst(cellview master "" list(0 0) "R0" 1) inNet = dbCreateNet(cellview "inNet") instTerm = dbCreateInstTerm(inNet inst term) ``` -------------------------------- ### Getting Net Voltage Range Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2250.md Shows how to retrieve the voltage range set on a net. The example includes opening a cellview, finding a net, getting its initial range, setting a new range using dbSetNetVoltageRange, and then getting the updated range to demonstrate the function's usage. ```Skill cv=dbOpenCellViewByType( "vdr_demo" "inverter_chain" "layout_cv" "" "a" ) net1=dbFindNetByName(cv "IN") db:0x2b1fe19d dbGetNetVoltageRange(net1) => (0.0 0.0) dbSetNetVoltageRange(net1 1.5 2.0) => t dbGetNetVoltageRange(net1) => (1.5 2.0) ``` -------------------------------- ### Copying Selection Set with geCopySelSet in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md This example shows how to use `geCopySelSet` to programmatically copy the currently selected objects within a window. It takes the current window ID, a source point representing the reference origin for the copy, and a destination point where the reference origin will be placed, moving the entire selected set. ```SKILL geCopySelSet(hiGetCurrentWindow()list(456.7 234.5)list(678.9 567.8)) ``` -------------------------------- ### Creating Probes with Display Packet - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Shows how to create a probe using a predefined display packet (`"hilite8"`) for highlighting. The example creates an instance probe on the first unplaced instance found in the current cell view. It uses nested `when` statements to safely access the cell view and instance data. Requires an active cell view with instances and a defined display packet. ```SKILL myProbe = nil when(window = hiGetCurrentWindow() when(cellView = geGetEditCellView(window) when(instance = car(cellView~>instances) when(instance~>status != "unplaced" myProbe = geMakeProbeWithPacket(?window window ?name "myProbeName" ?object instance ?packet "hilite8" ?probeType "instance") ) ) ) ) ``` -------------------------------- ### Getting Path Boundary Polygon in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.650.md Calculates and returns the geometric boundary of a specified path object as a list of points defining a polygon. The example creates a path and immediately gets its boundary points. ```SKILL dbGetPathBoundary(dbCreatePath(cv '("text" "drawing") list(0:0 10:0 10:10 0:0) 0.1)) ``` -------------------------------- ### Getting and Setting Net Voltage Range with dbGetNetVoltageRange (Skill) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.550.md Provides a Skill example demonstrating how to retrieve and modify the voltage range property of a net using the `dbGetNetVoltageRange` and `dbSetNetVoltageRange` functions. It shows opening a cellview, finding a net, querying its initial range, setting a new range, and verifying the change. ```Skill cv=dbOpenCellViewByType( "vdr_demo" "inverter_chain" "layout_cv" "" "a" ) net1=dbFindNetByName(cv "IN") db:0x2b1fe19d dbGetNetVoltageRange(net1) =\> (0.0 0.0) dbSetNetVoltageRange(net1 1.5 2.0) =\> t dbGetNetVoltageRange(net1) =\> (1.5 2.0) ``` -------------------------------- ### Creating Pie and Donut Shapes in Virtuoso Photonics (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2400.md Demonstrates how to use the `ccCreatePie` function to generate pie or donut shapes within a specified cellview. The examples show a successful creation with angle, start radius, and length, and a failed attempt illustrating an error when `endLength` is too small for a cap. ```SKILL ccCreatePie(cv "waveguide" ?angle 45 ?startRadius 2 ?length 5 ?genFigs nil) => cc@0x269c83e0 ccCreatePie(cv "waveguide" ?length 5 ?endLength 4) => *** ERROR *** end length is too small. It must be at least 5 to generate the cap. ``` -------------------------------- ### Creating Instance Probe with Full Label Attributes (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1100.md This example creates an instance probe named "myProbe" for objects "I1" and "I2". It demonstrates setting various detailed attributes for the probe's label, including text, color, offset, font, size, justification, and orientation using multiple ?label* arguments. ```SKILL probe = geMakeProbeWithLabel(?name "myProbe"     ?labelName "myProbeLabel"     ?labelColor list("y0" "drawing")     ?labelOffset 10:10     ?labelFont "gothic"     ?labelFontSize 100.     ?labelJust "centerCenter"     ?labelOrient "R90"     ?object list( "I1" "I2")     ?probeType "instance") ``` -------------------------------- ### Hierarchically Saving Design Cadence Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1650.md Saves the design starting from a given cell view down to a specified hierarchical depth. Only works on maskLayout views. Can be configured to prompt the user before saving. Requires the starting cell view and depth. ```SKILL geSaveHier(geGetEditCellView()32 t) ``` -------------------------------- ### Loading Probes from File with Condition - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Demonstrates how to load probes from a specified file (`/tmp/myProbes.out`) into window 3. Probes are only loaded if a specific property (`myProperty`) equals ("equal") the value "critical". The `infile` function is used to open the file. Requires an existing probe file and an active Virtuoso session with window 3. ```SKILL m = infile( "/tmp/myProbes.out" ) geLoadProbe( window(3) m ’myProperty ’equal "critical") ``` -------------------------------- ### Getting Library Manager Log File Name (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.800.md Examples demonstrating the usage of the `ddsGetLibManLogFileName` function and how to process the returned details using `when`, `pairp`, `fixp`, `stringp`, and `printf`. It shows how to check if the function returns details about the log file path and process ID. ```SKILL ddsGetLibManLogFileName() =>nil ddsGetLibManLogFileName( nil ) =>nil ddsGetLibManLogFileName( "string" ) =>nil detailsDpl = ddsGetLibManLogFileName( '( myTag log nil pid nil logPid nil ) ) when( pairp( detailsDpl) when( fixp( detailsDpl->pid ) && stringp( detailsDpl->log ) && detailsDpl->pid == detailsDpl->logPid printf("Library Manager is running with log file %s\n" detailsDpl->log) ) ) ``` -------------------------------- ### Launching Physical Verification DRC (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1650.md Initiates a Design Rule Check (DRC) using Virtuoso IPVS based on the specified rules file. The example includes a lambda function demonstrating how to process generated shapes, printing each shape object. ```SKILL pvsApplyDRC( cv "rules.pvl" "" "" nil lambda( (shape) println(shape) t) ``` -------------------------------- ### Creating Width Spacing Pattern with Color in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1500.md Creates a width spacing pattern where the color is specified for the first track (starting color), and subsequent tracks are automatically colored by shifting. It requires the cellview ID, pattern name, pattern definition, starting color, and offset, along with repeat mode options. The example shows defining a pattern and setting the starting color and repeat options. ```SKILL dbCreateWidthSpacingPatternWithColor(cv "wscp" '((((0.04 0.08 "mywire1" "mask1Color") (0.09 0.012)))) "mask2Color" 0.05 t "steppedOnly" "stepped") ``` -------------------------------- ### Managing Marker Name - Database API - Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2200.md Demonstrates creating a marker object, retrieving its initial name, setting a new name using `dbSetMarkerName`, and verifying the name change. Requires a valid cellview handle (`cv`). ```Skill m1 = list( (-2.0:-2.0) (-2.0:2.0) (2.0:2.0) (2.0:-2.0) (-2.0:-2.0) ) marker1 = dbCreateMarker(cv "marker1 - annotation type marker" "layout" m1 nil t t "annotation" "annotation marker") dbGetMarkerName(marker1) => "" dbSetMarkerName(marker1 "foo") dbGetMarkerName(marker1) => "foo" ``` -------------------------------- ### Getting Window Box Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md This function returns the coordinates of the lower-left and upper-right corners of the specified window's display area. It takes a window ID as input. The example demonstrates getting the box for `window(2)`. The output is a list containing the two coordinate pairs. ```SKILL geGetWindowBox( window(2) ) ``` -------------------------------- ### Setting Marker Name - Database API - Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2200.md Shows how to create a marker and then specifically uses `dbSetMarkerName` to assign it a name, illustrating the function's return value (`t` for success). Requires a valid cellview handle (`cv`). ```Skill m1 = list( (-2.0:-2.0) (-2.0:2.0) (2.0:2.0) (2.0:-2.0) (-2.0:-2.0) ) marker1 = dbCreateMarker(cv "marker1 - annotation type marker" "layout" m1 nil t t "annotation" "annotation marker") dbSetMarkerName(marker1 "foo") => t ``` -------------------------------- ### Getting Equivalent Window Set by Edit CellView SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Returns a list containing the IDs of all open windows that are currently editing the exact same cellview as the window specified by the argument. If only one window is editing that cellview, the returned list will contain just that single window ID. This helps identify all concurrent edit views. ```SKILL geEquivWindowSet(window(2)) ``` -------------------------------- ### Getting Top-Level CellView ID in Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md Returns the database ID of the original top-level cellview displayed in a window. This is different from the edit/display cellview only when descending or editing in place. Returns nil if the window is empty or undefined. The example gets the top cellview for the current window. ```SKILL geGetTopLevelCellView( hiGetCurrentWindow( ) ) ``` -------------------------------- ### Saving Probes to File in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Saves the probes associated with a specific window to an output file stream. The example opens `/tmp/myProbes.out` for writing and then saves the probes from window(3) to it. ```SKILL m = outfile( "/tmp/myProbes.out" ) geSaveProbe( window(3) m ) ``` -------------------------------- ### Creating Probes with Color Attributes - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Gives two examples for creating probes and specifying their highlight color. The first creates an instance probe on object `list("I1" "I2")` using the `y0`/`drawing` layer color. The second creates a net probe on the object path `"/I1/I5/NET10"` using the `marker`/`error` layer color. Requires a valid object path/ID and defined display layers in Virtuoso. ```SKILL probe = geMakeProbeWithColor(?name "myProbe" ?color list( "y0" "drawing") ?object list( "I1" "I2") ?probeType "instance") probe = geMakeProbeWithColor(?name "myProbe"     ?color list( "marker" "error")     ?object list( "/I1/I5/NET10")     ?probeType "net") ``` -------------------------------- ### Setting Area View Levels (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.900.md Sets specific display start and stop threshold levels (0 and 10 in this example) for the area defined by the bounding box `list(0:0 120:120)` within the window `window(3)`. These levels override the window's default levels for this area. ```SKILL geSetAreaViewLevel( window(3) list(0:0 120:120) 0 10 ) ``` -------------------------------- ### Getting Window ID for CellView Display in Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md Returns the ID of a window where a specified cellview is currently displayed. If the cellview is in more than one window, it returns the first one found. Requires the cellview database ID. The example shows getting the window for a cellview named cell3. ```SKILL geGetCellViewWindow( cell3 ) ``` -------------------------------- ### Creating Instance Probes with OnColor - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Illustrates creating an instance probe on object `list("I1" "I2")` and assigning an 'on' color using the `y0`/`drawing` layer. This function specifically highlights instances when active. Requires a valid instance object path/ID and a defined display layer. ```SKILL probe = geMakeProbeWithOnColor(?name "myProbe" ?onColor list( "y0" "drawing") ?object list( "I1" "I2") ?probeType "instance") ``` -------------------------------- ### Getting Instance Hierarchical Path SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Returns a detailed list of lists representing the hierarchical path from the top-level cellview down to the current edit cellview in the window, including instance ID, iteration number, row, and column, especially useful for mosaic instances. It returns `()` if the current view is the top level. Requires the window ID as an argument. ```SKILL geGetInstHierPath( hiGetCurrentWindow( ) ) ``` -------------------------------- ### Getting Instance Hierarchy String in Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md Returns a string representing the hierarchical path of instances descended into or edited-in-place to reach the current cellview in a window. The string uses slashes as separators. Returns "/" if at the top level. The example gets the hierarchy string for the current window. ```SKILL geGetInstHier( getCurrentWindow( ) ) ``` -------------------------------- ### Printing All Probes to File (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1100.md This example opens a file named "myFile" for writing using outfile() and then uses gePrintAllProbe to output details of all probes currently present in the current window (obtained via hiGetCurrentWindow()) to the opened file port. ```SKILL port = outfile( "myFile") gePrintAllProbe( hiGetCurrentWindow( ) port) ``` -------------------------------- ### Modifying Database Object Attributes/Properties (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1650.md Demonstrates using dbSetq, dbSet, and the '~>' operator to modify attribute or property values of a database object. Explains how attribute/property names are handled differently (symbol/string vs. evaluation) and shows examples of attaching/detaching objects via relationship attributes. ```SKILL dbSetq(p 2 width) ; ; Does not evaluate third argument p~\>width = 2 ; ; Equivalent to above p~\>"width" = 2 ; ; Equivalent to above dbSet(p 2 ’width) ; ; Evaluates 1st & 3rd arguments w = ’width ; ; Assigns attribute name dbSet(p 2 w) ; ; "w" is evaluated to width ; Attach figure f to net n: dbSetq(f n net) ; ; Does not evaluate third argument f~\>net = n ; ; Equivalent to above ; Detach figure f from its net: dbSet(f nil ’net) ; ; Evaluates 1st & 3rd argument f~\>net = nil ; ; Equivalent to above ``` -------------------------------- ### Getting Hierarchy Memory Instance Path in Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md Returns a list representing the path taken through hierarchy (descend/edit-in-place) to reach the current cellview in a window. The list contains instance IDs and iteration numbers. Returns nil if at the top level. The example gets the path for the current window. ```SKILL geGetHierMemInst( getCurrentWindow( ) ) ``` -------------------------------- ### Creating Steiner Object - Database API - Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2200.md Creates a simple list of coordinates and uses the `dbCreateSteiner` function with a cellview handle and the coordinate list to instantiate a Steiner object in the database. Requires a valid cellview handle (`cv`). ```Skill steiner1 = dbCreateSteiner(cv list( 4:4 8:8)) ``` -------------------------------- ### Getting Net Name Display Filter Settings SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md Retrieves the current configuration settings for net name display filtering applied to a specific cellview. It returns a property list indicating whether net names are being 'Hide' or 'Show' filtered, along with a list of the specific net names included in the filter. Requires the cellview database ID. ```SKILL window = hiGetCurrentWindow() cellView = geGetEditCellView(window) netNameFilters = geGetNetNameDisplayFilter(cellView) netNameFilters (nil mode "Hide" netNames ("VDD" "VSS")) netNameFilters->mode "Hide" netNameFilters->netNames ("VDD" "VSS") ``` -------------------------------- ### Loading Icon from File in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Creates an icon from a SKILL file containing a Dlist. The example loads the icon named "myIcon" from "myIconFile", setting dimensions to 40x40 and background pixel value to 2. ```SKILL geLoadIcon( "myIcon" "myIconFile" 40 40 2 ) ``` -------------------------------- ### Getting Cellview ID Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.850.md This function retrieves the database identifier (ID) of the cellview currently displayed in the specified window. It requires a window ID as input; the example uses `hiGetCurrentWindow()` to get the active window's ID. The function returns the cellview ID or `nil` if the window is empty or not defined. ```SKILL geGetWindowCellView( hiGetCurrentWindow( ) ) ``` -------------------------------- ### Creating Steiner Object (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Creates a Steiner object in the specified cellview (cv) with the given list of coordinates as its boundary or path. ```SKILL steiner1 = dbCreateSteiner(cv list( 4:4 8:8)) ``` -------------------------------- ### Creating Pie Shape Cadence SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.700.md Demonstrates the `ccCreatePie` function to create pie, donut, or terminated shapes. The first example shows a successful creation of a pie/donut shape with specified angle, start radius, and length. The second example shows a parameter error when the requested `endLength` is too small to generate a cap correctly. ```Cadence SKILL ccCreatePie(cv "waveguide" ?angle 45 ?startRadius 2 ?length 5 ?genFigs nil) ``` ```Cadence SKILL ccCreatePie(cv "waveguide" ?length 5 ?endLength 4) ``` -------------------------------- ### Creating and Displaying Form Cadence Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1650.md Creates a form with library and cell name fields. Includes procedures to display the form and synchronize its fields with a data management browser for cell selection. Requires the Cadence Virtuoso environment with `hi` and `dmb` functionalities. ```SKILL exampleLibName = hiCreateStringField( ?name 'exampleLibName ?prompt "Library Name" ?value "" ?callback "dmbUpdateBrowser( )" ) exampleCellName = hiCreateStringField( ?name 'exampleCellName ?prompt "Cell Name" ?callback "dmbUpdateBrowser( )" ) hiCreateForm( 'exampleOpenForm "Synched Form Example" "exampleOpenForm( )" list( exampleLibName exampleCellName ) "" ) procedure( exampleBrowser( ) dmbSyncWithCellForm( exampleOpenForm 'browse 'exampleLibName 'exampleCellName) ) procedure( exampleOpenForm( ) dmbSyncWithCellForm( exampleOpenForm 'other 'exampleLibName 'exampleCellName ) hiDisplayForm( 'exampleOpenForm ) dmbLibBrowserFormDone( 'other ) ) ``` -------------------------------- ### Getting All Probes (Skill) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1950.md Retrieves a list containing all probes currently present in the specified window. ```Skill probe_list = geGetAllProbe( GetCurrentWindow( ) ) ``` -------------------------------- ### Setting Enable Predicate with geSetEnablePredicate in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md This example demonstrates how to set the enable predicate for a specific menu item and application using `geSetEnablePredicate`. It references a menu item symbol (`leCreateConicsItem`) and then calls `geSetEnablePredicate` with the item, application name ('default'), and a predefined status constant (`lecLayoutIsEditable`), illustrating how predicates are assigned to control menu item behavior. ```SKILL leCreateConicsItem => array[8]:108643592 geSetEnablePredicate(leCreateConicsItem ’default lecLayoutIsEditable) => 2 ``` -------------------------------- ### Creating Tap Steiner Object - Database API - Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2200.md Creates a list of coordinates defining a bounding box and calls `dbCreateTapSteiner` with a cellview handle, bounding box, and layer name ("metal3") to create a tap steiner object. Requires a valid cellview handle (`cv`). ```Skill dbCreateTapSteiner(cv list(-5:-5 0:0) "metal3") ``` -------------------------------- ### Retrieving Enable Predicate with geGetEnablePredicate in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md This example illustrates the usage of `geGetEnablePredicate` to find the enable predicate value associated with a specific menu item symbol and application name. It first references a menu item symbol (`leCreateConicsItem`) and then calls `geGetEnablePredicate` with the item and the application name ('default') to retrieve the predicate value, demonstrating the function's input and output. ```SKILL leCreateConicsItem => array[8]:108643592 geGetEnablePredicate(leCreateConicsItem ’default) => 2 ``` -------------------------------- ### Creating Curve Delta Connector in Virtuoso Photonics (Skill) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2500.md Creates a delta connector defined by deltaX, deltaY, and facet angles, calculating the curve between start and end points. Examples demonstrate various parameter combinations, including basic usage, specifying radii, Rmin, method, cost function, and taper settings. Requires an active Virtuoso session and an editable cellview. ```Skill cv = geGetEditCellView() phoCurveDeltaConnector( cv "waveguide" ?width 0.5 ?deltaX 50.0 ?deltaY 20.0 ?startPortAngle 90.0 ?endPortAngle 270.0 ) ``` ```Skill cv = geGetEditCellView() phoCurveDeltaConnector(cv "waveguide" ?width 0.5 ?deltaX 50.0 ?deltaY 20.0 ?startPortAngle 0.0 ?endPortAngle 33.0 ) ``` ```Skill cv = geGetEditCellView() phoCurveDeltaConnector(cv "waveguide" ?width .5 ?deltaX 50.0 ?deltaY 20.0 ?startPortAngle 90.0 ?endPortAngle 270.0 ?startPortRadius nil / 20 ?endPortRadius nil / 20 ) ``` ```Skill cv = geGetEditCellView() phoCurveDeltaConnector(cv "waveguide" ?width .5 ?deltaX 100.0 ?deltaY 40.0 ?startPortAngle 90.0 ?endPortAngle 270.0 ?startPortRadius 20 ?endPortRadius 20 ?Rmin 10…14 ) ``` ```Skill cv = geGetEditCellView() phoCurveDeltaConnector(cv "waveguide" ?width .5 ?deltaX 100.0 ?deltaY 100.0 ?startPortAngle 90.0 ?endPortAngle 270.0 ?startPortRadius 20 ?endPortRadius 20 ?Rmin 10 ?method 0 ?costFunction nil / list(1 1 0.01 0.5) ) ``` ```Skill cv = geGetEditCellView() phoCurveDeltaConnector( cv "waveguide" ?width 0.7  ?deltaX 50.0 ?deltaY 20.0 ?startPortAngle 90.0 ?endPortAngle 270.0 ?taperStyle 'parabolic ?startWidth 1.0 ?endWidth 4.0 ?taperStartClamp 2.0 ?taperEndClamp 2.0 ) ``` -------------------------------- ### Getting Adjusted Net Path SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Reduces a given hierarchical net path string to the shortest equivalent hierarchical name. The example demonstrates constructing a hierarchical path and then simplifying it using this function. ```SKILL netpath = buildString(foreach(mapcar i geGetHierMemInst(hiGetCurrentWindow()) car(i)->name) "/" ) netPath = strcat("/" netPath "/" "gnd") geGetAdjustedPath( hiGetCurrentWindow() netPath) => "/gnd" ``` -------------------------------- ### Creating Probe With Label SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1950.md Provides two examples of creating probes with labels using `geMakeProbeWithLabel`. The first creates a terminal probe with basic label attributes, while the second creates an instance probe demonstrating how to specify detailed label attributes like offset, font, size, justification, and orientation. ```SKILL probe = geMakeProbeWithLabel(\n?window getCurrentWindow( )\n?name "probe2"\n?object list("I2" "A1")\n?labelName "labelName"\n?labelColor list("y0" "drawing")\n?probeType "terminal"\n?displayStyle "object"\n) ``` ```SKILL probe = geMakeProbeWithLabel(?name "myProbe"\n\t?labelName "myProbeLabel"\n\t?labelColor list("y0" "drawing")\n\t?labelOffset 10:10\n\t?labelFont "gothic"\n\t?labelFontSize 100.\n\t?labelJust "centerCenter"\n\t?labelOrient "R90"\n\t?object list( "I1" "I2")\n\t?probeType "instance") ``` -------------------------------- ### Getting Shape Trim Fill Type (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Creates a simple rectangle shape and then retrieves its trim fill type using dbGetShapeTrimFillType. For a standard rectangle, the trim fill type is 'notTrim'. ```SKILL s1 = dbCreateRect(cv "M1" list(0:0 1:1)) dbGetShapeTrimFillType(s1) => "notTrim" ``` -------------------------------- ### Creating Instance Probe With OnColor SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1950.md Demonstrates how to create an instance probe using the `geMakeProbeWithOnColor` function. The probe is given a name, an object list (instances I1 and I2), a probe type "instance", and a specific highlight color/layer purpose pair ("y0" "drawing") for when it's found. ```SKILL probe = geMakeProbeWithOnColor(?name "myProbe"\n?onColor list( "y0" "drawing")\n?object list( "I1" "I2")\n?probeType "instance") ``` -------------------------------- ### Creating Straight Photonics Connectors (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1650.md Returns a straight connector object in the specified cell view with various options like tapering and auto-widening. Requires a cell view object and a waveguide definition name. ```SKILL cv = geGetEditCellView() phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 10 ?width 0.5) phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 30 ?width 0.7 ?taperStyle 'exp ?startWidth 5 ?endWidth 0.7 ?taperStartClamp 0.1 ?taperEndClamp 0.1 ) phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 30 ?width 0.7 ?autoWide t ?autoWideWideWidth 4.0 ?autoWideMinWideSectionLength 5 ?autoWideStubLength 2.0 ?autoWideTaperStyle 'parabolic ?autoWideTaperLength 5 ) ``` -------------------------------- ### Getting Path Boundary Polygon in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2350.md This function calculates and returns the polygon boundary for a specified path database object. The example demonstrates calling the function immediately after creating a path object with `dbCreatePath`. ```skill dbGetPathBoundary(dbCreatePath(cv '("text" "drawing") list(0:0 10:0 10:10 0:0) 0.1)) ``` -------------------------------- ### Getting Lower Tier Applications (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.800.md Demonstrates using `deGetLowerTierApp` to retrieve a list of application names that are a specified number of tiers lower than a given application in the same family. ```SKILL ``` -------------------------------- ### Loading Next Probe Incrementally from File - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Shows how to load probes one by one from a file (`/tmp/myProbes.out`). It uses a counter variable (`ct`) which the function increments upon successful loading. The example loads the next probe matching the condition where property `myProp` equals "critical". Requires an existing probe file and an active Virtuoso session. ```SKILL m = infile( "/tmp/myProbes.out" ) ct = 0 geLoadNextProbe( window(3) m ’myProp ’equal "critical" ’ct) ``` -------------------------------- ### Getting Route Author in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Retrieves the author string and optionally the sub-author type assigned to a specified route object. It requires the route object and an optional flag to include the sub-author in the return value. ```SKILL rt1 = dbCreateRoute(MainCV mainNet t "normal") dbGetRouteAuthor(rt1) dbGetRouteAuthor(rt1 nil) dbGetRouteAuthor(rt1 t) ``` -------------------------------- ### Get All Area View Levels (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.50.md Retrieves a list of all area view levels currently set for the specified window. The returned list contains information about the areas and their corresponding start and stop levels. ```SKILL geGetAllAreaViewLevel( window(3) ) ``` -------------------------------- ### Creating Straight Waveguide Connectors SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.800.md Provides examples for creating straight photonic waveguide connectors using `phoStraightConnector`. It shows basic usage with offset, rotation, length, and width, as well as options for specifying taper style, start/end width, taper clamps, and auto-widening features with various parameters. ```SKILL cv = geGetEditCellView() phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 10 ?width    0.5) ``` ```SKILL phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 30 ?width    0.7 ?taperStyle 'exp ?startWidth 5 ?endWidth 0.7 ?taperStartClamp 0.1 ?taperEndClamp 0.1 ) ``` ```SKILL phoStraightConnector(cv "waveguide" ?offset 5:5 ?rotation 90 ?length 30 ?width 0.7 ?autoWide t ?autoWideWideWidth 4.0 ?autoWideMinWideSectionLength 5 ?autoWideStubLength 2.0 ?autoWideTaperStyle 'parabolic ?autoWideTaperLength 5 ) ``` -------------------------------- ### Creating Instance Terminal Skill Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.2250.md Demonstrates the process of creating a net, a terminal, and an instance, followed by creating an instance terminal that connects the instance to the net using the specified master terminal. This is fundamental for establishing connectivity in a design database. ```Skill net = dbCreateNet(master "A") term = dbCreateTerm(master "" "input") inst = dbCreateInst(cellview master "" list(0 0) "R0" 1) inNet = dbCreateNet(cellview "inNet") instTerm = dbCreateInstTerm(inNet inst term) ``` -------------------------------- ### Creating Window Hilight Set (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1000.md This code demonstrates creating a highlight set specifically for a given window, rather than a cell view. It takes the window object, a layer/purpose pair or packet name, and an optional flag to control global registration. ```SKILL geCreateWindowHilightSet( window(3) list("metal1" "drawing") nil) ``` -------------------------------- ### Get Instance View Level (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.50.md Retrieves the instance-specific display start and stop threshold levels set for the instance identified by the provided instance ID. Returns a list `(startLevel stopLevel)` or `nil` if not set. ```SKILL geGetInstViewLevel( ) ``` -------------------------------- ### Getting Current Cellview with gec in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1700.md This simple snippet shows how to call the `gec` function, which is a shortcut for `geGetEditCellView`. It demonstrates the basic syntax for retrieving the ID of the cellview currently being edited in the graphical editor. ```SKILL gec() ``` -------------------------------- ### Printing All Probes to File - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Demonstrates printing details of all probes in the current Virtuoso window to a specified output file (`"myFile"`). The `outfile` function is used to open the file handle. Requires an active window containing probes and write access to the file path. ```SKILL port = outfile( "myFile") gePrintAllProbe( hiGetCurrentWindow( ) port) ``` -------------------------------- ### Getting Net Voltage Range in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1400.md Retrieves the minimum and maximum voltage range values currently assigned to a specified net. The example demonstrates how to find a net and then query its voltage range after potentially setting it. ```SKILL cv=dbOpenCellViewByType( "vdr_demo" "inverter_chain" "layout_cv" "" "a" ) net1=dbFindNetByName(cv "IN") db:0x2b1fe19d dbGetNetVoltageRange(net1) =\> (0.0 0.0) dbSetNetVoltageRange(net1 1.5 2.0) =\> t dbGetNetVoltageRange(net1) =\> (1.5 2.0) ``` -------------------------------- ### Loading Next Probe From File SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1950.md Illustrates loading the *next* probe from an input file using `geLoadNextProbe`. It opens a file, initializes a counter, and loads a probe into window 3 if its 'myProp' property is 'equal' to "critical", incrementing the counter 'ct' upon successful load. ```SKILL m = infile( "/tmp/myProbes.out" )\nct = 0\ngeLoadNextProbe( window(3) m ’myProp ’equal "critical" ’ct) ``` -------------------------------- ### Getting All Probes SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Retrieves a list containing all the probes that are currently present and displayed within a specified window. This allows programmatic access to the existing probes. ```SKILL probe_list = geGetAllProbe( GetCurrentWindow( ) ) ``` -------------------------------- ### Creating Probes with Labels - SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Provides two examples of creating graphical probes and assigning labels. The first creates a terminal probe on object `list("I2" "A1")` in the current window with a label "labelName" and specific color. The second creates an instance probe on object `list("I1" "I2")` with detailed label formatting properties like font, size, offset, justification, and orientation. Requires an active design window and valid object paths/IDs. ```SKILL probe = geMakeProbeWithLabel( ?window getCurrentWindow( ) ?name "probe2" ?object list("I2" "A1") ?labelName "labelName" ?labelColor list("y0" "drawing") ?probeType "terminal" ?displayStyle "object" ) probe = geMakeProbeWithLabel(?name "myProbe"     ?labelName "myProbeLabel"     ?labelColor list("y0" "drawing")     ?labelOffset 10:10     ?labelFont "gothic"     ?labelFontSize 100.     ?labelJust "centerCenter"     ?labelOrient "R90"     ?object list( "I1" "I2")     ?probeType "instance") ``` -------------------------------- ### Setting Path Segment Begin Patch in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Adds or removes the `beginStyle` patch type attribute for a specified path segment based on the boolean argument. This property influences how the start point of the path segment is rendered or handled. ```SKILL ps = dbCreatePathSeg(cv "metal1" list(-1 0) list(0 1) .05 "truncate" "truncate") dbSetBeginPatch(ps t) dbGetPatchType(ps) dbSetEndPatch(ps t) dbGetPatchType(ps) dbSetBeginPatch(ps nil) dbGetPatchType(ps) ``` -------------------------------- ### Adding Instance Probe Interactively SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.250.md Enters a mode to interactively add an instance probe to a window, displaying it with a specified or default LPP. If g_repeatCmd is true, it probes all instances in the selection set or enables multiple post-selection; otherwise, it adds a single probe. ```SKILL m = geEnterAddInstProbe( hiGetCurrentWindow() list( "y0" "drawing" ) nil t ) ``` -------------------------------- ### Getting Via Layer Name in SKILL Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.1350.md Retrieves the layer name associated with a specific layer type ('layer1', 'layer2', or 'cutLayer') of a given via object. It's used to query the physical layers connected or used by the via. ```SKILL cv = dbOpenCellViewByType( "tech" "design" "layout" "maskLayout" "w" ) viaDef_M2_M1 = techFindViaDefByName( tf "M2_M1" ) via1t_m2_m1 = dbCreateVia( cv viaDef_M2_M1 10:10 "R0" ) dbGetViaLayer( via1t_m2_m1 "layer1" ) dbGetViaLayer( via1t_m2_m1 "layer2" ) dbGetViaLayer( via1t_m2_m1 "cutLayer" ) ``` -------------------------------- ### Copying a Window (SKILL) Source: https://github.com/kkkkkom/my_dummy_test_batch_step_50/blob/main/skill_test_batch_step_50.800.md Demonstrates how to use the `deCopy` function to create a complete copy of an existing window, including its stack and context data. The example shows copying window with ID 3. ```SKILL deCopy( window(3) ) ```