<?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>Wed, 14 Oct 2026 03:18:27 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill" /><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1434946?ContentTypeID=1</link><pubDate>Wed, 14 Oct 2026 03:18:27 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:81d010d5-dde0-4eec-b050-38e6c077afc0</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1434946?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;rsquo;ve only touched PDK (Skill/PCell) for half a year and haven&amp;rsquo;t systematically learned process knowledge and Skill coding. So I&amp;rsquo;m using these PCell codes as my entry point for structured study. Despite some bugs, they let me understand the general framework. Haha, I still need to learn much more about process and Skill.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/70345?ContentTypeID=0</link><pubDate>Tue, 29 Sep 2026 04:16:30 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:018c828b-c248-4723-8545-415b83436ab1</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>9</slash:comments><comments>https://community.cadence.com/thread/70345?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Cadence provided us with the Skill code for the MOS PCell. I&amp;#39;ve been learning it and ran into some issues, so I&amp;#39;d appreciate your help. Thanks.&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#00ccff;"&gt;Known information&lt;/span&gt; (from Cadence official):&lt;/p&gt;
&lt;p&gt;;;substrateContact? specifies whether contacts are necessary or not on the&lt;br /&gt;;; source and drain of the transistor, and then creates it.&lt;/p&gt;
&lt;p&gt;;;leftContact? the left side of the transistor be it the source or &lt;br /&gt;;; drain&lt;br /&gt;&lt;br /&gt;;;rightContact? the right side of the transistor be it the source or &lt;br /&gt;;; drain&lt;/p&gt;
&lt;p&gt;;;transistor_length length of the transistor&amp;#39;s active area &lt;br /&gt;;; (note: this is a distance measured in the X-direction).&lt;br /&gt;;; (float, default = 1.0)&lt;/p&gt;
&lt;p&gt;;; car(substrateRules) = tap diffusion layer.&lt;br /&gt; ;; cadr(substrateRules) = tap diffusion contact enclosure.&lt;br /&gt; ;; caddr(substrateRules) = tap diffusion to active spacing.&lt;br /&gt; ;; cadddr(substrateRules) = tap diffusion to gate poly spacing.&lt;br /&gt; ;; car(cddddr(substrateRules)) = tap implant rules.&lt;/p&gt;
&lt;p&gt;;;contactWidth the width of the contact layer being used for&lt;br /&gt;;; connections&lt;br /&gt;;; (default = 1.0)&lt;/p&gt;
&lt;p&gt;(leftStretch techGetSpacingRule(techGetCurrentTechFile() &amp;quot;minSpacing&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techParam(&amp;quot;poly&amp;quot;) techParam(&amp;quot;cont&amp;quot;)) + techGetSpacingRule(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techGetCurrentTechFile() &amp;quot;minWidth&amp;quot; techParam(&amp;quot;cont&amp;quot;)) +&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techGetOrderedSpacingRule(techGetCurrentTechFile() &amp;quot;minEnclosure&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techParam(&amp;quot;ndiff&amp;quot;) techParam(&amp;quot;cont&amp;quot;)) )&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; (rightStretch techGetSpacingRule(techGetCurrentTechFile() &amp;quot;minSpacing&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techParam(&amp;quot;poly&amp;quot;) techParam(&amp;quot;cont&amp;quot;)) + techGetSpacingRule(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techGetCurrentTechFile() &amp;quot;minWidth&amp;quot; techParam(&amp;quot;cont&amp;quot;)) +&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techGetOrderedSpacingRule(techGetCurrentTechFile() &amp;quot;minEnclosure&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;techParam(&amp;quot;ndiff&amp;quot;) techParam(&amp;quot;cont&amp;quot;)) )&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;Code segment with questions&lt;/span&gt;&amp;nbsp;&lt;span&gt;(from Cadence official):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;;;*************************************************************************&lt;br /&gt;;;&lt;br /&gt;;;The following adjusts the rightStretch to account for the substrateContact&lt;br /&gt;;;---------------------------------------------------------------------&lt;br /&gt;;;&lt;br /&gt;;;*************************************************************************&lt;br /&gt; when( substrateContact? &amp;amp;&amp;amp; substrateContact? !=&amp;quot;FALSE&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( leftContact? &amp;amp;&amp;amp; leftContact? != &amp;quot;FALSE&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rightContact? &amp;amp;&amp;amp; rightContact? != &amp;quot;FALSE&amp;quot; then&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xtrWidth = leftStretch + transistor_length + rightStretch&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;minSubTie = contactWidth + 2 * cadr(substrateRules)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;; fprintf( stdout &amp;quot;xtrWidth minSubTie %L\n&amp;quot; list(xtrWidth minSubTie) )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;when( xtrWidth &amp;lt; minSubTie&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rightStretch = rightStretch + minSubTie - xtrWidth&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;br /&gt; )&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color:#00ff00;"&gt;My Questions&lt;/span&gt;:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1.The source code uses an if-then-else structure. I believe the correct form should be either if-then or if-else.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2.What is the purpose of this piece of code? Why does it only adjust &lt;code&gt;rightStretch&lt;/code&gt;, with no case to adjust &lt;code&gt;leftStretch&lt;/code&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3.&lt;/span&gt;I am particularly confused by this line of code:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;when( xtrWidth &amp;lt; minSubTie&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rightStretch = rightStretch + minSubTie - xtrWidth&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/span&gt;&lt;code&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Why do we need to consider the scenario where &lt;code&gt;xtrWidth&lt;/code&gt; is smaller than &lt;code&gt;minSubTie&lt;/code&gt;? And why is &lt;code&gt;rightStretch&lt;/code&gt; calculated as &lt;code&gt;rightStretch + minSubTie - xtrWidth&lt;/code&gt; under this condition?&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I would appreciate your insights. Thank you.&lt;br /&gt;Steve&lt;/span&gt;&lt;/p&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1434916?ContentTypeID=1</link><pubDate>Sun, 11 Oct 2026 21:18:59 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:342eefef-8406-4d18-8997-8ee04f838fb8</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434916?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Yes, that&amp;#39;s correct. You&amp;#39;d have seen that if you&amp;#39;d tried it (which is what I did). It&amp;#39;s clearly an assumption in the code (trying to cater for every possible scenario is hard, and in most technologies I&amp;#39;ve seen the gate extension is larger than the poly to diffusion spacing so it probably didn&amp;#39;t get caught in testing when this&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;sample&lt;/span&gt; was created almost 30 years ago. It is a sample after all - not guaranteed to be perfect.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1434901?ContentTypeID=1</link><pubDate>Thu, 08 Oct 2026 03:19:30 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:63d2bbbf-ffe5-476d-90dc-67c1d9d41136</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434901?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Andrew,&lt;/p&gt;
&lt;p&gt;I came across a new problem when going over the code and hope to get your input.&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt;Code segment with questions&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;(from Cadence official):&lt;/span&gt;&lt;br /&gt; ;; Route poly if needed&lt;br /&gt; when(routePoly &amp;amp;&amp;amp; routePoly != &amp;quot;FALSE&amp;quot; &amp;amp;&amp;amp; numberOfFingers &amp;gt; 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;strap_width = ((numberOfFingers - 1) * gatePitch) +&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;transistor_length&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;strap_offset = gate_Extension - diffusionGateSpace&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;polyfig = rodCreatePath(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?cvId cellViewId&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?layer gateLayer&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?width minPolyWidth&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?pts list(0:0 strap_width:0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?termName &amp;quot;G&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?pin t&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?termIOType &amp;quot;input&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;cond(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( routePolydir == &amp;quot;Top&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rodAlign(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?alignObj polyfig&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?alignHandle &amp;quot;lowerRight&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?refObj topPin&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?refHandle &amp;quot;upperRight&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?ySep -strap_offset&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( routePolydir == &amp;quot;Bottom&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rodAlign(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?alignObj polyfig&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?alignHandle &amp;quot;upperRight&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?refObj botPin&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?refHandle &amp;quot;lowerRight&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?ySep strap_offset&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;polyfig~&amp;gt;dbId~&amp;gt;pin~&amp;gt;name = &amp;quot;gatePin&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;spcClearGatePins( gatePins )&lt;br /&gt; )&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#00ff00;"&gt;My Questions&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;My question: I understand that &lt;code&gt;strap_offset&lt;/code&gt; is used to meet DRC requirements. However, if the value of &lt;code&gt;diffusionGateSpace&lt;/code&gt; is larger than &lt;code&gt;gate_Extension&lt;/code&gt;, wouldn&amp;rsquo;t that mean &lt;code&gt;polyfig&lt;/code&gt; is not placed right next to &lt;code&gt;topPin&lt;/code&gt; / &lt;code&gt;botPin&lt;/code&gt;? They would be separated by a distance of &lt;code&gt;|strap_offset|&lt;/code&gt;. The intended behavior is that all gates (in the multi-finger case) are connected together by &lt;code&gt;polyfig&lt;/code&gt;. This is where I&amp;rsquo;m confused.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Steve&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Placing a dock window to left of layout screen, above the Layer Palette</title><link>https://community.cadence.com/thread/1432837?ContentTypeID=1</link><pubDate>Wed, 30 Sep 2026 09:36:45 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:7f0c968f-8351-4c02-9bf9-07f7abda4b34</guid><dc:creator>blankman</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1432837?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70343/placing-a-dock-window-to-left-of-layout-screen-above-the-layer-palette/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Andrew, that is myself, my apologies, I had forgotten about this past log. Will update latest case. Kind regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Placing a dock window to left of layout screen, above the Layer Palette</title><link>https://community.cadence.com/thread/70343?ContentTypeID=0</link><pubDate>Mon, 28 Sep 2026 14:33:54 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:6a7237fd-b06d-4cbb-bd16-43ab5ce070bb</guid><dc:creator>blankman</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/70343?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70343/placing-a-dock-window-to-left-of-layout-screen-above-the-layer-palette/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am trying to dock a window to the left of my layout window, and above the existing Layer Palette. However no matter what value I place for &amp;quot;?index&amp;quot; (see below), it always places the dock window on the left side, but BELOW the Layer Palette, ie bottom left of layout window. Is it possible to dock the window to the TOP left of the layout window?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;hiDockWindow&lt;/p&gt;
&lt;p&gt;hiDockWindow(&lt;br /&gt;?window w_dwindowID&lt;br /&gt;[ ?session g_sessionWindowID ]&lt;br /&gt;[ ?side s_side ]&lt;br /&gt;[ ?index x_index ]&lt;br /&gt;[ ?unmapped g_unmapped ]&lt;br /&gt;[ ?tabOnto w_dwindowID ]&lt;br /&gt;)&lt;/p&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1424879?ContentTypeID=1</link><pubDate>Wed, 30 Sep 2026 01:36:30 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:fddb89f9-c95f-4309-b21a-f49ea06bda84</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1424879?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Andrew,&lt;/p&gt;
&lt;p&gt;Thank you so much for taking the time to look into this and give such a detailed explanation!&lt;/p&gt;
&lt;p&gt;Now I understand the big picture: this sample has a complete framework to add device definitions into the tech library. I also get why the code only adjusts rightStretch for substrate tie abutment. That makes sense now.&lt;br /&gt;&lt;br /&gt;I will check out the PCell Designer video you shared.&lt;/p&gt;
&lt;p&gt;Thanks again for your patient help! &lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt; Steve&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Placing a dock window to left of layout screen, above the Layer Palette</title><link>https://community.cadence.com/thread/1421122?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 18:45:11 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:dde026fc-a68c-40d9-8a8b-935f7b259dc5</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421122?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70343/placing-a-dock-window-to-left-of-layout-screen-above-the-layer-palette/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I see you logged a support case about this (47030722) - at least I assume it&amp;#39;s you because the wording is identical. You also logged a support case in November 2023 on the same topic (46745168) for which CCR #2906238 was filed. That hasn&amp;#39;t been resolved yet (note, I didn&amp;#39;t test it myself - as there&amp;#39;s an AE already working on this I like to avoid double working).&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1421121?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 18:12:29 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:745ce4ef-b4d5-44b0-8f40-027fc10a9e22</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/1421121?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;OK, I took a look.&lt;/p&gt;
&lt;p&gt;The code is fairly complicated - it contains a whole load of infrastructure to install and configure various devices by adding extra information into your tech file and then installing the devices in the tech library too.&lt;/p&gt;
&lt;p&gt;To set up, you&amp;#39;d use:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;setSkillPath(cons(prependInstallPath(&amp;quot;samples/ROD/rodPcells&amp;quot;) getSkillPath()))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;load(&amp;quot;install/spcLoadInstall.il&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;and then interact with the UI. You have to select the devices you want, choose the appropriate layers to use, and then fill in any missing design rule info that can&amp;#39;t already be found in the tech file (sometimes these might be because of table rules).&lt;/p&gt;
&lt;p&gt;The code is not being maintained and it&amp;#39;s just a sample - whether you&amp;#39;d want to start from this or not is another matter. I&amp;#39;d probably recommend using PCell Designer instead if you can get access to it &amp;nbsp;- see this video:&amp;nbsp;&lt;a href="https://ask.cadence.com/ASK/article-viewer?id=a1O3w00000AYZXSEA5&amp;amp;pageName=article-viewer"&gt;Creating a Simple MOSFET with PCell Designer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To answer your questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It&amp;#39;s a little unusual, but having an empty then within an if/then/else is OK. It potentially makes it simpler to edit in the then part if you decide you need it later.&lt;/li&gt;
&lt;li&gt;The&amp;nbsp;&lt;em&gt;rightStretch&lt;/em&gt; and&amp;nbsp;&lt;em&gt;leftStretch&lt;/em&gt; parameters are hidden parameters which are then altered by the abutment function when two transistors are abutted. If you&amp;#39;ve chosen to have the substrate contact enabled at the top/bottom, it may have to adjust the size of the diffusion to allow for these substrate contacts, but it only really needs to do it on one side - and in this case the right side is used.&lt;/li&gt;
&lt;li&gt;This is (I think) trying to handle the scenario where the substrate contact protrudes beyond the transistor width (in this case it&amp;#39;s the overall width of the device, not the width of the gate). That&amp;#39;s where you&amp;#39;d have a problem with the substrate contacts hitting each other otherwise, so more space needs to be allowed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hope that helps!&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1421114?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 14:10:11 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:58fd954c-0e30-41eb-afa7-62e8d0b0e561</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421114?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Steve,&lt;/p&gt;
&lt;p&gt;Thanks for the reference. I&amp;#39;ve not looked at those samples for many years (I think they were written almost 30 years ago).&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll take a look during today and then can hopefully answer your questions having inspected the full code.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1421113?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 13:38:44 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:677fe9c9-5eae-40cf-81f4-040208e7ca15</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421113?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;div&gt;Hi Andrew,&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Thanks a lot for your advice. I don&amp;rsquo;t know who wrote these sample code files, but I suspect they are located under a path like &lt;code&gt;/eda/cadence/IC618/tools/dfII/samples/ROD/rodPcells/components/mos&lt;/code&gt;.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt; I find MOS PCells really interesting, yet quite challenging for me.&amp;nbsp;If you happen to have time, feel free to check if this example is available under that path. I would really appreciate it.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;&lt;br /&gt;Steve&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1421112?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 11:10:33 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a7d9f578-eebe-496b-9024-fdd178929176</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1421112?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;div&gt;
&lt;div&gt;Hi Andrew,&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Thank you very much for your detailed reply. I mistakenly assumed this was provided by Cadence official. I will refer to it as a &amp;quot;MOS PCell sample code&amp;quot; going forward.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Unfortunately, I do not know who authored this code, so I am unable to contact the original developer. I will loaded the full code to the thread.(Cadence won&amp;rsquo;t let me upload .tar or .zip files, so I have to paste the code directly into the post. Sorry it looks messy)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;I am eager to learn how to write PCells for MOS, BJT and other devices using Skill. As you mentioned, technologies are often different. My plan is to learn fundamental PCell implementation from this example first. With continued practice, I hope to eventually build PCells that adapt to different foundry processes.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;However, teaching resources for PCell development are quite limited from what I can find. That is why I am seeking guidance from you and other experts. I hope my questions will not disrupt your work or take up too much of your time.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Thank you for your contributions to the Cadence Community and for helping me with my questions.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;Best regards,
&lt;div&gt;&lt;/div&gt;
Steve&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Writing lists to file</title><link>https://community.cadence.com/thread/1421110?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 09:26:25 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:be9a840a-2d07-4e6e-a053-af3ad8b707ac</guid><dc:creator>Aurel B</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1421110?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70344/writing-lists-to-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-family:inherit;"&gt;The following functions might be a bit simpler to use:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;writeTable&lt;/code&gt; and &lt;code&gt;readTable&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In more recent versions, there is also:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;jsonSave&lt;/code&gt; and &lt;code&gt;jsonReadFile&lt;/code&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Writing lists to file</title><link>https://community.cadence.com/thread/70344?ContentTypeID=0</link><pubDate>Mon, 28 Sep 2026 21:16:27 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f9c428be-b59a-49b0-b3b3-243e5fbaedad</guid><dc:creator>blankman</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/70344?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70344/writing-lists-to-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have a question in relation to storing captured data to file for recall.&lt;/p&gt;
&lt;p&gt;Brief background: I have 2 procedures, one stores the list of layers in the Layer Palette that are visible, and the other recalls those layers and sets them visible, ie for storing of custom layer visibility sets. (aware that this feature already exists within Virtuoso, coding as part of a larger project)&lt;/p&gt;
&lt;p&gt;Question I have: when the layers set is stored, and then Virtuoso is closed and reopened, the layers set is lost. What I want to do is store the layers list to file, so that any stored list is permanently stored irrespective of whether the tool is closed.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I also want to be able to store 5 different lists of layers,&amp;nbsp;&lt;span&gt;ie for storing of 5 different custom layer visibility sets at a time.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Having not approached a task like this before in skill, I am wondering if there is any examples of this I could reference, or any advice how to go about accomplishing this?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks very much in advance&lt;/p&gt;</description></item><item><title>RE: Writing lists to file</title><link>https://community.cadence.com/thread/1421108?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 05:34:04 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a09061e3-b224-4bda-8645-e504845bf586</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421108?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70344/writing-lists-to-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;d suggest just writing out some kind of list structure into the file using pprint(theList filePort) or even just fprintf(filePort &amp;quot;%L\n&amp;quot; theList).&lt;/p&gt;
&lt;p&gt;You can then read it back in using lineread or read - these will use the SKILL parser to read in the list structure even if spread over multiple lines.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Question on Skill Code for Cadence Official MOS PCell</title><link>https://community.cadence.com/thread/1421107?ContentTypeID=1</link><pubDate>Tue, 29 Sep 2026 05:31:22 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:17ed2476-2658-434c-a220-f92bd520e56f</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421107?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70345/question-on-skill-code-for-cadence-official-mos-pcell/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;As far as I&amp;#39;m aware there&amp;#39;s no such thing as a &amp;quot;Cadence Official MOS PCell&amp;quot;. I can only assume this is some sample that&amp;#39;s been provided (I don&amp;#39;t recognise the code and a bit of searching hasn&amp;#39;t allowed me to locate it). The reason why there would be no &amp;quot;Official MOS PCell&amp;quot; is that technologies are often different so having a one-size-fits-all would be unlikely...&lt;/p&gt;
&lt;p&gt;I suggest you ask your questions to whomever from Cadence provided you with the sample code.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s no problem with having if(&lt;em&gt;condition&lt;/em&gt; then&amp;nbsp;&lt;em&gt;then_code&lt;/em&gt; else&amp;nbsp;&lt;em&gt;else_code)&amp;nbsp;&lt;/em&gt;even if the&amp;nbsp;&lt;em&gt;then_code&lt;/em&gt; is empty (it&amp;#39;s a bit odd having the then keyword if you don&amp;#39;t have any associated code - I&amp;#39;d probably just have used&amp;nbsp;&lt;em&gt;unless&lt;/em&gt; instead). For the rest of the questions I couldn&amp;#39;t answer without seeing the rest of the code (and even then I&amp;#39;d need to know the intent - hence my suggestion for you to contact the person who provided you with the example).&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Placing a dock window to left of layout screen, above the Layer Palette</title><link>https://community.cadence.com/thread/1421104?ContentTypeID=1</link><pubDate>Mon, 28 Sep 2026 16:15:52 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:acee760c-d278-48fe-9ddd-dd42559fc16a</guid><dc:creator>blankman</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421104?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70343/placing-a-dock-window-to-left-of-layout-screen-above-the-layer-palette/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thanks Steve, appreciate the response, though hoping to do this by default upon calling &lt;span&gt;hiDockWindow&lt;/span&gt;, ie without having to drag and drop. Know if this is possible? Thanks again&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to get ADE outputs priority</title><link>https://community.cadence.com/thread/1421103?ContentTypeID=1</link><pubDate>Mon, 28 Sep 2026 15:28:35 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:296f12d4-2086-4b6c-ac22-7768213ed8d6</guid><dc:creator>kkdesbois</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1421103?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66331/how-to-get-ade-outputs-priority/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thanks for the confirmation. Case created.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to get ADE outputs priority</title><link>https://community.cadence.com/thread/66331?ContentTypeID=0</link><pubDate>Wed, 16 Sep 2026 07:05:08 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:603baf44-3823-46d4-a145-e075edb67374</guid><dc:creator>kkdesbois</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/66331?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66331/how-to-get-ade-outputs-priority/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;br /&gt;Is there any way to get the priority of ADE outputs?&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/pastedimage1789542183706v1.png" alt=" " /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The weight can be accessed with the function axlgetSpecWeight but I can not find an equivalent function for priority.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Laurent.&lt;/p&gt;</description></item><item><title>RE: Placing a dock window to left of layout screen, above the Layer Palette</title><link>https://community.cadence.com/thread/1421102?ContentTypeID=1</link><pubDate>Mon, 28 Sep 2026 15:05:50 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:b62ff88b-b94e-4731-9822-b11cc2c9d825</guid><dc:creator>SZ20260803361</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421102?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/70343/placing-a-dock-window-to-left-of-layout-screen-above-the-layer-palette/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:150%;"&gt;Hello,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;There is a simple way to achieve this, you can drag the dockwindow to the top of the Palette.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;Thanks,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;Steve&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to get ADE outputs priority</title><link>https://community.cadence.com/thread/1421092?ContentTypeID=1</link><pubDate>Fri, 25 Sep 2026 16:16:26 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d5f858e7-9be1-4f1c-bde9-8d0914ebd89b</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421092?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66331/how-to-get-ade-outputs-priority/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Laurent,&lt;/p&gt;
&lt;p&gt;Apologies - I didn&amp;#39;t see this post (I think there may have been a problem with notifications for a while - I should go back and look for anything I missed).&lt;/p&gt;
&lt;p&gt;As far as I can see there is no public function for this. Even the maeSetSpec doesn&amp;#39;t have the option to set it - but we probably ought to have an maeGetSpec function to retrieve this kind of information. Please contact customer support and request this as an enhancement.&lt;/p&gt;
&lt;p&gt;Kind Regards,&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to get ADE outputs priority</title><link>https://community.cadence.com/thread/1421091?ContentTypeID=1</link><pubDate>Fri, 25 Sep 2026 15:48:34 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:ae249d4f-4d1c-456c-a7fb-977887e8a00f</guid><dc:creator>kkdesbois</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1421091?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66331/how-to-get-ade-outputs-priority/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I guess it is not possible.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to get the top level coordinate of an instance on lower level?</title><link>https://community.cadence.com/thread/1409358?ContentTypeID=1</link><pubDate>Tue, 22 Sep 2026 02:08:45 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:e419833b-b119-4f0c-8fde-229a05cb7d7c</guid><dc:creator>Martinsh</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409358?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66322/how-to-get-the-top-level-coordinate-of-an-instance-on-lower-level/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, Andraw,&lt;/p&gt;
&lt;p&gt;It&amp;#39;s clear now. Thanks a lot!&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Martinsh&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to get the top level coordinate of an instance on lower level?</title><link>https://community.cadence.com/thread/66322?ContentTypeID=0</link><pubDate>Thu, 10 Sep 2026 03:12:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:23f9d736-c9c4-499b-ba02-b827cd0ff722</guid><dc:creator>Martinsh</dc:creator><slash:comments>7</slash:comments><comments>https://community.cadence.com/thread/66322?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66322/how-to-get-the-top-level-coordinate-of-an-instance-on-lower-level/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;There is a cell named CellX in a hierarchical layout design. The cell CellX is placed on one of lower level of the layout design. How to get the top level coordinate of the bBox of the cell CellX?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>RE: How to get the top level coordinate of an instance on lower level?</title><link>https://community.cadence.com/thread/1409355?ContentTypeID=1</link><pubDate>Mon, 21 Sep 2026 17:43:37 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:cc1b965f-3193-4819-9a77-44e7b4e73f30</guid><dc:creator>Andrew Beckett</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1409355?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/66322/how-to-get-the-top-level-coordinate-of-an-instance-on-lower-level/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Actually, it&amp;#39;s not doing that.&amp;nbsp;You&amp;#39;re getting the transformation of the final instance, rather than to a shape&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;within&lt;/span&gt; that final instance.&lt;/p&gt;
&lt;p&gt;If there had been more levels of hierarchy, you&amp;#39;d see it&amp;#39;s the concatenated transformations excluding the final instance. One way of seeing this would be if you did:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;dbCreateRect(cv &amp;quot;Metal4&amp;quot; dbTransformBBox(car(last(inst))~&amp;gt;bBox dbGetHierPathTransform(inst)))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This would draw the rectangle exactly covering the final leaf instance. That&amp;#39;s because the bBox is already the bBox of the final rotated/mirrored/translated instance, so it doesn&amp;#39;t need the final transformation applied.&lt;/p&gt;
&lt;p&gt;Or you could do:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;dbCopyFig(car(last(inst)) cv dbGetHierPathTransform(inst))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;which would take the leaf instance (with it&amp;#39;s transformation) and then copy that to the top-level.&lt;/p&gt;
&lt;p&gt;To illustrate what I mean, if you went down inside the final instance and used something inside that, you&amp;#39;d need to include the final leaf&amp;#39;s transformation - which is what dbGetInstTransform does:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;dbCreateRect(cv &amp;quot;Metal5&amp;quot; dbTransformBBox(car(last(inst))~&amp;gt;master~&amp;gt;bBox dbGetInstTransform(inst)))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Because the bBox is taken here from the master, it&amp;#39;s in the coordinate system of the final cellView itself rather than the parent instance - so needs the extra level of transformation to be taken into account.&lt;/p&gt;
&lt;p&gt;Hope that helps (and my explanation was not too confusing).&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>