<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.cadence.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Custom IC SKILL - Recent Threads</title><link>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill</link><description>[b]Moderator:[/b] Andrew Beckett.</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 25 Aug 2026 13:24:58 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill" /><item><title>How do I create connectivity through derived layers?</title><link>https://community.cadence.com/thread/66286?ContentTypeID=0</link><pubDate>Tue, 25 Aug 2026 13:24:58 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:9dbeca32-6088-4b6e-9f4d-90decf2452e2</guid><dc:creator>MSchuldt</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66286?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66286/how-do-i-create-connectivity-through-derived-layers/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;I&amp;#39;m writing the techfile for a process, and I have a very special via that has a known top metal, known via layer, but it can land on any of six metal layers.&amp;nbsp; I have defined the top metal, via, and the six lower metals in my techfile, and I&amp;#39;m now trying to create the via definition.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;techDerivedLayers(&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ( BM1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1001&amp;nbsp; &amp;nbsp; (M1 &amp;#39;or M2) ) ; M1-M6 are standard layers, defined in layerDefinitions&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ( BM2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1002&amp;nbsp; &amp;nbsp; (M3 &amp;#39;or M4) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ( BM3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1003&amp;nbsp; &amp;nbsp; (M5 &amp;#39;or M6) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ( BM4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1004&amp;nbsp; &amp;nbsp; (BM1 &amp;#39;or BM2) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ( BOTMET&amp;nbsp; &amp;nbsp; 1000&amp;nbsp; &amp;nbsp; (BM4 &amp;#39;or BM3) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ) ; end techDerivedLayers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;viaDefs(&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; standardViaDefs(&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ( TETHER&amp;nbsp; &amp;nbsp; &amp;nbsp; BOTMET&amp;nbsp; TOPMET&amp;nbsp; (VIA 5.0 5.0) ; TOPMET and VIA are standard layers, defined in layerDefinitions&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ( 1 1 (1.0 1.0) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (0.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0) )&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ) ; end standardViaDefs&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ) ; end viaDefs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;When I try to load my techfile, I see:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;*WARNING* (TECH-2000212): techCreateStdViaDef: Invalid layers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;And it does not define the via.&amp;nbsp; If I replace BOTMET in the via definition with a standard layer, everything is defined properly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;What is the correct way to create a via using a derived layer, or a via which connects to multiple things in different contexts?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;M1-6 are local interconnect-ish layers.&amp;nbsp; The TOPMET and VIA layers are a bit like a staple - TOPMET does not ever touch anything but VIA.&amp;nbsp; This via is being defined for connectivity (use in virtuosoDefaultExtractorSetup), not for use in actual layout.&amp;nbsp; Layout will use a staple pcell which is not constrained to Manhattan geometries.&amp;nbsp; One side of the staple might land on M1, and the other side might land on M6.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Or maybe I&amp;#39;m asking the wrong question entirely.&amp;nbsp; How do I define the connectivity of this staple that can land on six different metals?&amp;nbsp; Or do I need to stop being lazy and create six different via definitions for every flavor of staple?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Any node - Skill for the automatic ruler creation of user-defined lengths ( Working Fine)</title><link>https://community.cadence.com/thread/66285?ContentTypeID=0</link><pubDate>Tue, 25 Aug 2026 04:22:59 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:0ff5a92b-06fa-4b34-b103-60e93cee0460</guid><dc:creator>yogeshjaiswalCAD</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66285?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66285/any-node---skill-for-the-automatic-ruler-creation-of-user-defined-lengths-working-fine/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Greetings&lt;span&gt;&amp;nbsp;&lt;/span&gt;All,&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I am grateful for your assistance whenever I am in need. I aspire to contribute by enriching our community, as we consistently work to strengthen our connections.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;After a detailed assessment of this code, I can affirm that it is an exemplary GUI-focused solution. It requires only the entry of the specified ruler length through the GUI and the binding key to be established just one time&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;/***************************************************************&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* YOGI_PRULER&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* 1. Load code in CIW followed by the procdeure name&amp;nbsp;&lt;span&gt;yogi_pruler_dim()&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* 2. Dimension GUI appears&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* 3. Enter exact dimension in um&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;* 4&amp;nbsp; Click exact&lt;span&gt;&amp;nbsp;&lt;/span&gt;first point&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;(Start Point)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* 5&amp;nbsp;&amp;nbsp;&lt;span&gt;Click anywhere for the second point in the direction you want to create the ruler ( X-Dir or Y-Dir)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;* 6. Exact measurement is created&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp;***************************************************************/&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; =============================================================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; MAIN ACTION CALLBACK: This handles drawing the ruler based on the form&amp;#39;s value&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; =============================================================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;procedure(yogi_pruler_action_cb(form)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; let((win cv dim p1 p2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Get the current active window and its layout cellview content&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; win = hiGetCurrentWindow()&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cv &amp;nbsp;= geGetWindowCellView(win)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Extract the target numeric dimension value directly from the user form&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim = form-&amp;gt;dimField-&amp;gt;value&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; STEP 1: Ask the user to click the initial starting point of the ruler&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1 = enterPoint(?prompts list(&amp;quot;Click the starting point for your ruler&amp;quot;))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; when(p1&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Convert the raw screen cursor coordinates to actual layout canvas coordinates&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1 = geWindowToEditPoint(win p1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; STEP 2: Ask the user to click a second point to determine the drawing direction&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = enterPoint(?prompts list(&amp;quot;Click any point to indicate drawing direction&amp;quot;))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; when(p2&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Convert the second screen coordinates to layout canvas coordinates&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = geWindowToEditPoint(win p2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; STEP 3: Identify whether the user moved more Horizontally or Vertically&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if( abs(car(p2) - car(p1)) &amp;gt;= abs(cadr(p2) - cadr(p1)) then&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; --- HORIZONTAL ROUTE ---&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; If second click is to the right, project rightward. Otherwise, project leftward.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(car(p2) &amp;gt;= car(p1) then&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = list(car(p1) + dim cadr(p1))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = list(car(p1) - dim cadr(p1))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; --- VERTICAL ROUTE ---&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; If second click is higher, project upward. Otherwise, project downward.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(cadr(p2) &amp;gt;= cadr(p1) then&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = list(car(p1) cadr(p1) + dim)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2 = list(car(p1) cadr(p1) - dim)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; STEP 4: Draw the fixed-dimension measurement ruler on the active layout canvas&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; leCreateMeasurement(cv list(p1 p2))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; =============================================================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; MAIN EXECUTION FORM: Creates the user interface dialog box and displays it&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;;; =============================================================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;procedure(yogi_pruler_dim()&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; let((dimField)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Create a clean text box field specifically meant for decimal/float entries&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dimField = hiCreateFloatField(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?name &amp;#39;dimField&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?prompt &amp;quot;Ruler Dimension:&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?value 1.0&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Construct the overall graphical user interface window wrapper&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hiCreateAppForm(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?name &amp;#39;yogiPrulerForm&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?formTitle &amp;quot;Yogi Precision Ruler&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Places the input box at dynamic positioning layout coordinates&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?fields list(list(dimField 0:10 300:30 110))&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Automatically triggers our simplified callback function when user clicks OK/Apply&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?callback &amp;quot;yogi_pruler_action_cb(hiGetCurrentForm())&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?buttonLayout &amp;#39;OKCancelApply&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Pop the completed dialog interface onto the user&amp;#39;s workspace screen&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hiDisplayForm(yogiPrulerForm)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-discussions-components-files/48/pastedimage1787631772215v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I will wait for your response ,&lt;/strong&gt;&lt;strong&gt;Once again thanks for warm gesture&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have a pleasant day!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cheers &amp;amp; regards,&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yogesh Jaiswal&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-11d2po8"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-11d2po8"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-11d2po8"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-11d2po8"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-fs1aka"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-fs1aka"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;
&lt;div class="MuiBox-root css-12m0k8p" data-userid="userid"&gt;
&lt;div class="MuiBox-root css-fs1aka"&gt;
&lt;div class="MuiBox-root css-wwi9pm"&gt;
&lt;div class="MuiBox-root css-1ms9mel"&gt;
&lt;div class="MuiBox-root css-xnqsmy"&gt;
&lt;div class="MuiBox-root css-13dtm9z"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="clevertype-extension-root"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How can a concatenated string be transformed into a variable name?</title><link>https://community.cadence.com/thread/66275?ContentTypeID=0</link><pubDate>Thu, 20 Aug 2026 09:07:56 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:4b349ab0-addb-4d80-b813-fb0ace26d583</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>8</slash:comments><comments>https://community.cadence.com/thread/66275?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66275/how-can-a-concatenated-string-be-transformed-into-a-variable-name/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:150%;"&gt;I want to set a variable name that can change over time. For example: &lt;br /&gt;item=&amp;quot;&amp;quot; &lt;br /&gt;lists=setof(i parseString(getCurrentTime() &amp;quot;&amp;quot;) i!) =&amp;quot; &amp;quot;&amp;amp;&amp;amp;i! =&amp;quot;:&amp;quot;) &lt;br /&gt;foreach(elem lists&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;item=strcat(item elem)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;)&lt;br /&gt;I received the item with the code &amp;quot;Aug201706212026&amp;quot;. &lt;br /&gt;I want to replace the &amp;quot;item&amp;quot; in the variable name &amp;quot;a_item&amp;quot; with &amp;quot;Aug201706212026&amp;quot;, so that the final variable name becomes &amp;quot;a_Aug201706212026&amp;quot;. How can I do this? I tried using `setq(stringToSymbol(strcat(&amp;quot;a_&amp;quot; item)) 5)`, but this caused an error. How should I proceed?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to extract only highest metal Power/Ground/Bulk routing from top-level hierarchy using SKILL/Python in Virtuoso Studio IC 23.1?</title><link>https://community.cadence.com/thread/66272?ContentTypeID=0</link><pubDate>Wed, 19 Aug 2026 06:01:36 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:b3bf9e02-911f-4eb1-a7fd-65ee508f2b3b</guid><dc:creator>AR202509246930</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66272?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66272/how-to-extract-only-highest-metal-power-ground-bulk-routing-from-top-level-hierarchy-using-skill-python-in-virtuoso-studio-ic-23-1/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;p&gt;Hello Cadence Community,&lt;/p&gt;
&lt;p&gt;I am using Cadence Virtuoso Studio IC 23.1 and I am trying to create an automation flow to extract only the highest metal routing shapes for Power/Ground/Bulk nets from a top-level layout.&lt;/p&gt;
&lt;p&gt;I want the script to automatically identify Power, Ground, and Bulk nets from the layout/database, without asking the user to manually provide net names.&lt;/p&gt;
&lt;p&gt;For example, the script should automatically recognize nets like:&lt;/p&gt;
&lt;p&gt;Power nets: VDD, VDD1, VDD2...etc.&lt;br /&gt;Ground nets: VSS, VSSA, VSSB,&amp;nbsp; etc.&lt;br /&gt;Bulk/Well nets: NWELL, DNWELL, BULK, etc.&lt;br /&gt;I am looking for the best way to identify them using net properties, terminal types, global nets, inherited connections, or any recommended Virtuoso database API.&lt;br /&gt;Main challenge&lt;br /&gt;In some designs, the top-level cell may only contain pins for these nets, while the actual metal routing is present inside lower-level sub-blocks.&lt;/p&gt;
&lt;p&gt;So, I do not want to extract only the top-level pin shapes. I want to traverse the hierarchy and identify where the actual routing metal exists for the auto-detected PG/Bulk nets.&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Warning while using asiSelectInst</title><link>https://community.cadence.com/thread/66248?ContentTypeID=0</link><pubDate>Thu, 06 Aug 2026 15:10:04 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d284a0f5-d60a-4c64-b854-aed5af544e23</guid><dc:creator>SK202511261716</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66248?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66248/warning-while-using-asiselectinst/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m developing a form which at a certain point needs to allow the user to select an instance from their schematic. I then need to fetch the database&amp;nbsp;object of that instance to do some further processing. I&amp;#39;m using &lt;code&gt;asiSelectInst&amp;nbsp;&lt;/code&gt;for this, in the following callback from a button on my form:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(procedure selectDUT(field scope)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; (sevOpenSchematic (axlGetToolSession sess testname))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; (asiSelectInst &amp;#39;mydutfield ?prompt &amp;quot;select instance...&amp;quot; ?form myform ?tab (list &amp;#39;mytabs &amp;#39;page1))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;mydutfield&amp;quot; is an uneditable string field. I gave it a callback which fetches the database instance, so whenever asiSelectInst changes the value of the field, the callback is initiated:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(procedure fetchDUTInst(field scope)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; (let&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (cv (geGetEditCellView))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inst&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (setq inst (car (exists obj cv-&amp;gt;instances (equal obj-&amp;gt;name (car (last (parseString scope-&amp;gt;mydutfield-&amp;gt;value &amp;quot;/&amp;quot;)))))))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This works like a charm....almost. Sometimes, when I open the form for the first time, asiSelectInst fails with the following warning, printed to the CIW:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;*Warning* No window and/or doneProc argument passed to&lt;br /&gt; &amp;quot;astiSelectInst&amp;quot;, selection not started&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The value in mydutfield doesn&amp;#39;t change, and the callback is not executed. If I immediately try again, it works no problem, and continues to work all subsequent times. I&amp;#39;ve not been able to determine the exact conditions under which it fails, but it always seems to be when the form/maestro view is first opened.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Am I doing something wrong here?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m on version&amp;nbsp;IC23.1-64b&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Looking for a SKILL/Python Script to Automatically Run Schematic Netlist in Virtuoso IC23.1</title><link>https://community.cadence.com/thread/66241?ContentTypeID=0</link><pubDate>Tue, 04 Aug 2026 09:36:59 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:07614086-a3d3-4fb4-a4ac-5b538e0b01d9</guid><dc:creator>AR202509246930</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66241?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66241/looking-for-a-skill-python-script-to-automatically-run-schematic-netlist-in-virtuoso-ic23-1/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;p&gt;Hi Community,&lt;/p&gt;
&lt;p&gt;I am using &lt;strong&gt;Cadence Virtuoso IC23.1&lt;/strong&gt; and am looking for a SKILL or Python script that can automatically &lt;strong&gt;run schematic netlisting&lt;/strong&gt; by simply providing the &lt;strong&gt;library name&lt;/strong&gt; and &lt;strong&gt;cell (schematic) name&lt;/strong&gt; as inputs.&lt;/p&gt;
&lt;p&gt;The requirement is to run the netlisting process &lt;strong&gt;without opening the schematic in the Virtuoso GUI or in the background&lt;/strong&gt;. Ideally, the solution should:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accept &lt;strong&gt;library name&lt;/strong&gt; and &lt;strong&gt;cell/schematic name&lt;/strong&gt; as inputs.&lt;/li&gt;
&lt;li&gt;Run the schematic netlisting automatically.&lt;/li&gt;
&lt;li&gt;Avoid opening any schematic window.&lt;/li&gt;
&lt;li&gt;Support batch/automated execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Has anyone implemented something similar or know of any available SKILL APIs, Python scripts, or examples that can achieve this in &lt;strong&gt;Virtuoso IC23.1&lt;/strong&gt;?&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to use variable in defcell</title><link>https://community.cadence.com/thread/66212?ContentTypeID=0</link><pubDate>Tue, 28 Jul 2026 19:38:29 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:886f48b0-2b6e-4f49-89c9-e330c884e5f6</guid><dc:creator>MorrisDH</dc:creator><slash:comments>9</slash:comments><comments>https://community.cadence.com/thread/66212?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66212/how-to-use-variable-in-defcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am open to suggestions if there is a better way&amp;nbsp;to create a symbol cellview but the following is what I am using.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;defcell(&amp;quot;realCellName&amp;quot; defSymbol( nil ) )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It works fine for a basic symbol with no pins which is all I need. It creates a symbol cellview under the cell &amp;quot;realCellName&amp;quot;.&lt;br /&gt;&lt;br /&gt;The following does not work as expected.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;cellName = &amp;quot;realCellName&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;defcell(cellName defSymbol( nil ))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;It creates a new cell named &amp;quot;cellName&amp;quot; instead of parsing the variable. Is it not possible for defcell to recognize variables?&lt;br /&gt;&lt;br /&gt;Or maybe there is a better way to create simple symbol cellviews.&lt;br /&gt;&lt;br /&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Hi, How to hide a set of parameter section in pcell generation using "pcDefinePCell()" fuction</title><link>https://community.cadence.com/thread/66199?ContentTypeID=0</link><pubDate>Sun, 26 Jul 2026 17:44:37 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:24f5e97d-9c4c-4773-940d-16bf19171bfc</guid><dc:creator>Ganesh B</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66199?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66199/hi-how-to-hide-a-set-of-parameter-section-in-pcell-generation-using-pcdefinepcell-fuction/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, How to hide a set of parameter section in pcell generation using &amp;quot;pcDefinePCell()&amp;quot; fuction. Can anyone help?&lt;br /&gt;&lt;br /&gt;Just like this.&lt;br /&gt;&lt;br /&gt;&lt;img style="max-height:480px;max-width:640px;" src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-discussions-components-files/48/pastedimage1785087835891v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to make a cellview read-only?</title><link>https://community.cadence.com/thread/66193?ContentTypeID=0</link><pubDate>Thu, 23 Jul 2026 08:44:10 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1497bf8b-a3a8-45d7-b0ca-02c355b78fba</guid><dc:creator>JJ202502261359</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66193?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66193/how-to-make-a-cellview-read-only/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I want to implement the &lt;span style="color:#0000ff;"&gt;&amp;quot;Make Read Only&amp;quot;&lt;/span&gt; function found in the Virtuoso menu using SKILL.&lt;br /&gt;&lt;br /&gt;Virtuoso must revert to the last saved state without closing the layout GUI.&lt;br /&gt;&lt;br /&gt;1. dbPurge() has an issue where the GUI window closes.&lt;br /&gt;2. When proceeding with dbReopen(&amp;quot;r&amp;quot;) after hiUndo() multiple times,&lt;br /&gt;&amp;nbsp;&amp;nbsp; the undo operation is incomplete due to the limit on the number of undo steps.&lt;br /&gt;3. If I open a layout in &amp;quot;r&amp;quot; mode and then modify it using `dbCreatePath`, the action cannot be undone.&lt;br /&gt;&lt;br /&gt;Based on points 1, 2, and 3, implementing &lt;span style="color:#0000ff;"&gt;&amp;quot;Make Read Only&amp;quot;&lt;/span&gt; using Skill proved difficult.&lt;br /&gt;&lt;br /&gt;Is there a possible way to do it&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Automatization of Maestro view and schematic (testbench) for simulation of multiple results</title><link>https://community.cadence.com/thread/66185?ContentTypeID=0</link><pubDate>Tue, 21 Jul 2026 10:08:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:db1c1968-4a46-4d79-a82d-e48c2051ffba</guid><dc:creator>OG202503213520</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66185?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66185/automatization-of-maestro-view-and-schematic-testbench-for-simulation-of-multiple-results/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;br /&gt;I have a design that I need to verify and do the simulation , to give an idea , it had multiple inputs and outputs and they depend on internal values. I need to simulate each input with different output to see the delay.&lt;br /&gt;&lt;br /&gt;Is there a way by which I can automatize the changing of equations in maestro setup depending on the inputs and outputs? Also , depending in the inputs and outputs selected , I need to automatically make changes in the testbench.&lt;br /&gt;&lt;br /&gt;For the moment I think using &amp;quot;skillbrigde&amp;quot; (skill functions using python) the generation of schematic can be done writing a code , but I dont understand how I can make the link with maestro testbench.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have any solutions , please let me know.&lt;br /&gt;&lt;br /&gt;Thank you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Specify reference verilog file returns **NONE** in hierarchy editor for grouped cells</title><link>https://community.cadence.com/thread/66184?ContentTypeID=0</link><pubDate>Tue, 21 Jul 2026 08:11:22 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:91301180-2bef-45e9-a63d-bf2cddbd8083</guid><dc:creator>ArthurP</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66184?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66184/specify-reference-verilog-file-returns-none-in-hierarchy-editor-for-grouped-cells/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;br /&gt;&lt;br /&gt;To give some context I want to run Mixed Signal simulator with AMS and I run Cadence 20.1.&lt;br /&gt;After setting up the simulator, I have to replace the schematic views that we usually use in our analog flow in the Hierarchy Editor by their verilog model: the cells only contains schematic, layout, and symbol views and that cannot be changed.&lt;/p&gt;
&lt;p&gt;Because of a different design methodologies among designers we have two standard cell types: with and without power pins. They both have the same model core. Every verilog modules are listed in a two .v files given by the founder with lib_pwr.v models for cells with power pins and lib.v models for cells without power pins.&lt;br /&gt;&lt;br /&gt;I can easily replace the first cell type by their verilog models by precompiling lib.v verilog file, setting up &amp;quot;View found&amp;quot; as &amp;quot;Symbol&amp;quot;, and changing &amp;quot;View list&amp;quot; so that &amp;quot;verilog&amp;quot; appears first. The simulation runs.&lt;br /&gt;&lt;br /&gt;For the second type of standard cells, I first select relevant cells, use &amp;quot;Set Cell View&amp;quot;, &amp;quot;Specify Reference Verilog&amp;quot; and select lib_pwr.v file in the interface. This also runs.&lt;/p&gt;
&lt;p&gt;However, for grouped cells in the schematic with Ix&amp;lt;N:0&amp;gt; syntax, the Hierarchy Editor reports **NONE**: &amp;quot;This cell is explicitly bound to the &amp;#39;module&amp;#39; view. The &amp;#39;module&amp;#39; view does not exist for this cell&amp;quot; and path to .v file does not appear. The simulation cannot be launched.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;It is possible to set them one by one in &amp;quot;Tree view&amp;quot; and run the simulation properly, but I cannot practically do this as there are hundreds of cells.&lt;/p&gt;
&lt;p&gt;Note that both cells type could be linked to their verilog models using &amp;quot;Specify Reference Verilog&amp;quot;.&lt;br /&gt;&lt;br /&gt;Questions arise:&lt;/p&gt;
&lt;p&gt;Verilog reference file works fine with single cells but not with grouped cells, is this normal behavior ? Is their any known workaround ?&lt;br /&gt;Can the config file be exported, manually modified and imported ? &amp;quot;Save as verilog&amp;quot; returns an empty file.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;Arthur&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Export measurement units with axlExportOutputView() (ADE Maestro Results/Monte Carlo)</title><link>https://community.cadence.com/thread/66167?ContentTypeID=0</link><pubDate>Thu, 16 Jul 2026 11:13:38 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:38b8b069-0f94-4127-8aac-641144c8d0e1</guid><dc:creator>Johanny Saenz</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66167?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66167/export-measurement-units-with-axlexportoutputview-ade-maestro-results-monte-carlo/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="isSelectedEnd"&gt;&lt;span&gt;Hello,&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;I am using the following SKILL commands to export ADE Maestro Monte Carlo results to CSV:&lt;/span&gt;&lt;/p&gt;
&lt;pre dir="ltr"&gt;&lt;code dir="ltr"&gt;&lt;span&gt;sess = axlGetWindowSession()

csvFilePath = &amp;quot;BANDGAP_MC_Export.csv&amp;quot;

axlExportOutputView(sess csvFilePath &amp;quot;Results&amp;quot; ?history &amp;quot;MC&amp;quot;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;This successfully exports the numerical results, and the same approach also works for other output views (e.g., Summary, Yield, etc.).&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;However, I have not found a way to export the &lt;/span&gt;&lt;strong&gt;&lt;span&gt;measurement units&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; associated with each output. For example, I would like to obtain a column containing units such as:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;&lt;span&gt;V&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;dB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;deg;C&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;deg&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Hz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;s&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;%&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;or any other unit defined for the measurement.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;I searched the SKILL documentation and experimented with &lt;/span&gt;&lt;code dir="ltr"&gt;&lt;span&gt;axlExportOutputView()&lt;/span&gt;&lt;/code&gt;&lt;span&gt;, but I could not find any option that exports the units together with the results.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;My questions are:&lt;/span&gt;&lt;/p&gt;
&lt;ol start="1" data-spread="false"&gt;
&lt;li&gt;&lt;span&gt;Is there an option in &lt;/span&gt;&lt;code dir="ltr"&gt;&lt;span&gt;axlExportOutputView()&lt;/span&gt;&lt;/code&gt;&lt;span&gt; to include the measurement units in the generated CSV?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;If not, is there another SKILL API that allows retrieving the units for each output expression programmatically?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Are the units stored in the Maestro session database and accessible through another object or function?&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;For reference, I am using Virtuoso ADE Maestro with Spectre (ICADVM 20.1 ISR75).&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;The motivation is to generate automated reports from the exported CSV files, where each measurement includes its corresponding engineering unit.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span&gt;Any suggestions would be greatly appreciated.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>preview for analogLib sources without running a simulation,</title><link>https://community.cadence.com/thread/66153?ContentTypeID=0</link><pubDate>Fri, 10 Jul 2026 09:10:52 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:e5ef40d0-0708-46bb-a892-5f5213a6069f</guid><dc:creator>dogman4</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66153?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66153/preview-for-analoglib-sources-without-running-a-simulation/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi，friends&lt;/p&gt;
&lt;p&gt;&lt;span&gt;What methods are there to preview analogLib sources without running a simulation?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;My virtuoso version: &amp;quot;@(#)$CDS: virtuoso version 6.1.8-64b 09/03/2024 19:11 (sjfhw316) $&amp;quot;&lt;br /&gt;My spectre version: Version19.1.0.063 64bit--10 Aug 2019&lt;/span&gt;&lt;/p&gt;
&lt;div id="phraseJoinewrskdfdswerhnyikyofd" data-v-app=""&gt;
&lt;div class="xx-qy-style-dark" data-v-f4d4888e=""&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to run an interactive external script from SKILL?</title><link>https://community.cadence.com/thread/66124?ContentTypeID=0</link><pubDate>Wed, 01 Jul 2026 11:57:53 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:39e0230a-7a09-4293-bbeb-27ff3690c0dc</guid><dc:creator>LoVyacheslavvVEMs</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/66124?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66124/how-to-run-an-interactive-external-script-from-skill/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="isSelectedEnd"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;I need to launch an external script from SKILL. The script itself is not under my control - it may be a shell script, Python script, executable, or any other program.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;The important part is that the script may pause at arbitrary points and wait for user input from stdin. When this happens, I would like to prompt the user in Virtuoso (for example, using an AppForm), send the entered text back to the running process, and then continue its execution.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;I know about &lt;code dir="ltr"&gt;system()&lt;/code&gt; and &lt;code dir="ltr"&gt;ipcBeginProcess()&lt;/code&gt;, but I&amp;#39;m not sure whether SKILL supports this kind of interactive communication with a child process.&lt;/span&gt;&lt;/p&gt;
&lt;p class="isSelectedEnd"&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;Is there a supported way to:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;launch an external interactive process from SKILL;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;detect when it is waiting for input;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;font-size:150%;"&gt;send user input back to the process while it is running?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Thanks in advance.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>maeGroupAsParametricSet has no ?session argument</title><link>https://community.cadence.com/thread/66122?ContentTypeID=0</link><pubDate>Wed, 01 Jul 2026 09:12:35 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:0231d9be-20f1-4b27-a959-dd9b95b706a4</guid><dc:creator>SK202511261716</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66122?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66122/maegroupasparametricset-has-no-session-argument/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I have a SKILL script running inside a form which at one point needs to create a parametric set for the Design Variables of a particular Test. I&amp;#39;m using maeGroupAsParametricSet for this, and it&amp;#39;s worked well so far. Unfortunately I&amp;#39;ve just run into a problem: if I have multiple maestro windows open, maeGroupAsParametricSet starts to misbehave. Unlike other mae functions, it can&amp;#39;t be provided a ?session argument. So if I run my form from the second maestro view that I&amp;#39;ve opened, it will fail to find the Test I specify, because it&amp;#39;s looking for it in the first maestro view. I tested this with maeGetTestSession: if I don&amp;#39;t provide the ?session argument, it returns nil, whereas if I do provide it, it runs successfully. This suggests to me that maeGroupAsParametricSet is looking in the first view by &amp;quot;default&amp;quot;, and lacking a ?session argument it can&amp;#39;t be told to look elsewhere. Am I misunderstanding something here, or is there a workaround for this?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The warning message that appears after calling maeGroupAsParametricSet reads as follows:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;WARNING (ASSEMBLER-1602): Cannot find test &amp;lt;TESTNAME&amp;gt; in the setup database. The test name passed to this function does not exist in the setup database. Perhaps the name was misspelled or has not yet been created. The test needs to be created before calling this function.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;I&amp;#39;m on version IC23.1-64b&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Prevent Net Extraction for Shapes</title><link>https://community.cadence.com/thread/66080?ContentTypeID=0</link><pubDate>Wed, 17 Jun 2026 07:44:07 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:0dba0de2-ca40-40b2-9ce7-a749af8f13e4</guid><dc:creator>PK202501238151</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66080?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66080/prevent-net-extraction-for-shapes/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;is there a way to prevent net extraction for specific shapes? I&amp;#39;m generating layouts with external tools and mark the with `lxStickyNet = t` to prevent their nets to change by the extraction. However, there are also shapes that have no net assigned, and they change connectivity, even though lxStickyNet is set.&lt;/p&gt;
&lt;p&gt;Thanks, kind regards,&lt;/p&gt;
&lt;p&gt;Patrick&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is there any callback feature for layout that triggers any property change for instance?</title><link>https://community.cadence.com/thread/66077?ContentTypeID=0</link><pubDate>Tue, 16 Jun 2026 20:20:09 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:29142f9c-ecd6-412a-bcae-0f62a3a39055</guid><dc:creator>MM20260514770</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66077?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66077/is-there-any-callback-feature-for-layout-that-triggers-any-property-change-for-instance/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am trying to port some in house script from TCL to skill for virtuoso.&amp;nbsp;I am unable to find any callback code for layout that could perform following task.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For example,&amp;nbsp;let&amp;#39;s say I have an instance and a track region is&amp;nbsp;fully covering it. Is there any callback that will trigger when that particular instance has any change of property for example origin change, or row/col number changed for mosaic?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In TCL there was a callback available which will pass the modified instance object and I can filter out if the cell name matches and then my fuction could extend/shrink or shift the track region so that it still fully covers the instance.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Tanvir&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ipcSkillProcess and results buffering</title><link>https://community.cadence.com/thread/66074?ContentTypeID=0</link><pubDate>Tue, 16 Jun 2026 11:45:05 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:6b9d87a7-7b99-4d16-9e7f-938ac9b52a91</guid><dc:creator>BS202501273649</dc:creator><slash:comments>7</slash:comments><comments>https://community.cadence.com/thread/66074?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66074/ipcskillprocess-and-results-buffering/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am using &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;ipcSkillProcess&lt;/span&gt; to allow a Python program to send SKILL commands to Virtuoso and consume the results.&amp;nbsp; &amp;nbsp;It all works very well - I use &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;read&lt;/span&gt; on the Python side and it gets back bytes containing the result of evaluating the command sent.&lt;/p&gt;
&lt;p&gt;In production I generally haven&amp;#39;t seen any problems but in theory it seems I should worry about the length of the results - the read could provide a buffer&amp;#39;s worth but there might be more to come.&amp;nbsp; The&amp;nbsp;manual&amp;nbsp;talks about a 4096 byte buffer but I&amp;#39;ve certainly got more than that in a single read.&amp;nbsp; But I have been able&amp;nbsp;to exceed some buffer size somewhere&amp;nbsp;in a testing scenario by making the result of the evaluation very long.&amp;nbsp; Then my Python program only gets the first part of the results truncated and the rest comes through in the next read.&amp;nbsp; Not sure if that is a Python or a Virtuoso buffer size.&lt;/p&gt;
&lt;p&gt;I&amp;nbsp;could fix that by forcing some delimiters into the results and in Python reading until I get the terminating delimiter but that&amp;#39;s a bit constraining on the results format.&amp;nbsp; &amp;nbsp;Or I&amp;nbsp;could maybe check for the buffer being full somewhere (on the Python side or the Virtuoso side?) and giving an error or special casing it somehow.&lt;/p&gt;
&lt;p&gt;Neither seem very attractive.&amp;nbsp; Is there a sensible standard pattern for handling this?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Lock icon appears when SKILL PCell is loaded</title><link>https://community.cadence.com/thread/66069?ContentTypeID=0</link><pubDate>Mon, 15 Jun 2026 12:59:40 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:97d65b99-a187-4976-a607-3f8cab6dfa69</guid><dc:creator>thiruvenkata</dc:creator><slash:comments>6</slash:comments><comments>https://community.cadence.com/thread/66069?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66069/lock-icon-appears-when-skill-pcell-is-loaded/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-path-to-node="4"&gt;Hi All,&lt;/p&gt;
&lt;p data-path-to-node="5"&gt;I noticed something new while creating PCells using SKILL. Whenever I load the SKILL PCell, a user lock icon appears in the view type section. The only way I can get rid of it is by opening and closing the supermaster cellview.&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;I am currently using the &lt;code data-path-to-node="6" data-index-in-node="25"&gt;pcCellView&lt;/code&gt; variable in my PCell development. Is there an internal variable or a proper method to automatically close the PCell cellview after it opens, creates the required geometries, and finishes processing?&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;I cannot attach screenshot for some reason, so I&amp;#39;ll share the screenshot using image hosting:&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;&amp;nbsp;&lt;a href="https://github.com/user-attachments/assets/1bc9ff6b-08f0-4875-bbd1-942fb96273bf"&gt;github.com/.../1bc9ff6b-08f0-4875-bbd1-942fb96273bf&lt;/a&gt;&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to make the well proximity effect default to auto?</title><link>https://community.cadence.com/thread/66065?ContentTypeID=0</link><pubDate>Fri, 12 Jun 2026 10:38:51 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:33ba7781-7449-4cf2-a784-7e75190e7280</guid><dc:creator>RM202605273230</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/66065?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66065/how-to-make-the-well-proximity-effect-default-to-auto/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello&amp;nbsp;&lt;br /&gt;&lt;br /&gt;How to make the well proximity effect default to auto? i am currently using the tsmc 65nm where after placing the each transistor i have to go in symbol properties and make the well proximity option to auto instead i am looking for some option default all transistor can be make to auto in 1 go ?&lt;br /&gt;&lt;br /&gt;thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ipcGetExitStatus() does not give correct return value</title><link>https://community.cadence.com/thread/66005?ContentTypeID=0</link><pubDate>Wed, 20 May 2026 15:09:44 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:3a7117cb-5b92-4bc4-a319-797d91bf5f4c</guid><dc:creator>mbracht</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66005?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66005/ipcgetexitstatus-does-not-give-correct-return-value/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;am running a bash shell script as an ipc process...like this&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp;(let (ipc)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ipc=(ipcBeginProcess &amp;quot;myScript.bsh 0&amp;quot;)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ipcWait(ipc)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ipcGetExitStatus(ipc)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp;)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The bash script &lt;em&gt;myScript.bsh&lt;/em&gt; is simple, it&amp;#39;s return value is whatever I pass in as an argument&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp;#!/bin/bash&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp;exit $1&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;However I keep getting 127 from ipcGetExitStatus(..) - regardless from whatever the bash script actually returns.&lt;br /&gt;Strangely it works for Unix built-in commands like for example &amp;quot;ls&amp;quot;.&lt;br /&gt;&lt;br /&gt;Any idea?&lt;br /&gt;&lt;br /&gt;thanks&lt;br /&gt;Max&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re-evaluate results in assembler via SKILL?</title><link>https://community.cadence.com/thread/66000?ContentTypeID=0</link><pubDate>Mon, 11 May 2026 16:02:11 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d3a82f80-8aa4-47f6-b644-9b04be33bbd2</guid><dc:creator>leok</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66000?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66000/re-evaluate-results-in-assembler-via-skill/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I might be blind, but I cannot find the SKILL function which does the same as clicking the &amp;quot;re-evaluate&amp;quot; button in the assembler results... Is there one?&lt;br /&gt;&lt;span class="--l --r lmt_write_context_menu_highlight lmt_write_context_menu_interacted_sentence_highlight"&gt;&lt;span&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;It&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;would&lt;/span&gt; &lt;span class="--l --r"&gt;&lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;be&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;useful&lt;/span&gt;&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;as&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;I&amp;#39;m&lt;/span&gt; &lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;creating&lt;/span&gt;&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;a&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;report&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;generator&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;and&lt;/span&gt; &lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;want&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;to&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;ensure&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;that&lt;/span&gt;&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;I&lt;/span&gt; &lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;can&lt;/span&gt;&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;see&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;the&lt;/span&gt; &lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;latest&lt;/span&gt; &lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;&lt;span class="--l --r hover:dark:text-blue-300 hover:text-blue-500 lmt__words_highlight"&gt;results&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="--l --r lmt_write_context_menu_highlight lmt_write_context_menu_interacted_sentence_highlight"&gt;&lt;span&gt;&lt;span class="--l --r"&gt;&lt;span class="--l --r border-b-2 border-green-100 dark:border-green-500 dark:text-green-300 lmt__write_highlight relative text-green-600"&gt;Best Regards,&lt;br /&gt;leo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>print pins into csv file</title><link>https://community.cadence.com/thread/65996?ContentTypeID=0</link><pubDate>Sat, 09 May 2026 06:17:12 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:4f4912a3-22d3-469c-8816-29aded49d355</guid><dc:creator>gangliurfic</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65996?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/65996/print-pins-into-csv-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I want to select an instance in a schematic and then call a function to save all the pins, name, direction, signal type, net into a csv file.&lt;/p&gt;
&lt;p&gt;Is there such a build in function in Cadence?&lt;/p&gt;
&lt;p&gt;I have a code working for name and direction, but got stuck at signal type&lt;/p&gt;
&lt;p&gt;Below is the part of the code i am using, name and direction works fine, but signal type returns nil, so I am getting errors for fprint.&lt;/p&gt;
&lt;p&gt;pinname=instTerm~&amp;gt;term-&amp;gt;name&lt;br /&gt;pindirection=instTerm~&amp;gt;term-&amp;gt;direction&lt;br /&gt;pinsig=instTerm~&amp;gt;term~&amp;gt;sigType&lt;br /&gt;netname=instTerm~&amp;gt;term~&amp;gt;net~&amp;gt;name&lt;br /&gt;fprintf(myPort &amp;quot;\n%s\t%s\t%s\t%s&amp;quot; pinname pindirection &amp;quot;not working yet&amp;quot; netname)&lt;/p&gt;
&lt;p&gt;How can this be fixed?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Skill script to auto save upon streamout, and upon page up throughout layout hierarchy</title><link>https://community.cadence.com/thread/65995?ContentTypeID=0</link><pubDate>Fri, 08 May 2026 16:58:23 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:8a030e53-3ac6-4fc0-9995-56b8ac472776</guid><dc:creator>blankman</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65995?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/65995/skill-script-to-auto-save-upon-streamout-and-upon-page-up-throughout-layout-hierarchy/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, Haven&amp;#39;t had the time to look into creating this via Skill myself yet, just putting feelers out to see if anything already exists. Had a look through existing posts but coud not locate.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Just wondering if there is a possibility to autosave upon streamout within Virtuoso?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also, is it possible to setup an auto save feature to auto save upon page up through layout hierarchy?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am trying to minimize the amount of popups I see asking me if I want to save the cellview if layout edits have been made but not saved.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Any help very much appreciated,&lt;/p&gt;
&lt;p&gt;Kr,&lt;/p&gt;
&lt;p&gt;Brian.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to make the variables and utilize the coordinates.</title><link>https://community.cadence.com/thread/65980?ContentTypeID=0</link><pubDate>Mon, 04 May 2026 04:50:48 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:eb94345f-1d34-4bcb-97c6-3bbce43ed319</guid><dc:creator>Noobnoob</dc:creator><slash:comments>7</slash:comments><comments>https://community.cadence.com/thread/65980?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/65980/how-to-make-the-variables-and-utilize-the-coordinates/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello, i&amp;#39;m sorry for my english skill.&lt;/p&gt;
&lt;p&gt;As a title, i wonder how to make variables and count those.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m making Layout Skill that count Channel of MOS by using skill language.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For example,&lt;/p&gt;
&lt;p&gt;if two MOS that have w = 5um &amp;amp; l = 5um and two MOS that have w = 3um &amp;amp; l = 5um are placed in top level Layout Cellview.&lt;/p&gt;
&lt;p&gt;I want to show that number of each MOS that include channel size in CIW.&lt;/p&gt;
&lt;p&gt;CIW :&lt;/p&gt;
&lt;p&gt;width = 5um &amp;amp; length = 5um, multi = 2ea&lt;/p&gt;
&lt;p&gt;width = 3um &amp;amp; length = 5um, multi = 2ea&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Presently, i got coordinate of each channel in top level.&lt;/p&gt;
&lt;p&gt;But, i have trouble with utilzing coordinates...&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;How can i make variables by size and count those....?&lt;/p&gt;
&lt;p&gt;below, i made a script by using skill language and wonder how to utilize coordinates.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>