### 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) )
```