<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.cadence.com/Community/utility/FeedStylesheets/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/"><channel><title>Digital Implementation</title><link>http://www.cadence.com/Community/blogs/di/default.aspx</link><description>Visit the Digital Implementation blog to catch up on the latest technology, trends, opinion, and news.  Interact with authors and peers through blog commenting.  RSS feed is available.</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Five-Minute Tutorial: Change The Background Color Of EDI</title><link>http://www.cadence.com/Community/blogs/di/archive/2012/02/08/five-minute-tutorial-change-the-background-color-of-edi.aspx</link><pubDate>Wed, 08 Feb 2012 16:39:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1307811</guid><dc:creator>Kari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1307811</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2012/02/08/five-minute-tutorial-change-the-background-color-of-edi.aspx#comments</comments><description>&lt;p&gt;Today&amp;#39;s tutorial could probably be called a One-Minute Tutorial, since it&amp;#39;s so quick. This is something that came across our internal expert alias, and I figured it&amp;#39;s something that most people may not know about. Did you know that you can change the background color of your Encounter Digital Implementation (EDI) design window?&lt;br /&gt;&lt;br /&gt;Here&amp;#39;s how. In your EDI session, enter the following command:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;b&gt;&amp;nbsp;setLayerPreference bg -color {&amp;lt;color_name&amp;gt;|color_value}&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;setLayerPreference bg -color white&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To set it back to the default, use:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;setLayerPreference bg -color black&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can also use color values, like #000000 (black), #ffffff (white), #ff0000 (red), etc.&lt;br /&gt;&lt;br /&gt;If you prefer to use color names, like I do, how do you know what names are legal? You can find a list in a file called rgb.txt, which for sun4v machines, should be in the /usr/X/lib/X11 directory, and for lnx86 machines, should be in the /usr/X11R6/lib/X11 directory. Ask your favorite IT person if you need help finding this file. I found mine to have some color names to rival that of the local paint store. (Papaya Whip, anyone?)&lt;br /&gt;&lt;br /&gt;Why would you want to change the background color of EDI? Well, although most people are used to the black background, some folks might be used to a white background based on other tools they have used, or a white background might be better for printing out a snapshot of the design, depending on how you print or plot. And some folks just like to be unique and have colors different than everyone else. To those people, I say: don&amp;#39;t ever change. You are the ones who make the world interesting and fun!&lt;/p&gt;&lt;p&gt;Thanks to Susan Zhao for the original Cadence Online Support solution.&lt;br /&gt;&lt;br /&gt;- Kari Summers &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1307811" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/background+color/default.aspx">background color</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/changing+color/default.aspx">changing color</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/color/default.aspx">color</category></item><item><title>Five-Minute Tutorial: Multiple View-Only Windows In EDI</title><link>http://www.cadence.com/Community/blogs/di/archive/2012/01/25/five-minute-tutorial-multiple-view-only-windows-in-edi.aspx</link><pubDate>Wed, 25 Jan 2012 16:09:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1307366</guid><dc:creator>Kari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1307366</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2012/01/25/five-minute-tutorial-multiple-view-only-windows-in-edi.aspx#comments</comments><description>&lt;p&gt;Have you ever had a situation where you want to compare two (or more) different areas of a design, so you end up zooming in to one area, then to the other area, then back and forth as you look at various objects and layers, trying to recall the differences? Have you ever brought up two separate Encounter Digital Implementation (EDI) sessions to make this easier? Then today&amp;#39;s tutorial is for you!&lt;br /&gt;&lt;br /&gt;There is a way to bring up multiple view-only windows of your design during your current EDI session. Under the Tools menu, click on Design Viewer. A new view-only window will come up with your design in it. You can start as many Design Viewer windows as you like to make your task easier. You can place them side-by-side and compare different areas of the design quickly and easily.&lt;br /&gt;&lt;br /&gt;Now, the most common thing to do when looking over a design is to turn various layers and objects on and off. You will notice that it&amp;#39;s a pain to go back to your main EDI window to use the Layer Control panel, so it&amp;#39;s worth reminding everyone that the Layer Control Panel can be undocked! Just put your mouse on the Layer Control bar, left-click, and drag the panel outside of the EDI window. Now you can place it wherever you like on your desktop and more easily use your view-only windows.&lt;br /&gt;&lt;br /&gt;Like the Design Viewer? You may also be interested in this:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2011/08/10/five-minute-tutorial-the-edi-cell-viewer.aspx"&gt;Five-Minute Tutorial: The Encounter Digital Implementation Cell Viewer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1307366" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/First+Encounter/default.aspx">First Encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+10.1/default.aspx">EDI 10.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/view-only/default.aspx">view-only</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/viewer/default.aspx">viewer</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/windows/default.aspx">windows</category></item><item><title>Five-Minute Tutorial: Avoid SI Problems With Better Pin Placement In Encounter Digital Implementation (EDI)</title><link>http://www.cadence.com/Community/blogs/di/archive/2012/01/18/five-minute-tutorial-avoid-si-problems-with-better-pin-placement-in-edi.aspx</link><pubDate>Wed, 18 Jan 2012 15:09:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1307153</guid><dc:creator>Kari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1307153</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2012/01/18/five-minute-tutorial-avoid-si-problems-with-better-pin-placement-in-edi.aspx#comments</comments><description>&lt;p&gt;I know we&amp;#39;re over halfway through January already (where does the time go?), but Happy New Year everyone! I hope 2012 is a good one for your business and your chip designs, and let&amp;#39;s hope the Mayans just ran out of ink when they were finishing the calendar for this year.&lt;br /&gt;&lt;br /&gt;Today I&amp;#39;d like to highlight an option of the assignPtnPin command that was added in Encounter Digital Implementation System (EDI) 10.1. This option is called -improveSI. Sounds intriguing and helpful, right? Let&amp;#39;s see how it works:&lt;br /&gt;&lt;br /&gt;If you use the command assignPtnPin -improveSI, then the pin assignment will attempt to place pins such that pins on the same layer are not on adjacent tracks. Also the pin assignment will attempt to place pins such that you don&amp;#39;t have pins on top of each other in consecutive preferred-direction layers.&lt;br /&gt;&lt;br /&gt;For example, if one pin is placed in M4, then the -improveSI option will attempt not to place another M4 pin on the closest track to either side of the first pin, and will also attempt not to place an M6 or M2 pin in the same spot as the original M4 pin.&lt;br /&gt;&lt;br /&gt;I keep saying &amp;quot;attempt&amp;quot; because I&amp;#39;m guessing that legal placement will trump -improveSI, so if you have lots of pins on a small block, or have strict limits on pin layers, following the -improveSI rules may not always be possible.&lt;br /&gt;&lt;br /&gt;I have not used this option myself yet, so give it a try and report back how you like it!&lt;/p&gt;&lt;p&gt;Here are some other tips to avoid SI problems:&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2011/05/18/five-minute-tutorial-fixing-si-victim-nets.aspx"&gt;Five-Minute Tutorial: Fixing SI Victim Nets&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2011/05/10/five-minute-tutorial-setting-up-clock-routing-rules.aspx"&gt;Five-Minute Tutorial: Setting Up Clock Routing Rules &lt;/a&gt;&lt;/p&gt;&lt;p&gt;- Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1307153" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI+analysis/default.aspx">SI analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/noise+analysis/default.aspx">noise analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+10.1/default.aspx">EDI 10.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/assignPtnPin/default.aspx">assignPtnPin</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/pin+placement/default.aspx">pin placement</category></item><item><title>CDNLive! Silicon Valley 2012 Abstracts Due November 11th, 2011</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/11/02/cdnlive-silicon-valley-2012-abstracts-due-november-11th-2011.aspx</link><pubDate>Wed, 02 Nov 2011 19:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1304960</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1304960</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/11/02/cdnlive-silicon-valley-2012-abstracts-due-november-11th-2011.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.cadence.com/cdnlive/pages/default.aspx"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive2012.png" align="right" border="0" alt="" /&gt;&lt;/a&gt;The Call for Papers for CDNLive! Silicon Valley 2012 is open now through Friday November 11th, 2012. CDNLive! is the Cadence users group conference. It provides an opportunity to present and listen to presentations from folks who use Cadence software to get their jobs done. Next year&amp;#39;s conference is being held March 13-14 2012 at the Doubletree San Jose.&lt;/p&gt;&lt;p&gt;I&amp;#39;ve attended a number of these events in the past, both as a customer and as a co-presenter along with customers. The thing I like most is connected with other people in the world who have been working with the same hyper-specific design challenges as I&amp;#39;ve been. The design community itself is pretty tight knit, but when you&amp;#39;re able to meet someone who&amp;#39;s been working with writing TCL in Encounter for 10 years to solve interesting problems (just like I have!) it can make for a very enjoyable conversation.&lt;/p&gt;&lt;p&gt;Customers I talk to are often at a loss as to what topic to present on -- even ones who have done some incredible things with our software over the years. Don&amp;#39;t sell yourself short. The best presentations describe how you applied Cadence technology (usually a collection of different pieces of functionality) to solve your real world design challenges. &lt;/p&gt;&lt;p&gt;Here are some &lt;a href="http://www.cadence.com/cdnlive/na/2012/pages/topics.aspx"&gt;suggested topics&lt;/a&gt; and here is an &lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/default.aspx"&gt;archive of presentations&lt;/a&gt; from last year&amp;#39;s conference.&amp;nbsp; &lt;/p&gt;&lt;p&gt;For more information visit the &lt;b&gt;&lt;a href="http://www.cadence.com/cdnlive/na/2012/pages/cfp.aspx"&gt;CDNLive! Silicon Valley 2012 part of our website&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;I look forward to seeing you there!&lt;/p&gt;&lt;p&gt;-Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1304960" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/cadence/default.aspx">cadence</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive_2100_/default.aspx">CDNLive!</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive/default.aspx">CDNLive</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Cadence+users/default.aspx">Cadence users</category></item><item><title>Encounter Quick Tip: Dimming the Display with F12</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/09/30/encounter-quick-tip-dimming-the-display-with-f12.aspx</link><pubDate>Fri, 30 Sep 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1301373</guid><dc:creator>BobD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1301373</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/09/30/encounter-quick-tip-dimming-the-display-with-f12.aspx#comments</comments><description>&lt;p&gt;I remember when I first started working with the Cooper &amp;amp; Chyan Technology (CCT) router back in the day. It had this great feature where you could darken the display for everything in the design other than what you had selected. This was particularly useful when you were trying to route a net because it focused your eyes on the task at hand while still providing visibility to the rest of the design that you had to avoid bumping into when making wiring edits.&lt;/p&gt;&lt;p&gt;We&amp;#39;ve had a similar feature in Encounter for quite some time but a lot of people don&amp;#39;t know about it. Here&amp;#39;s how it works... &lt;/p&gt;&lt;p&gt;In the design below I&amp;#39;ve selected one net with the &amp;quot;selectNet&amp;quot; command. Can you see it highlighted in the design below? Neither can I, because the white it is highlighted in is so similar to the color used for M4 and M6 routing: &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;To help make the selected objects more visible, go to Edit-&amp;gt;Dim Background (which is bound to the F12 key): &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim2.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The selected objects should remain bright while non-selected objects will be dimmed, giving focus to the selected objects:&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim3.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dim3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This works for any selected object in the design. Give it a try next time you&amp;#39;re having trouble seeing an object in the design.&lt;/p&gt;&lt;p&gt;Hope this helps. &lt;/p&gt;&lt;p&gt;-Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1301373" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/highlighted+objects/default.aspx">highlighted objects</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounterer+Digital+Implementation+System/default.aspx">Encounterer Digital Implementation System</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/quick+tip/default.aspx">quick tip</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dimming+display/default.aspx">dimming display</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/F12/default.aspx">F12</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/darken+display/default.aspx">darken display</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/display/default.aspx">display</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/highlight/default.aspx">highlight</category></item><item><title>Encounter Quick Tip: Finding Available Cell Masters with dbGet</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/09/28/encounter-quick-tip-finding-available-cell-masters-with-dbget.aspx</link><pubDate>Wed, 28 Sep 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1301314</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1301314</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/09/28/encounter-quick-tip-finding-available-cell-masters-with-dbget.aspx#comments</comments><description>&lt;p&gt;When you first start using dbGet, many of your queries branch off the &amp;quot;top&amp;quot; keyword and then traverse to &amp;quot;insts&amp;quot; or &amp;quot;nets&amp;quot;. These searches return a list of all the instances or nets in the design. But sometimes it&amp;#39;s necessary to query the available cell &lt;i&gt;masters&lt;/i&gt; -- some of which may or may not be instantiated.&lt;/p&gt;&lt;p&gt;Common reasons for needing this are for finding things like well taps, end caps, antenna diodes and filler cells. You have a hunch what these cells are called for the library you&amp;#39;re working on and you&amp;#39;d like to search through all of the cell masters currently loaded in the design.&lt;/p&gt;&lt;p&gt;Say for example you want to tell the tool which cells should be used as fillers. (Fillers are physical-only instances added after placement to fill gaps between standard cells to provide standard cell rail and well continuity). You can have a hunch they&amp;#39;re called FILL-&amp;quot;something&amp;quot;. Here&amp;#39;s how to use dbGet to find the names of all the cell masters available that match FILL*:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 1&amp;gt; dbGet head.allCells.name FILL*&lt;br /&gt;FILL1 FILL16 FILL2 FILL32 FILL4 FILL64 FILL8 &lt;/font&gt;&lt;/p&gt;You can pass the output directly to setFillerMode, then call addFiller to add the instances to the design: &lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 2&amp;gt; setFillerMode -core [dbGet head.allCells.name FILL*]&lt;br /&gt;encounter 3&amp;gt; addFiller&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Although &amp;quot;top&amp;quot; is by far the common dbGet starting point, the &amp;quot;head&amp;quot; pointer provides a link to technology information like layers, vias and more. Give it a look next time you&amp;#39;re seeking to find technology information rather than design-specific data. &lt;/p&gt;&lt;p&gt;For more information on dbGet check out this post on &lt;a href="http://www.cadence.com/community/blogs/di/archive/2008/10/16/getting-started-with-dbget.aspx"&gt;Getting Started with dbGet&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Hope this helps.&lt;/p&gt;&lt;p&gt;-Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1301314" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/filler+cells/default.aspx">filler cells</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/quick+tip/default.aspx">quick tip</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/finding+cells/default.aspx">finding cells</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/cell+masters/default.aspx">cell masters</category></item><item><title>Five-Minute Tutorial: The Encounter Digital Implementation Cell Viewer</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/08/10/five-minute-tutorial-the-edi-cell-viewer.aspx</link><pubDate>Wed, 10 Aug 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1292791</guid><dc:creator>Kari</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1292791</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/08/10/five-minute-tutorial-the-edi-cell-viewer.aspx#comments</comments><description>&lt;p&gt;How many times have you wanted to look at a certain standard cell in the Encounter Digital Implementation (EDI) system, so you go hunting around the design to find one, or use the Design Browser to find one? Then you turn off the nets and special nets to see only the contents of the cell. Or, maybe the cell type you wanted to look at is not even in your netlist currently. Maybe you want to look at an INVX4, but there are only INVX2s and INVX8s in your design.&lt;br /&gt;&lt;br /&gt;There is a little-known utility inside EDI called the Cell Viewer. It&amp;#39;s available under the Tools menu:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Kari_Summers/cellViewerMenu.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/cellViewerMenu.png" align="middle" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you start the Cell Viewer, a window will come up with a list of the cells that were loaded in the session (not just the ones that appear in the netlist) as well as a graphical window that will show the LEF view of the cell:&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/cellViewer.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/cellViewer.png" border="0" height="562" width="579" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard cells are pretty easy to look at, since the LEFs have very few layers of metal. But what if you&amp;#39;re looking at a RAM that has more metal layers? You may want to turn various layers on or off as you&amp;#39;re examining the cell. This can be done with the Layer Control panel that you use all the time in EDI. If you happen to have a lot of things on your screen (and let&amp;#39;s face it, what engineer doesn&amp;#39;t?) it can be annoying to click in the EDI window to turn layers on/off. And then, the cell viewer gets sent to the background. &lt;/p&gt;&lt;p&gt;Here&amp;#39;s how to fix that: un-dock the Layer Control panel! Yes, this is also a little-known feature of EDI, but you can click and drag the panel right where it says Layer Control, place it next to your Cell Viewer window, and go back and forth without windows getting lost behind one another.&lt;br /&gt;&lt;br /&gt;I hope you find both the Cell Viewer and the Layer Control un-docking to be useful!&lt;br /&gt;&lt;br /&gt;- Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1292791" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+10.1/default.aspx">EDI 10.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Cell+Viewer/default.aspx">Cell Viewer</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Layout+Control/default.aspx">Layout Control</category></item><item><title>Five-Minute Tutorial: Finding EDI Videos</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/07/14/five-minute-tutorial-finding-edi-videos.aspx</link><pubDate>Thu, 14 Jul 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1286092</guid><dc:creator>Kari</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1286092</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/07/14/five-minute-tutorial-finding-edi-videos.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve seen a few requests in the forums asking about EDI videos. Today I will show you how to find them on the Cadence Support website.&lt;br /&gt;&lt;br /&gt;First, go to support.cadence.com. One of the menus across the top is called &amp;quot;Resources&amp;quot;. Hover your mouse over this menu and click &amp;quot;Video Library&amp;quot; near the bottom:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS1_071311.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS1_071311.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the next page that comes up, click &amp;quot;View all content for all products&amp;quot; in the lower-right:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/vidLib2.png"&gt;&lt;/a&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS2_071311.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS2_071311.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;On the resulting page, choose &amp;quot;Select Products&amp;quot; and click the blue &amp;quot;edit&amp;quot; text:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/vidLib3.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/vidLib3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A box will come up where you can select Encounter Digital Implementation and add it to your list of selected products:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS4_071311.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/KS4_071311.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally, hit the &amp;quot;UPDATE&amp;quot; button, and a list of about 20 EDI videos will appear.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/vidLib5.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/vidLib5.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There&amp;#39;s sure to be something in this list that will interest you. Enjoy watching!&lt;br /&gt;&lt;br /&gt;Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1286092" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/5+minute+tutorial/default.aspx">5 minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/video/default.aspx">video</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/COS/default.aspx">COS</category></item><item><title>Five-Minute Tutorial: Save Time With The Right Mouse Button</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/06/27/five-minute-tutorial-save-time-with-the-right-mouse-button.aspx</link><pubDate>Mon, 27 Jun 2011 20:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1285445</guid><dc:creator>Kari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1285445</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/06/27/five-minute-tutorial-save-time-with-the-right-mouse-button.aspx#comments</comments><description>&lt;p&gt;How many times have you done this: you want to flip or rotate a cell in your design, so you select it and hit the Q key. The Attribute Editor form pops up, you choose the orientation you want in the Orientation drop-down box, then hit OK or Apply. I know I have done this countless times in my years of chip design.&lt;br /&gt;&lt;br /&gt;What if I told you there was a faster, easier way? Well, there is - and it&amp;#39;s hidden under the Right Mouse Button. &lt;br /&gt;&lt;br /&gt;Position your cursor over the cell you want to rotate or flip (that&amp;#39;s right - you don&amp;#39;t even have to select it), and press the Right Mouse Button (hereafter referred to as RMB). You&amp;#39;ll see a list of stuff you can do:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Kari_Summers/RMB.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Kari_Summers/RMB.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice the Rotate and Flip commands. &lt;br /&gt;&lt;br /&gt;Another nice feature available via the RMB is cell swapping. For this one, select the two cells whose locations you&amp;#39;d like to swap. Then press the RMB, and you&amp;#39;ll see that the Swap Instances option is no longer grayed out:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Kari_Summers/RMB2.png"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Kari_Summers/RMB2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Isn&amp;#39;t that much easier than grabbing one instance, moving it somewhere out of the way, then moving the other instance into its place, and then finally moving the original instance into the space vacated by the second instance? Absolutely.&lt;br /&gt;&lt;br /&gt;I encourage you to check out the other shortcuts available by clicking the RMB, like Align and Edit Halo. What&amp;#39;s available may depend on where your mouse is or what&amp;#39;s selected. Remember the RMB for time-saving shortcuts to your design work!&lt;br /&gt;&lt;br /&gt;Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1285445" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/5+minute+tutorial/default.aspx">5 minute tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/RMB/default.aspx">RMB</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/flip+cell/default.aspx">flip cell</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/rotate+cell/default.aspx">rotate cell</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/right+mouse+button/default.aspx">right mouse button</category></item><item><title>Five-Minute Tutorial: Find A Pin's Transition Time</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/06/16/five-minute-tutorial-find-a-pin-s-transition-time.aspx</link><pubDate>Thu, 16 Jun 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1277943</guid><dc:creator>Kari</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1277943</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/06/16/five-minute-tutorial-find-a-pin-s-transition-time.aspx#comments</comments><description>&lt;p&gt;How many times while working in Encounter Digital Implementation system have you wanted to find the transition time on a certain pin? How did you go about finding it? Here are some ways I know that I&amp;#39;ve used:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If I knew the pin was failing the max_transition constraint, hunt it down in the .tran violation report.&lt;/li&gt;&lt;li&gt;Try to find the pin somewhere in my timing reports and look at the slew column.&lt;/li&gt;&lt;li&gt;Use (gasp!) undocumented commands (unsupported and therefore sometimes unreliable).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Well, there&amp;#39;s an easier, cleaner, faster way. The report_constraint command! This is an oft-forgotten little gem that can be very handy. It&amp;#39;s worth reading about all of its features in the documentation, but today I wanted to highlight how it can be used to find the transition violation of any pin. Just specify the constraint we want to report (max transition) and the pin:&lt;/p&gt;&lt;blockquote&gt;report_constraint -drv_violation_type max_transition i_BUFX2/Z &lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;And you&amp;#39;ll see results something like this:&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;Check type : max_transition&lt;br /&gt;---------------------------&lt;br /&gt;&amp;nbsp; Pin : i_BUFX2/Z&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View : func_ss_0p90v_125c_rcworst&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; max_transition :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.400&lt;br /&gt;- Transition Time:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.322&lt;br /&gt;-----------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.078 &lt;br /&gt;&lt;/div&gt;&lt;p&gt;I bet some of you out there are using this very command for other useful checks -- share your favorites with us in the comments, please!&lt;br /&gt;&lt;br /&gt;- Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1277943" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/report_5F00_constraint/default.aspx">report_constraint</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/max_5F00_transition/default.aspx">max_transition</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/pin+transition+time/default.aspx">pin transition time</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute+tutorial/default.aspx">five minute tutorial</category></item><item><title>Five-Minute Tutorial: Avoiding The Use Of FILL1 Cells</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/05/25/five-minute-tutorial-avoiding-the-use-of-fill1-cells.aspx</link><pubDate>Wed, 25 May 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1277326</guid><dc:creator>Kari</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1277326</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/05/25/five-minute-tutorial-avoiding-the-use-of-fill1-cells.aspx#comments</comments><description>&lt;p&gt;A new thing that we&amp;#39;re seeing with some 45nm libraries is the rule that single-wide filler cells should not be used. At first, this may seem like a difficult thing to ensure in your design flow, but Encounter Digital Implementation system has the ability to handle this. You just have to know the right settings -- and today you&amp;#39;ll learn them in five minutes or less.&lt;br /&gt;&lt;br /&gt;First, we need to tell the placer that we don&amp;#39;t want any gaps between cells that would be the size of a single-wide filler cell. In this example, a single-wide filler is 0.14um wide, so we want the minimum gap to be at least twice that, 0.28um. We also want to set the effort level to high, which means that the placer (or refinePlace in the later parts of the flow) can move cells between rows in order to avoid single-wide gaps. If for some reason you want cells to stay on the same row, set this to medium -- but be aware that all violations may not be able to be fixed.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setPlaceMode -fillerGapEffort high -fillerGapMinGap 0.28&lt;br /&gt;&lt;br /&gt;Next, we want to make sure that no FILL1 cells get added when we do our filler cell step. Make sure you don&amp;#39;t list the FILL1 cell from your library! Some libraries are leaving the FILL1 cell out completely, so you wouldn&amp;#39;t even be able to include it, but some still have a FILL1 cell, so you need to be careful. Make sure you include a FILL3 cell if there is one -- it can be tempting to only use the 2/4/8/16 sizes. The -fitGap parameter is what&amp;#39;s really important here; this will tell addFiller to use different combinations of filler cells as needed to avoid single-wide gaps. For example, if there is a 5-site-wide gap that needs filler cells, instead of the standard method of using a FILL4 and then having a single-width gap, addFiller will see that the single-width gap can be avoided by using a FILL3 and a FILL2.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setFillerMode -corePrefix FILL -core {FILL16 FILL8 FILL4 FILL3 FILL2} -fitGap true&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s say you&amp;#39;ve finished your design and you want to check if there really are any single-width gaps left. That&amp;#39;s easy too:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;checkFiller -reportGap 0.14 -highlight&lt;br /&gt;&lt;br /&gt;(For a bit more on the checkFiller command and a few other neat things, see &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2009/08/28/lost-and-found-missing-filler-cells-power-vias-and-highlighted-objects.aspx"&gt;this previous blog entry&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Bonus: Oh no -- what if you&amp;#39;re already halfway done with your design and you just found out about this requirement? Relax - all is not lost. There is another command that may help you save the day. Two things to be aware of, however: the command does not move cells that are marked FIXED, and it will delete all routing unless you set the &amp;quot;preserveRouting&amp;quot; switch in setPlaceMode. The effort level settings are the same as in setPlaceMode -fillerGapEffort.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setPlaceMode -preserveRouting true&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;addFillerGap 0.28 -effort high&lt;br /&gt;&lt;br /&gt;That&amp;#39;s all there is to it. If you find that you&amp;#39;re still ending up with single-wide gaps, it&amp;#39;s likely due to some sort of design constraint -- FIXED cells, a specific floorplan issue, etc. If you examine the area closely, you&amp;#39;ll likely find the cause.&lt;br /&gt;&lt;br /&gt;Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1277326" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/filler+cells/default.aspx">filler cells</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/checkFiller/default.aspx">checkFiller</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/45nm/default.aspx">45nm</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/placement/default.aspx">placement</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/fill1/default.aspx">fill1</category></item><item><title>Tab Completion with Encounter's dbGet Command: Smarter Than You Might Think</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/05/19/tab-completion-with-encounter-s-dbget-command-smarter-than-you-might-think.aspx</link><pubDate>Thu, 19 May 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1277206</guid><dc:creator>BobD</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1277206</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/05/19/tab-completion-with-encounter-s-dbget-command-smarter-than-you-might-think.aspx#comments</comments><description>&lt;p&gt;If there&amp;#39;s one thing that makes navigating a UNIX command line or tool console more efficient, it&amp;#39;s tab completion. We&amp;#39;ve been improving Encounter&amp;#39;s support for tab completion over the past few releases, and in 10.1 Encounter&amp;#39;s dbGet command received tab completion support for the first time. Have a look at the screencast embedded below -- I think the way it&amp;#39;s been implemented is really nice. And smarter than you might realize at first glance. &lt;/p&gt;&lt;p&gt;In its simplest sense tab completion works like this:&lt;br /&gt;&lt;font face="courier new,courier"&gt;encounter 1&amp;gt; dbGet top.&amp;lt;tab&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;...returns a list of all the attributes associated with the &amp;quot;top&amp;quot; cell in the design. If I provide a portion of an attribute it auto-completes and inserts a trailing &amp;quot;.&amp;quot;: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 2&amp;gt; dbGet top.i&amp;lt;tab&amp;gt;&lt;br /&gt;encounter 2&amp;gt; dbGet top.insts.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;If you continue on and ask it to complete when there are no remaining attributes associated with the last field, notice how &amp;lt;tab&amp;gt; inserts a trailing space: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 3&amp;gt; dbGet top.insts.n&amp;lt;tab&amp;gt;&lt;br /&gt;encounter 3&amp;gt; dbGet top.insts.name&lt;/font&gt; &amp;lt;-and inserts a trailing space&lt;/p&gt;&lt;p&gt;dbGet&amp;#39;s tab completion is smart enough to recognize whether there are remaining fields available for traversal and either inserts a trailing &amp;quot;.&amp;quot; -or- a trailing space which makes for very efficient command line navigation of the database.&lt;/p&gt;&lt;p&gt;It&amp;#39;s also smart enough to return a varying list of attributes depnding on what you have selected. For example you&amp;#39;ll see a different list of attributes revealed when you tab complete the selected keyword depending on what you currently have selected in the tool: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 4&amp;gt; dbGet selected.&amp;lt;tab&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Similarly, if you task it with tab completing a variable. It&amp;#39;s smart enough to examine the contents of the variable and tab complete accordingly: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 5&amp;gt; set nets [dbGet top.nets.name *clk* -p]&lt;br /&gt;encounter 6&amp;gt; dbGet $nets.&amp;lt;tab&amp;gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;These examples are demonstrated in the screencast embedded below:&lt;br /&gt;(if you have trouble viewing the video try &lt;a href="http://youtu.be/V11QURqTGRE"&gt;this link&lt;/a&gt; instead) &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Check it out next time you&amp;#39;re using dbGet in 10.1 or newer releases. I hope you find it useful. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1277206" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/screencast/default.aspx">screencast</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tab+completion/default.aspx">tab completion</category></item><item><title>Five-Minute Tutorial: Fixing SI Victim Nets</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/05/18/five-minute-tutorial-fixing-si-victim-nets.aspx</link><pubDate>Wed, 18 May 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1277161</guid><dc:creator>Kari</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1277161</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/05/18/five-minute-tutorial-fixing-si-victim-nets.aspx#comments</comments><description>&lt;p&gt;It&amp;#39;s hard to believe there was a time when we didn&amp;#39;t even run signal integrity analysis. It wasn&amp;#39;t always a necessity at the larger nodes of several years ago, but it&amp;#39;s absolutely essential in today&amp;#39;s processes. So I&amp;#39;m sure every one of you out there has battled SI violations at some point. Today&amp;#39;s tutorial will show you a quick and easy way to reroute some victim nets in EDI and get some of your SI issues under control.&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s say you&amp;#39;ve run your SI analysis in EDI and you know that your violations are due to some victim nets that need to be rerouted away from aggressor nets. (How do you know this? You&amp;#39;ve either looked at the failing paths graphically and can see the long parallel runs of nets, or you&amp;#39;ve done a report_timing -net with the incremental delay column displayed, and you can see that the incremental delay is occurring on the net and not a cell.)&lt;br /&gt;&lt;br /&gt;Once we know the names of the nets we want to fix, the rest is easy. For this example, imagine that nets named &amp;quot;net1&amp;quot; and &amp;quot;net2&amp;quot; are falling victim and contributing a large amount of incremental delay. So first we&amp;#39;ll attach the &amp;quot;si_post_route_fix&amp;quot; attribute to these nets:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setAttribute -net net1 -si_post_route_fix true&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setAttribute -net net2 -si_post_route_fix true&lt;br /&gt;&lt;br /&gt;Next, we&amp;#39;ll tell NanoRoute that we want to run in SIPostRouteFix mode:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setNanoRouteMode -routeWithSiPostRouteFix true&lt;br /&gt;&lt;br /&gt;If you have any other setNanoRouteMode variables that you always use, such as a max layer or double-cut via settings, go ahead and set those as well. Finally, we do the actual routing fix:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;globalDetailRoute&lt;br /&gt;&lt;br /&gt;The nets in question (net1 and net2) will be rerouted so that they are not so parallel with other nets, thereby lessening the SI effect on them. You can re-extract and run timing again to see the improvement. I&amp;#39;ve had very good success with this method. It may not solve all of your SI problems, and there may be several issues causing any one path to fail SI timing, but this method should definitely be in your toolbox of SI fixes.&lt;br /&gt;&lt;br /&gt;Bonus: I mentioned the &amp;quot;incremental delay&amp;quot; column in the timing report. How do you get that to show up? Add the incr_delay keyword to your report_timing format, as in this example:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_global report_timing_format {instance cell arc delay &lt;b&gt;incr_delay&lt;/b&gt; arrival load slew fanout pin_location}&lt;br /&gt;&lt;br /&gt;- Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1277161" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI+analysis/default.aspx">SI analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/signal+integrity/default.aspx">signal integrity</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI/default.aspx">SI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute/default.aspx">five minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/NanoRoute/default.aspx">NanoRoute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI+victim+nets/default.aspx">SI victim nets</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/victim+nets/default.aspx">victim nets</category></item><item><title>Five-Minute Tutorial: Setting Up Clock Routing Rules</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/05/10/five-minute-tutorial-setting-up-clock-routing-rules.aspx</link><pubDate>Tue, 10 May 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1275381</guid><dc:creator>Kari</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1275381</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/05/10/five-minute-tutorial-setting-up-clock-routing-rules.aspx#comments</comments><description>&lt;p&gt;Hi, and welcome back to another Five-Minute Tutorial! Yes, I know it&amp;#39;s been a while, but like most of you out there, I&amp;#39;m an ASIC designer, and you know how busy work can get. (Blogging is not my day job, but I enjoy doing it when I have some extra time!)&lt;br /&gt;&lt;br /&gt;Today&amp;#39;s topic is how to set up your clock routing rules in Encounter. This is best done in the .ctstch file, so that your clocks are routed the way you want from the CTS stage. I&amp;#39;m going to show you how to set up shielded clocks, because we are seeing that in 45nm and below, shielding the clocks is more important than ever in order to avoid noise on the clock nets. (Noise on signal nets is bad enough, but if your clocks are affected by noise, then your SI results are going to look REALLY awful.)&lt;br /&gt;&lt;br /&gt;At the top of the .ctstch file, you&amp;#39;ll want to define your routing rules like this: (I&amp;#39;ll use a double-width double-space routing rule as my example, but it can be anything you want. We find good results with double-width double-space and shielding most of the time.)&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;blockquote&gt;#-- Wide_wire Route Type --&lt;br /&gt;RouteTypeName DoubleWideDoubleSpace&lt;br /&gt;TopPreferredLayer 6&lt;br /&gt;BottomPreferredLayer 3&lt;br /&gt;NonDefaultRule DoubleWideDoubleSpace&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;RouteTypeName DoubleWideDoubleSpaceShield&lt;br /&gt;TopPreferredLayer 6&lt;br /&gt;BottomPreferredLayer 3&lt;br /&gt;NonDefaultRule DoubleWideDoubleSpace&lt;br /&gt;PreferredExtraSpace 0&lt;br /&gt;Shielding VSS VSS&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;#-- Regular Route Type --&lt;br /&gt;RouteTypeName regularRoute&lt;br /&gt;TopPreferredLayer 6&lt;br /&gt;BottomPreferredLayer 3&lt;br /&gt;PreferredExtraSpace 1&lt;br /&gt;End&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;Notice that we have 3 sections: the wide-wire type, the same wide-wire type with shields, and then a regular route type. If your design is not too congested, you may not even need the regular route type, but I&amp;#39;ve included it for completeness.&lt;br /&gt;&lt;br /&gt;For the wide-wire route type, it&amp;#39;s important to note that we&amp;#39;ve matched it to a NonDefaultRule. This rule must exist in your tech LEF. (For details on how to create a nondefault routing rule if your tech LEF doesn&amp;#39;t come with one, see this previous &lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2010/09/22/five-minute-tutorial-creating-a-nondefault-rule.aspx"&gt;Five-Minute Tutorial&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;That was easy, right? All we have to do now is tell our clocks how we want each routing rule to be used. This is done in the clock definition section:&lt;/p&gt;&lt;blockquote&gt;#------------------------------------------------------------&lt;br /&gt;# Clock Root&amp;nbsp;&amp;nbsp; : clk&lt;br /&gt;# Clock Name&amp;nbsp;&amp;nbsp; : coreClk&lt;br /&gt;#------------------------------------------------------------&lt;br /&gt;AutoCTSRootPin clk&lt;br /&gt;Period&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10ns&lt;br /&gt;MaxDelay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1ns &lt;br /&gt;MinDelay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0ns &lt;br /&gt;MaxSkew&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 200ps &lt;br /&gt;SinkMaxTran&amp;nbsp;&amp;nbsp;&amp;nbsp; 80ps &lt;br /&gt;BufMaxTran&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80ps &lt;br /&gt;AddDriverCell&amp;nbsp; BUFX4&lt;br /&gt;Buffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUFX1 BUFX2 BUFX4 BUFX8&lt;br /&gt;NoGating&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NO&lt;br /&gt;DetailReport&amp;nbsp;&amp;nbsp; YES&lt;br /&gt;&lt;b&gt;RouteClkNet&amp;nbsp;&amp;nbsp;&amp;nbsp; YES&lt;/b&gt;&lt;br /&gt;PostOpt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YES&lt;br /&gt;OptAddBuffer&amp;nbsp;&amp;nbsp; YES&lt;br /&gt;&lt;b&gt;RouteType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoubleWideDoubleSpaceShield&lt;br /&gt;LeafRouteType&amp;nbsp; DoubleWideDoubleSpace&lt;/b&gt;&lt;br /&gt;END&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;What we&amp;#39;re saying here is to use the shielded wide rule everywhere except the routes to the leaf pins. There, we&amp;#39;ll just use the wide rule without shielding because there may not be room. This is a typical methodology that will work for most designs, but your design may vary. Are things very congested at the leaf route level? Use the regularRoute rule instead. Have plenty of room? Go for shielding at the leaf level too. The key is to go ahead and route the clock nets at the CTS stage with the &amp;quot;RouteClkNet YES&amp;quot; parameter. That way you get more accurate timing results from CTS onward because the clock routes are real (and not trial route estimates).&lt;br /&gt;&lt;br /&gt;One final note about the TopPreferredLayer and BottomPreferredLayer: I picked these numbers based on my metal stack. You will have to decide which top/bottom preferred layers are right for you. &lt;br /&gt;&lt;br /&gt;That&amp;#39;s all there is to it! I hope you&amp;#39;ve found this Five-Minute Tutorial useful. Don&amp;#39;t forget, you can &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribe to the Digital Implementation Blogs&lt;/a&gt; so you never miss a new one.&lt;br /&gt;&lt;br /&gt;Kari Summers&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1275381" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Routing/default.aspx">Routing</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/clocks/default.aspx">clocks</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five-minute/default.aspx">five-minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/.ctstch/default.aspx">.ctstch</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Shielding/default.aspx">Shielding</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/clock+routing/default.aspx">clock routing</category></item><item><title>Encounter Quick Tip: How to Repair Command Line Navigation When Launching via bsub</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/04/12/encounter-quick-tip-how-to-repair-command-line-navigation-when-launching-via-bsub.aspx</link><pubDate>Tue, 12 Apr 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1267495</guid><dc:creator>BobD</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1267495</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/04/12/encounter-quick-tip-how-to-repair-command-line-navigation-when-launching-via-bsub.aspx#comments</comments><description>&lt;p&gt;When two users report the same issue in the same week I&amp;#39;m glad I can share the problem and solution via this blog.&lt;/p&gt;&lt;p&gt;I know a lot of you work in an environment where you request computing resources via &amp;quot;bsub.&amp;quot; In many cases it&amp;#39;s frowned upon to request an xterm to launch jobs and it&amp;#39;s preferred to start an interactive session with something like &amp;quot;bsub -I encounter.&amp;quot; What we were seeing was that command line navigation at the Encounter console was broken when launched via bsub yet was working fine when launched via an xterm. Backspace produced garbage characters like &amp;quot;^H&amp;quot;, tab-completion didn&amp;#39;t work, and arrow-up (precious arrow-up!) wouldn&amp;#39;t retrieve the previously issued commands.&lt;/p&gt;&lt;p&gt;You could barely get around but it was truly painful.&lt;/p&gt;&lt;p&gt;The remedy we found was to launch jobs with &amp;quot;bsub -Ip encounter&amp;quot; instead of just &amp;quot;bsub -I encounter.&amp;quot; The &amp;quot;-Ip&amp;quot; asks for an interactive prompt that should enable command line navigation to work as desired.&lt;/p&gt;&lt;p&gt;Hope this is useful. If this works/doesn&amp;#39;t work for you -or- you&amp;#39;re having any other problems with command line navigation let us know. Little things like that can really affect your impression of the software so I want to make sure everyone&amp;#39;s console is working the way it should be. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1267495" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/command+line/default.aspx">command line</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/bsub/default.aspx">bsub</category></item><item><title>28 nm IC Design: The Devil Is In The Details</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/03/14/28-nm-ic-design-the-devil-is-in-the-details.aspx</link><pubDate>Mon, 14 Mar 2011 23:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1261049</guid><dc:creator>Nora</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1261049</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/03/14/28-nm-ic-design-the-devil-is-in-the-details.aspx#comments</comments><description>&lt;p&gt;Smaller process technologies are enticing chip makers with bigger rewards from their end products. The shorter gate lengths at 28nm promise faster transistor speeds and less leakage power, and can double the amount of the logic that can be put into the same die area. Most importantly, however, more die on a wafer means lower per unit cost.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Meanwhile, design complexity is compounded as chip content grows significantly larger. Chip sizes are significantly smaller, but are running faster into the gigahertz range, and they must consume less power. When designers break barriers to pursue new innovations at advanced nodes, design flaws are common and more costly.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;A recent highly publicized glitch in the Intel&amp;#39;s chipset captured attention from the semiconductor industry, EDA community, and across businesses and consumers.&amp;nbsp; This is not only because Intel&amp;#39;s circuitry powers electronic notebooks and laptops which are ubiquitous in our daily life, but it is also because the cost of the flaw is notable. This news serves as another reminder that similar incidents have happened before, and can happen again. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Details are Challenging&lt;/b&gt;&lt;/p&gt;&lt;p&gt;How can we prevent a costly design flaw from happening again?&amp;nbsp; The common wisdom tells us that the devil is in the details.&amp;nbsp; Oftentimes, the last 10% of the task is taking care of few neglected design details. Such tasks can take many iterations to resolve, drain more engineer resources, and extend project schedules.&amp;nbsp; From a digital implementation context,&amp;nbsp; design detail refinements usually relate to the tradeoff between meeting performance and power targets while trying to be compliant with the complex physical, electrical, and process rules and guidelines.&amp;nbsp; For example: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Large and complex design rules have a heavy impact on cell architecture as well as interconnect routing topology and via configuration. Cross coupling and resistance in interconnects and vias are a lot higher in 28nm node than previous generations.&lt;/li&gt;&lt;/ul&gt;&lt;p&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC1_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC1_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Complex via rules&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC2_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC2_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Complex interconnect rules&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If stress and litho effect around cell boundary is not accounted for, timing slack and leakage power problems can be more severe. This is due to intra-cell dependence.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC3_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC3_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Current density per unit area and electromigration are big concerns.&lt;/li&gt;&lt;li&gt;Metal thickness variation has a bigger impact on parasitic resistance and capacitance. Metal thickness modeling needs to consider the chemical mechanical polishing (CMP) effect precisely for density analysis.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC6_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC6_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Thickness variation &lt;/p&gt;&amp;nbsp;&lt;ul&gt;&lt;li&gt;Smaller wires are extremely sensitive to random defects, lithography distortion, and other types of variation in manufacturing process. Such litho effects may create open and short nets after GDSII is created and cause catastrophic problems. If such problems are not prevented and detected early, the design may pass the traditional LVS/DRC verification, but still fail to operate properly in the end.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp; &lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC4_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC4_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The designs at 28nm usually have more aggressive objectives for timing, power and higher density.&amp;nbsp; It is very difficult and sometimes impossible to make corrections at a later stage without a redesign.&amp;nbsp; If the above details are not addressed properly and timely during implementation, they can lead to a functional flaw in silicon, or become the designer&amp;#39;s nightmare to fix before tape out.&amp;nbsp;&amp;nbsp; Some predict that more than half of the sub-28nm designs are likely to face re-spins one way or another due to these oversights.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Taking Care of Design Details Through a Unified Design Flow&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/p&gt;&lt;p&gt;At the 28nm and below process nodes, having a set of best in class point tools provides a good foundation for design implementation success, but not enough to prevent error oversight.&amp;nbsp; It also requires a consistent method to enforce a tighter design discipline from the start.&amp;nbsp; Encounter Digital Implementation System (EDI System) provides a unified constraint driven methodology with an integrated concurrent signoff analysis flow.&amp;nbsp; It systematically evaluates design constraints, and executes design intents and guidelines down to the smallest implementation details across partition boundaries and design hierarchies.&amp;nbsp; &lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;For placement, its context-aware placement automatically takes intra cell interdependence into account to ensure timing and leakage power objectives are met.&lt;/li&gt;&lt;li&gt;For routing, NanoRoute recognizes lithography unfriendly patterns, takes a &amp;quot;correct-by-construction&amp;quot; approach to route, preventing hotspots in wire configuration on the fly. The last few hotspots left in the circuit are detected by the in-design Lithography Physical Analyzer for timely repair.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp; &lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC5_031511.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/NC5_031511.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;Litho unfriendly pattern&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For metal density, its smart metal fill is guided by foundry certified CMP model. Thus the thickness variation is factored into the equation when deciding the metal fill shapes and locations. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Many designers from the semiconductor industry, IP providers, and design service companies have already found benefits from this disciplined and unified design flow, and reached design silicon success faster without costly incidents. &lt;/p&gt;&lt;p&gt;To continue to satisfy the design community&amp;#39;s insatiable appetite for new innovation, &lt;a href="http://www.cadence.com/cadence/newsroom/features/Pages/digital_e2e.aspx?CMP=013111digitale2e_bb"&gt;Cadence recently charted a unified path to 28nm silicon realization&lt;/a&gt; with the new EDI System 10.1 release. It provides a Silicon Realization flow based on unified design intent, abstraction, and convergence with physical and manufacturing data.&amp;nbsp; A &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2011/01/31/tackling-your-greatest-chip-design-challenges-with-the-cadence-digital-end-to-end-flow.aspx?postID=1249626"&gt;previous blog posting&lt;/a&gt; shows how it tackles chip design problems with a unified digital flow.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;i&gt;&amp;quot;Great things are not done by impulse, but by a series of small things brought together&amp;quot; &lt;/i&gt;- Vincent Van Gogh&lt;/p&gt;&lt;p&gt;Nora Chu&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1261049" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DRC/default.aspx">DRC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/LVS/default.aspx">LVS</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/advanced+node/default.aspx">advanced node</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/silicon+realization/default.aspx">silicon realization</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/variation/default.aspx">variation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/interconnect+rules/default.aspx">interconnect rules</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/28nm/default.aspx">28nm</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/via+rules/default.aspx">via rules</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/lithography/default.aspx">lithography</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CMP/default.aspx">CMP</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/digital/default.aspx">digital</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/stress/default.aspx">stress</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/NanoRoute/default.aspx">NanoRoute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/litho/default.aspx">litho</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/parasitics/default.aspx">parasitics</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/metal+thickness/default.aspx">metal thickness</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/LPE/default.aspx">LPE</category></item><item><title>Encounter Puzzler #3 Solution: Renaming a Net Logically</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/03/09/encounter-puzzler-solution-renaming-a-net-logically.aspx</link><pubDate>Wed, 09 Mar 2011 21:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1260745</guid><dc:creator>BobD</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1260745</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/03/09/encounter-puzzler-solution-renaming-a-net-logically.aspx#comments</comments><description>&lt;span id="anormal_12" class="Cadence_CS_BlogDetail_BlogText"&gt;&lt;p&gt;Once again, the Encounter Digital Implementation designer community has stepped up to the challenge. Last week&amp;#39;s puzzler -- &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2011/02/28/encounter-puzzler-3-renaming-a-net-logically.aspx"&gt;renaming a net logically in Encounter&lt;/a&gt; -- was solved in short order. Let&amp;#39;s add &lt;b&gt;J2mh &lt;/b&gt;and &lt;b&gt;Sims &lt;/b&gt;to the list of Encounter Wizards (along with regular commentator and &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2011/02/16/dbshape-for-all-your-logical-operation-needs.aspx"&gt;guest blogger Jason G&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;To quickly restate the challenge, we wanted to rename a logical net. We wanted to take this netlist: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase ();&lt;br /&gt;&amp;nbsp;wire net;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.Y(net));&lt;br /&gt;&amp;nbsp;BUFX1 i1(.A(net));&lt;br /&gt;endmodule&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;...and turn it into this:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase ();&lt;br /&gt;&amp;nbsp;&amp;nbsp; wire new_net;&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i0 (.Y(new_net));&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i1 (.A(new_net));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;J2mh&amp;#39;s solution was very similar to my own -- but his was more concise. Create a new net, and attach each instance terminal connected to the old net to the new net:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;proc changeNetName {oldNetName newNetName} {&lt;br /&gt;&amp;nbsp; selectNet $oldNetName&lt;br /&gt;&amp;nbsp; addNet $newNetName&lt;br /&gt;&amp;nbsp; foreach selTerminals [dbGet selected.allTerms] {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; attachTerm [dbGet $selTerminals.inst.name] [dbGet $selTerminals.cellTerm.name] $newNetName&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; deselectAll&lt;br /&gt;}&lt;/font&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Notice how we don&amp;#39;t need to disconnect the old net from each terminal. Connecting it to the new net overrides the connection since a given instance terminal can only be connected to a single net.&lt;/p&gt;&lt;p&gt;attachTerm takes 3 arguments: &amp;lt;instName&amp;gt; &amp;lt;termName&amp;gt; &amp;lt;netName&amp;gt;&lt;/p&gt;&lt;p&gt;When you&amp;#39;re iterating through each instance terminal in &amp;quot;net.allTerms&amp;quot; it returns pointers whose &amp;quot;name&amp;quot; is the instance name plus the pin name. Like &amp;quot;i0/A&amp;quot; for example. &lt;/p&gt;&lt;p&gt;I especially liked how he used dbGet to &amp;quot;walk&amp;quot; from each instance terminal to get the inst.name and cellTerm.name to pass the required arguments to attachTerm.&lt;/p&gt;&lt;p&gt;I used a slightly different approach that&amp;#39;s probably more error prone. I used &amp;quot;file&amp;quot; commands to decompose &amp;lt;inst_name&amp;gt;/&amp;lt;pin_name&amp;gt;: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;set instTermName [dbGet $term.name]&lt;br /&gt;set instName [file dirname $instTermName]&lt;br /&gt;set termName [file tail $instTermName]&lt;br /&gt;attachTerm $instName $termName $newNetName &lt;/font&gt;&lt;/p&gt;&lt;p&gt;I like his approach better because it&amp;#39;s not splitting strings -- it&amp;#39;s getting the name directly from the appropriate db object.&lt;/p&gt;&lt;p&gt;The extra credit to the challenge was to make sure the script worked when renaming a net that connected through hierarchical terminal -- like &amp;quot;net2&amp;quot; does in this example:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase ();&lt;br /&gt;&amp;nbsp;wire net2;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.Y(net2));&lt;br /&gt;&amp;nbsp;a i_a(.in(net2));&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module a(in);&lt;br /&gt;&amp;nbsp;input in;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.A(in));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;I thought this was going to be a really complicated case to handle. Sims&amp;#39; approach was what I thought was going to be necessary where we&amp;#39;d need to connect the hierarchical terminal i_a/in to the net at each level of hierarchy. However, I don&amp;#39;t think it&amp;#39;s that difficult after all. Here&amp;#39;s why...&lt;/p&gt;&lt;p&gt;With the netlist above, although there are indeed fractional representations of the net in the db, there is only 1 net in the design in terms of how it is presented to us via dbGet. I&amp;#39;ve heard this called the &amp;quot;canonical&amp;quot; net name. Therefore, if we connect the input of the buffer within the &amp;quot;a&amp;quot; module to a new net: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 1&amp;gt; addNet new_net2 &lt;br /&gt;encounter 2&amp;gt; attachTerm i_a/i0 A new_net2&lt;/font&gt;&lt;br /&gt;&lt;font face="courier new,courier"&gt;encounter 3&amp;gt; attachTerm i0 Y new_net2&lt;/font&gt;&lt;/p&gt;&lt;p&gt;...&amp;quot;new_net2&amp;quot; is automatically connected through the hierarchical terminal &amp;quot;i_a/in&amp;quot;. The netlist would look like this:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module a (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; in);&lt;br /&gt;&amp;nbsp;&amp;nbsp; input in;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i0 (.A(in));&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module testcase ();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; // Internal wires&lt;br /&gt;&amp;nbsp;&amp;nbsp; wire new_net2;&lt;br /&gt;&amp;nbsp;&amp;nbsp; wire net2;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i0 (.Y(new_net2));&lt;br /&gt;&amp;nbsp;&amp;nbsp; a i_a (.in(new_net2));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;The final part of the extra credit was to handle the case where the net was connected to a top-level IO port. Like top-level input port &amp;quot;in&amp;quot; in this example:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase (in);&lt;br /&gt;&amp;nbsp;input in;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.A(in));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;This too was a little easier than I expected, but in an interesting way. Rather than having to create a new top-level port and connect it to a newly-created net, when you create a new top-level port a new net is automatically available. Or, if you create the net first and then create a new top-level port the two are automatically associated.&lt;/p&gt;&lt;p&gt;addModulePort takes a moduleName -or- uses the special character &amp;quot;-&amp;quot; to denote addition at the top level:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;Usage: addModulePort&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addModulePort &amp;lt;moduleName&amp;gt; | - &amp;lt;portName&amp;gt; {input | output | bidi}&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;For example: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;addModulePort - new_in input &lt;/font&gt;&lt;/p&gt;&lt;p&gt;It&amp;#39;s worth mentioning why dbGet calls the list of terminals associated with the &amp;quot;net&amp;quot; object &amp;quot;allTerms&amp;quot; instead of &amp;quot;terms&amp;quot; or &amp;quot;instTerms&amp;quot;. It&amp;#39;s called &amp;quot;all&amp;quot; to indicate the list of objects may contain a mixture of top-level terminals (&amp;quot;terms&amp;quot;) and instance terminals (&amp;quot;instTerms&amp;quot;).&lt;/p&gt;&lt;p&gt;Stringing this all together, we can check the object type of each terminal in the allTerms list and do something different depending on which it is: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;proc userChangeNetName {oldNetName newNetName} {&lt;br /&gt;&amp;nbsp; set net [dbGetNetByName $oldNetName]&lt;br /&gt;&amp;nbsp; addNet $newNetName&lt;br /&gt;&amp;nbsp; foreach term [dbGet $net.allTerms] {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {[dbGet $term.objType] == &amp;quot;instTerm&amp;quot;} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set instTermName [dbGet $term.name]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set instName [file dirname $instTermName]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set termName [file tail $instTermName]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attachTerm $instName $termName $newNetName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addModulePort - $newNetName [dbGet $term.inOutDir]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deleteModulePort - $oldNetName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; deleteNet $oldNetName&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;All of this made me realize it would be a good to have native net-renaming functionality in the tool so I filed a reuquest asking for an enhancement. Hopefully this served as a useful example of how db access can help bridge the gap between current capabilities and something we as users need to accomplish. &lt;/p&gt;&lt;p&gt;When performing netlist manipulations like these it&amp;#39;s always good to check your work. I&amp;#39;m sure many of you are familiar with the &lt;a href="http://www.cadence.com/products/ld/equivalence_checker/pages/default.aspx"&gt;Encounter Conformal Equivilence Checker&lt;/a&gt; which provides (among other things) a quick and easy way to make sure two Verilog gate level netlists are functionally equivilent.&lt;/p&gt;&lt;p&gt;Thanks again for participating in these puzzlers. I&amp;#39;ll follow-up soon with another (designers have been sharing some great challenges lately!). It would be great if you &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribed&lt;/a&gt; to these blogs so we can keep in touch. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1260745" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Conformal/default.aspx">Conformal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/net+renaming/default.aspx">net renaming</category></item><item><title>Encounter Puzzler #3: Renaming a Net Logically</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/02/28/encounter-puzzler-3-renaming-a-net-logically.aspx</link><pubDate>Mon, 28 Feb 2011 23:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1260627</guid><dc:creator>BobD</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1260627</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/02/28/encounter-puzzler-3-renaming-a-net-logically.aspx#comments</comments><description>&lt;p&gt;The other day a designer E-mailed me: &lt;i&gt;How can we rename a net in Encounter?&lt;/i&gt;&lt;/p&gt;&lt;p&gt;I followed up to clarify whether the designer wanted to change the net associated with routed wire segments, or wanted to rename a signal net. He clarified that he wanted to change a logical signal net&amp;#39;s name. &lt;/p&gt;&lt;p&gt;Changing the net name associated with a routed wire segments is described in &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:ViewSolution;solutionNumber=11671376;searchHash=b1f91494f95bd0fd774547d47af0a406"&gt;this solution&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;editSelect -nets VDD1&lt;br /&gt;editSelectVia -nets VDD1&lt;br /&gt;editChangeNet -to VDD2&lt;/font&gt;&lt;/p&gt;&lt;p&gt;However, it&amp;#39;s not so easy to change a logical net name in Encounter. The &amp;quot;name&amp;quot; field for a net isn&amp;#39;t editable in the Attribute Editor, there is no &amp;quot;dbSetNetName&amp;quot; command, and dbGet says the &amp;quot;name&amp;quot; attribute of the &amp;quot;net&amp;quot; object type isn&amp;#39;t settable: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;encounter 1&amp;gt; dbGet top.nets.?h&lt;br /&gt;name: string, Canonical (flat) name of the net&lt;/font&gt;&lt;/p&gt;&lt;p&gt;If an attribute is settable dbGet will say &amp;quot;settable&amp;quot; after the attribute name. For example:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;skipRouting(settable): bool, Specifies that Nanoroute should not route or re-route the net.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;So how can we change the net name programatically? How would we take this netlist:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase ();&lt;br /&gt;&amp;nbsp;wire net;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.Y(net));&lt;br /&gt;&amp;nbsp;BUFX1 i1(.A(net));&lt;br /&gt;endmodule&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;...and turn it into this:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase ();&lt;br /&gt;&amp;nbsp;&amp;nbsp; wire new_net;&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i0 (.Y(new_net));&lt;br /&gt;&amp;nbsp;&amp;nbsp; BUFX1 i1 (.A(new_net));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Today&amp;#39;s puzzler is to write a TCL script called &amp;quot;userChangeNetName&amp;quot; that changes the logical net name of nets programmatically: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;proc userChangeNetName {oldNetName newNetName} {&lt;br /&gt;&amp;nbsp; &amp;lt;your solution here&amp;gt;&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Leave your solution as a comment below. I&amp;#39;ll post further discussion and a round-up on Friday. &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;We&amp;#39;re looking to change the net name logically so don&amp;#39;t worry about things like wire segments or physical I/O pins. &lt;/p&gt;&lt;p&gt;For extra credit, check whether your scripted solution can handle the case where the net is connected to an I/O port and/or connected through Verilog hierarchy like top-level net &amp;quot;in&amp;quot; and &amp;quot;net2&amp;quot; in this example: &lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;module testcase (in);&lt;br /&gt;&amp;nbsp;input in;&lt;br /&gt;&amp;nbsp;wire net1, net2;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.Y(net1));&lt;br /&gt;&amp;nbsp;BUFX1 i1(.A(net1));&lt;br /&gt;&amp;nbsp;BUFX1 i2(.A(in));&lt;br /&gt;&amp;nbsp;BUFX1 i3(.Y(net2));&lt;br /&gt;&amp;nbsp;a i_a(.in(net2));&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module a(in);&lt;br /&gt;&amp;nbsp;input in;&lt;br /&gt;&amp;nbsp;BUFX1 i0(.A(in));&lt;br /&gt;endmodule&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Related Reading:&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Encounter Puzzler #1: &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/08/encounter-puzzler-where-did-my-fences-go.aspx"&gt;Where did my fences go?&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Encounter Puzzler #2: &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/20/encounter-puzzler-2-finding-registers-beneath-a-hierarchy.aspx"&gt;Finding registers beneath a hierarchy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I&amp;#39;ll look forward to seeing your solutions!&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2011/03/09/encounter-puzzler-solution-renaming-a-net-logically.aspx"&gt;Click here to see solutions and discussion about this puzzler &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1260627" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category></item><item><title>Tortoise Versus Hare … or How to Improve Your Time to Tapeout Using In-Design Signoff</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/02/23/tortoise-versus-hare-or-how-to-improve-your-time-to-tapeout-using-in-design-signoff.aspx</link><pubDate>Wed, 23 Feb 2011 19:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1260449</guid><dc:creator>PeteMc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1260449</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/02/23/tortoise-versus-hare-or-how-to-improve-your-time-to-tapeout-using-in-design-signoff.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Now that Wei Lii Tan has helped you with your New Year&amp;rsquo;s
resolution to &amp;ldquo;create a chip that is so compelling &amp;hellip;&amp;rdquo; in his &lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2011/01/31/tackling-your-greatest-chip-design-challenges-with-the-cadence-digital-end-to-end-flow.aspx?postID=1249626"&gt;previous
blog&lt;/a&gt;, I would like to help you understand how Cadence is using our signoff
qualified engines during the design implementation flow to reduce your time to
tapeout.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Anyone remember the story of the tortoise and the hare from
your childhood? The moral of the story is that simply being fast isn&amp;rsquo;t always
better, and in a way that is very much like using signoff quality engines
during the design implementation flow. Let me explain &amp;hellip;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Traditional design methodologies that have been established
over the years were optimized for runtime, mostly by trading off accuracy. By
reducing runtimes at points in the design where accuracy wasn&amp;rsquo;t needed, a
design could progress more rapidly to signoff. On the surface, this seems like
a very logical approach to take. However, deeper analysis shows that this might
not always enable the fastest time to tapeout.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;While the runtime for individual parts of the flow can be
improved by trading off accuracy for increased performance, many of Cadence&amp;rsquo;s
customers have already reflected that the bigger problem is repeating
implementation steps to address violations that are only found during late-stage
signoff. &lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;In fact, such customers have already experienced that using
signoff quality engines during the design implementation flow actually &lt;i style="font-weight:bold;"&gt;improves time to tapeout&lt;/i&gt; by enabling
better convergence in the solution. While it does take slightly longer to run
the signoff engines in the flow, the additional time is quite small compared to
having to repeat steps through the back-end design methodology to fix problems.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;OK, let&amp;rsquo;s get even more specific with an example.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Consider that the routing engine of an ASIC solution does
not manage all of the additional complex rules required at 28nm and below.
After the routing is finally completed, often following many optimization loops
to address timing violations, the design meets the timing
requirements and is ready for final signoff. Unfortunately, signoff DRC
checking now flags that the router didn&amp;rsquo;t meet all of the design rules, forcing
the design team to fix the routing &amp;hellip; but the router isn&amp;rsquo;t aware of the complex
rules that have failed, and so an automated fix is impossible. Instead, the
design team must manually fix the additional DRC violations, and that&amp;rsquo;s ECO
hell!!!&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Now consider the alternative solution. The router is enabled
with signoff quality DRC checking and so avoids creating DRC violations &amp;hellip;
admittedly, the router takes slightly longer to run, but once timing closure is
attained, the design team can have confidence that no additional DRC violations
will be found at signoff.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;While the above example explains how time to tapeout can be
improved for DRC checking, consider that all signoff components could result in
similar issues. At Cadence, I am proud that we have a very comprehensive suite
of signoff solutions that can execute separate standalone signoff, or enable our
signoff engines integrated within our Virtuoso custom IC and Encounter digital
platforms.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;/span&gt;Included in the
signoff suite are products that enable the following functionality (Cadence
product names are in parentheses)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Parasitic extraction (Cadence QRC Extraction)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp; Physical verification (Cadence PVS Design Rule Checker and Cadence PVS Layout vs Schematic Checker) &lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Static timing and SI analysis (Encounter Timing
System)&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Power integrity analysis (Encounter Power
System)&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Litho hotspot detection and analysis (Cadence
Litho Electrical Analyzer and Cadence Litho Physical Analyzer)&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;CMP analysis (Cadence CMP Predictor).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;









&lt;span style="font-size:11pt;line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;So, just like the tortoise and hare story, faster
runtimes might sound like the best option, but faster time to tapeout requires
a different approach.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Pete McCrorie &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1260449" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Signoff+Analysis/default.aspx">Signoff Analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Virtuoso/default.aspx">Virtuoso</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/static+timing+analysis/default.aspx">static timing analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dynamic+rail+analysis/default.aspx">dynamic rail analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DRC/default.aspx">DRC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/LVS/default.aspx">LVS</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tapeout/default.aspx">tapeout</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/power+analysis/default.aspx">power analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI+analysis/default.aspx">SI analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/noise+analysis/default.aspx">noise analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/design+rules/default.aspx">design rules</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EPS/default.aspx">EPS</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/ETS/default.aspx">ETS</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DFM/default.aspx">DFM</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/timing+convergence/default.aspx">timing convergence</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Timing+analysis/default.aspx">Timing analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/signoff/default.aspx">signoff</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EM+Failures/default.aspx">EM Failures</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/IR+Drop/default.aspx">IR Drop</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+end-to-end+flow/default.aspx">Digital end-to-end flow</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+10.1/default.aspx">EDI 10.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/In-Design+Signoff/default.aspx">In-Design Signoff</category></item><item><title>Evolution of Design Exploration and Planning</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/02/17/evolution-of-design-exploration-and-planning.aspx</link><pubDate>Thu, 17 Feb 2011 19:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1254619</guid><dc:creator>abham</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1254619</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/02/17/evolution-of-design-exploration-and-planning.aspx#comments</comments><description>&lt;p&gt;The great architect Frank Lloyd
Wright once said &amp;quot;you can fix it on the drafting board with an eraser, or on
the construction site with a sledge hammer.&amp;quot; The semiconductor design industry
is a perfect example where finding issues later in the flow can be extremely
expensive. Chips that fail in high-volume consumer products can cost companies
hundreds of millions or even a billion dollars, and there is huge benefit to
validating the design and identifying and fixing issues early in the design
process.&lt;/p&gt;

&lt;p&gt;To address this issue, &lt;a href="https://www.cadence.com:443/products/di/first_encounter/pages/default.aspx"&gt;First
Encounter&lt;/a&gt; introduced the concept of design exploration and planning in IC
design nearly 10 years ago. This enabled designers to build early prototypes of
their chips and resolve issues that usually came late in the design cycle,
along the critical path toward reaching final tapeout. This significantly
reduced the overall turn-around time of the design flow and provided huge gains
in productivity and predictability of the design process and schedule. Design
exploration and planning has since become an integral part of any IC design
flow and has changed significantly over the years to keep up with the growing
chip size and complexity in accordance with Moore&amp;#39;s Law. &amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;b&gt;Robust Hierarchical Methodology &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;While hierarchical methodologies
were fairly immature back in the days as most designs were done flat or
bottom-up, today any productive design exploration and planning solution
requires a robust hierarchical methodology to support the big designs of today.
Cadence has been a leader in this area, and both First Encounter and the Encounter
Digital Implementation System support various hierarchical design styles such
as channel-based, channel-less, micro-channels or master-clone. &lt;/p&gt;

&lt;p&gt;The hierarchical support in
Encounter helps physical designers assess how best to partition the logical
hierarchy into physical modules by analyzing the optimal pin assignments;
creating accurate time budgets; accurately predicting the clock distribution
networks; analyzing the power grids; and eventually generating complete timing
and physical constraints for each of the physical modules. To further handle
the Giga-Gate designs of today, we have developed a new data abstraction
technology. This unique capability allows netlist compression up to 90% while
maintaining relevant timing and congestion information, resulting in faster
turnaround time and one pass implementation handoff. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Implementation Quality Automation &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;In addition, the growing chip
functionality in a shrinking time to market window demands increasing
automation to get early feedback, while still providing results good enough for
implementation. A case in point is the automation in macro placement. To
address the ever-increasing number of hard macros on a design, Automated
Floorplan Synthesis in First Encounter now enables concurrent standard cell and
macro placement that helps designers to generate implementation quality
floorplans for both flat and hierarchical designs. &lt;/p&gt;

&lt;p&gt;The Floorplan Ranking capability
further empowers designers to general multiple floorplans in parallel and rank
them based on different criteria such as timing and area. This enables
designers to do a quick feasibility analysis and make informed trade-offs early
in the floorplanning stage. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Low-Power Support &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, there is growing
concern for advanced-node support and low-power today as wireless chips
dominate the consumer market. To address this, First Encounter also supports
the Common Power Format (CPF), advanced low-power techniques, and design-for-yield capabilities that are critical for power hungry and
advanced node designs. &lt;/p&gt;

&lt;p&gt;First Encounter today is an integral
part of the Cadence Digital End-to-End Solution. It paves the way for Silicon
Realization by providing a comprehensive design planning and debug environment
that captures the design intent upfront, enables large scale designs with its
unique abstraction capabilities and provides a predictable convergent path for
hierarchical design closure. With the ever-growing chip complexity, design
planning and prototyping will continue to gain significance in the IC design
flow. The pay-offs will be in the form of overall increased productivity,
predictability and profitability. I am sure we will continue to see growing
innovation in this area and it will be fascinating to see how this space
reshapes in the future.&lt;/p&gt;

&lt;p&gt;Abha Maheshwari &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1254619" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning+and+Prototyping/default.aspx">Floorplanning and Prototyping</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/First+Encounter/default.aspx">First Encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/partitioning/default.aspx">partitioning</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning/default.aspx">Floorplanning</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+digital+Implementation+system/default.aspx">Encounter digital Implementation system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+end-to-end+flow/default.aspx">Digital end-to-end flow</category></item><item><title>Guest User Blog: dbShape For All Your Logical Operation Needs</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/02/16/dbshape-for-all-your-logical-operation-needs.aspx</link><pubDate>Wed, 16 Feb 2011 19:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1254487</guid><dc:creator>BobD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1254487</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/02/16/dbshape-for-all-your-logical-operation-needs.aspx#comments</comments><description>&lt;p&gt;&lt;span id="anormal_12" class="Cadence_CS_BlogDetail_BlogText"&gt;&lt;i&gt;This is a
 guest post from Jason Gentry at Avago. I hope you enjoy this useful piece 
he&amp;#39;s contributed on using the Encounter Digital Implementation System&amp;#39;s dbShape command that debuted in 10.1.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I figured it was time for another guest blog, especially since I&amp;#39;ve been able to play with one of the new-to-EDI10.1 commands called &amp;quot;dbShape.&amp;quot;&amp;nbsp; During CDNLive! 2008, one of the topics I talked about was my need for logical operations or LogOps for short.&amp;nbsp; Think basic OR, AND, ANDNOT, etc. operations on physical geometries.&amp;nbsp; I had Tcl-implemented versions of these that worked well (N-log(N)) but their performance was really poor when dealing with a large number of shapes (N).&amp;nbsp; Well, apparently Cadence was listening and decided to bolt-on a shapes engine.&amp;nbsp; EDI10.1 introduces the &amp;#39;dbShape&amp;#39; command and it is a thing of beauty.&amp;nbsp; The usage is as follows:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier" size="2"&gt;Usage: dbShape [-help] [-d] [-step &amp;lt;step&amp;gt;] [-output &amp;lt;polygon|rect&amp;gt;]&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;&amp;nbsp; &amp;lt;shapeList&amp;gt; [AND &amp;lt;shapeList&amp;gt; | ANDNOT &amp;lt;shapeList&amp;gt; | OR &amp;lt;shapeList&amp;gt; | XOR &amp;lt;shapeList&amp;gt;&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;&amp;nbsp; | SIZE &amp;lt;value&amp;gt;| BBOX | MOVE {&amp;lt;dx&amp;gt; &amp;lt;dy&amp;gt;}] ...&lt;br /&gt;&lt;br /&gt;-help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Prints out the command usage&lt;br /&gt;-d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # User specified values and return values are in database units.&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Default: All values are in user units, in microns. (bool, optional)&lt;br /&gt;-step &amp;lt;step&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Specifies step size if output format is rect, required to convert&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # non-orthogonal shapes into series of rectangles. Default: minwidth&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # value of first routing layer (coord, optional).&lt;br /&gt;-output &amp;lt;polygon|rect&amp;gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Specifies the output format. default: rect (string, optional)&lt;br /&gt;&amp;lt;shapeList&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # polygon or rect or list of polygon and rect. polygon:&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # {{x y} {x y} {x y} ... }; rect: {x1 y1 x2 y2} (list, required)&lt;br /&gt;AND &amp;lt;shapeList&amp;gt;&amp;nbsp; # binary operator: intersection of shapeLists&lt;br /&gt;ANDNOT &amp;lt;shapeList&amp;gt; # binary operator: initial shapeList minus &amp;lt;shapeList&amp;gt;&lt;br /&gt;OR &amp;lt;shapelist&amp;gt;&amp;nbsp;&amp;nbsp; # binary operator: union of shapelists&lt;br /&gt;XOR &amp;lt;shapeList&amp;gt;&amp;nbsp; # binary operator: OR minus AND of shapeList&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # (string, optional)&lt;br /&gt;SIZE &amp;lt;value&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # unary operator: increase the size of shapeList by &amp;lt;value&amp;gt;&lt;br /&gt;MOVE {&amp;lt;dx&amp;gt; &amp;lt;dy&amp;gt;} # unary operator: move the shapeList by {&amp;lt;dx&amp;gt; &amp;lt;dy&amp;gt;}&lt;br /&gt;BBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # unary operator: computes the bounding box of shapeList&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # (string, optional)&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve since replaced all of my low-level LogOp procedures with calls to dbShape.&amp;nbsp; I&amp;#39;ve seen some performance improvement but it wasn&amp;#39;t until I re-architected some of my biggest programs that I saw a major impact.&amp;nbsp; One such script, a custom power grid insertion script, went from running in 8-9 hours to running in 1/2 an hour.&amp;nbsp; It ran so fast I had to double check that my power grid actually got inserted.&amp;nbsp; Below are some examples of each of the available operations (note that I use the &amp;#39;-output rect&amp;#39; option for all of these to simplify the illustrations but it is not necessary).&lt;br /&gt;&lt;br /&gt;set shapes1 [list [list 100 100 1100 1100]]&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes1.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes1.jpg" border="0" height="500" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;set shapes2 [list [list 300 300 500 500] [list 700 700 900 900]]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes2_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes2_580.jpg" border="0" height="489" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;set shapes3 [list [list 500 700 1200 900]]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes3_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes3_580.jpg" border="0" height="459" width="501" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;LogOp OR:&lt;br /&gt;dbShape -d -output rect $shapes1 OR $shapes3 &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/OR.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/OR.jpg" border="0" height="466" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;LogOp: AND&lt;br /&gt;dbShape -d -output rect $shapes1 AND $shapes2&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes2_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/shapes2_580.jpg" border="0" height="489" width="500" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LopOp: ANDNOT&lt;br /&gt;dbShape -d -output rect $shapes1 ANDNOT $shapes2&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mv_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mv_580.jpg" border="0" height="501" width="500" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LogOp: SIZE&lt;br /&gt;dbShape -d -output rect $shapes2 SIZE 100&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/SIZE_mv_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/SIZE_mv_580.jpg" border="0" height="509" width="500" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are some limitations that you should know about before you write your own scripts:&lt;/p&gt;&lt;p&gt;&amp;nbsp; - There is only a &amp;#39;SIZE&amp;#39; logop, no &amp;#39;SIZEX&amp;#39; or &amp;#39;SIZEY&amp;#39; for sizing only one dimension.&amp;nbsp; This has caused me some headaches but I&amp;#39;ve gotten around it for the most part for now, albeit inefficiently.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - The is no &amp;#39;INTERSECTS&amp;#39; LogOp; a LogOp that returns all shapes that intersect the specified shapeList.&amp;nbsp; Think &amp;#39;AND&amp;#39; without modifying the original shapeList.&amp;nbsp; This would be really nice for finding floating power wires (wires with no vias connecting to it).&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - If you choose to work with rectangles (-output rect), all of the rectangles are returned in maximally-vertical form.&amp;nbsp; In other words, the resulting rectangles will be cut such that they are as tall as possible.&amp;nbsp; You might ask, &amp;quot;Why do I care?&amp;quot;&amp;nbsp; The only time that I&amp;#39;ve needed to care whether I have maximally-horizontal versus maximally-vertical rectangles dealt with trying to compute spacing requirements.&amp;nbsp; The &amp;quot;run-length&amp;quot; of a given shape may change depending on whether or not it appears very long or very short.&amp;nbsp; I&amp;#39;ve included images below showing the above ANDNOT example with maximally-horizontal and maximally-vertical configurations.&lt;br /&gt;&lt;br /&gt;Maximally-Vertical Rectangles:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mv_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mv_580.jpg" border="0" height="502" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Maximally-Horizontal Rectangles:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mh_580.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/ANDNOT_mh_580.jpg" border="0" height="497" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; - You can daisy-chain the operations.&amp;nbsp; This is best shown through example:&lt;br /&gt;&lt;br /&gt;dbShape -d -output rect $shapes1 OR $shapes3 ANDNOT $shapes2&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/Daisy.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/Daisy.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/DAISY_mv_580.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;-Jason Gentry&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Related Post:&lt;/b&gt; &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/28/using-dbtransform-to-translate-geometric-coordinates-in-encounter.aspx"&gt;Using dbTransform to Translate Geometric Coordinates in Encounter&lt;/a&gt; &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1254487" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI/default.aspx">EDI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/db+access/default.aspx">db access</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Avago/default.aspx">Avago</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbShape/default.aspx">dbShape</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Gentry/default.aspx">Gentry</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+10.1/default.aspx">EDI 10.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/logical+operations/default.aspx">logical operations</category></item><item><title>Tackling your Greatest Chip Design Challenges with the Cadence Digital End-to-End Flow</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/01/31/tackling-your-greatest-chip-design-challenges-with-the-cadence-digital-end-to-end-flow.aspx</link><pubDate>Mon, 31 Jan 2011 13:01:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1249626</guid><dc:creator>Design4Life</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1249626</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/01/31/tackling-your-greatest-chip-design-challenges-with-the-cadence-digital-end-to-end-flow.aspx#comments</comments><description>&lt;div&gt;&lt;div&gt;&lt;div id="_com_1" class="msocomtxt"&gt;&lt;span&gt;&lt;p&gt;It hasn&amp;#39;t been that long, but do you recall your new year&amp;#39;s resolution? Eat healthier? Have more work-life balance? Exercise more? &lt;/p&gt;&lt;p&gt;Or, what about, &amp;quot;create a chip that is so compelling and useful, it blows everybody&amp;#39;s socks off in the semiconductor industry?&amp;quot;&lt;/p&gt;&lt;p&gt;If the latter is your new year&amp;#39;s resolution, then I am excited to tell you about a flow that was unveiled today (Jan. 31, 2011) and can help you achieve it. Just hours ago, we unveiled the &lt;b&gt;Cadence Digital End-to-End Flow,&lt;/b&gt; an integrated RTL-to-GDSII flow that we believe is the next step forward in digital design, implementation and verification. This includes the award-winning &lt;b&gt;Encounter Digital Implementation System &lt;/b&gt;(including implementation and in-design signoff technologies)&lt;b&gt;, Encounter RTL Compiler, Encounter Conformal&lt;/b&gt; technologies (including Logic Equivalence Checking, ECO Designer and Conformal-LP), as well as &lt;b&gt;Encounter Test&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Corporate marketing phrases aside, the Cadence digital end-to-end solution is actually the result of countless hours of listening to our customers and partners, prioritizing what needs to be done to enable the next generation of digital designs, and then hunkering down to implement them in the software. &lt;/p&gt;&lt;p&gt;&lt;b&gt;What our Customers Have Asked For&lt;/b&gt;&lt;/p&gt;&lt;p&gt;We&amp;#39;ve learned a lot from our customers and the semiconductor industry in general, and I&amp;#39;d like to share a little about what we&amp;#39;ve learned. We knew performance requirements and the sheer size of today&amp;#39;s designs would outgrow EDA capabilities if we didn&amp;#39;t do something about it. The walls between synthesis and physical implementation are coming down quickly, as physical effects play a more important role up front. Also, the amount of manual work required for large-scale ECOs has become unmanageable. &lt;/p&gt;&lt;p&gt;Besides those core requirements stated above, there are design categories that were previously considered non-mainstream designs, but are considered mainstream today -- namely, mixed signal and low power designs. As custom designs grow in size and complexity, the automation provided in digital solutions is a natural progression in terms of productivity -- but only if the digital tools are made accessible enough to custom designers, in terms of tool familiarity, and of course the ease of maintaining design intent and database coherence between the two domains. &lt;/p&gt;&lt;p&gt;As power consumption targets become a hard requirement instead of the &amp;quot;see how much we can save&amp;quot; approach, designers are paying more attention to having convergence to a set power target throughout the design flow. This means designs have to meet all requirements -- power, performance and area, and often in that order, especially for mobile devices. In other words, there&amp;#39;s no backing out of power requirements just to meet timing. &lt;/p&gt;&lt;p&gt;Finally, leading-edge customers of ours want more integration of advanced technology. As 28nm/32nm processes gain popularity and process design rules become more complicated, it is important for EDA companies to collaborate with foundries to streamline the handling of the newer design rules. Vertical chip packaging schemes are being extended to the SoC level, introducing a new category -- the 3D stacked die design environment. This will bring about significant benefits, including the reduction of interconnect bottlenecks and the ability to have heterogeneous processes coexisting in the same package. But these benefits also introduce new challenges to the design methodology.&lt;/p&gt;&lt;p&gt;&lt;b&gt;The Cadence Digital End-to-end Flow&lt;/b&gt;&lt;/p&gt;&lt;p&gt;So, how does the Cadence digital end-to-end flow address the challenges outlined above? &lt;/p&gt;&lt;p&gt;We have updated the core design closure engines. Logic synthesis now has &lt;b&gt;improved physical awareness&lt;/b&gt;, resulting in a more convergent RTL-to-GDSII flow. Physical implementation optimization engines have been vastly improved with an in-design &lt;b&gt;advanced analysis engine&lt;/b&gt; that provides ultra fast, concurrent signal integrity and timing analysis that is capable of reducing SI closure runtime by half, and reduce iterations by providing more convergence. We also now have a standardized, single-option &lt;b&gt;high effort flow&lt;/b&gt; that can be put through the toughest, most timing-critical designs, as opposed to requiring the designer to come up with a custom script. This design closure methodology fully supports 28nm/32nm design rules. In fact, we have streamlined 28nm/32nm rule support such that routing speed for 28nm/32nm designs in this release has been sped up by 2X compared to the previous 9.1 release.&lt;/p&gt;&lt;p&gt;To address designs in the 100 million instances range, we have developed &lt;b&gt;new data abstraction technology&lt;/b&gt; that provides a new way for entire blocks of logic to be modeled simply and accurately, resulting in runtime improvements of 20X or more. This enables designers to tackle ultra-large designs with reasonable runtime. Also, to address the ever-increasing number of hard macros on a design, we have revamped our &lt;b&gt;automatic macro placement&lt;/b&gt; engine to be more intelligent than before, and to produce results that resemble hand-placed floorplanning. &lt;/p&gt;&lt;p&gt;ECO-weary customers (i.e. everyone in semiconductor design) can expect significant improvement in the way large-design ECOs are done. With the &lt;b&gt;Cadence ECO Designer,&lt;/b&gt; &amp;nbsp;part of the digital end-to-end flow, we now have a much more automated way of implementing RTL ECOs all the way from ECO synthesis to physical implementation. The bottom line is: more automation in generating the ECO netlist, and more automation in implementing that netlist with your ECO cells.&lt;/p&gt;&lt;p&gt;We have also enhanced our &lt;b&gt;constraints-driven mixed signal flow,&lt;/b&gt; allowing intent to be effectively conveyed between digital and custom design. Among the enhancements is the ability for accurate full mixed-signal static timing analysis and timing-driven physical implementation to eliminate iterations between analog and digital design teams. &lt;b&gt;Low power&lt;/b&gt; designers will benefit from more automation and ease-of-use in our correct-by-construction approach. A notable improvement is the &lt;b&gt;power intent architect&lt;/b&gt;, which is a much-requested feature that allows power intent to be created and validated by the tool, using an intuitive user interface. A second highlight is an enhancement to physical synthesis to enable smarter clock gating through Clock Topology Planning (CTP); leveraging physical information early in the flow during synthesis to create smarter clocks, leading to lower power chips.&lt;/p&gt;&lt;p&gt;Last but not least is something that I am very excited about, not only because it&amp;#39;s a significant leap forward in terms of chip design and packaging, but the potential it has to bring about some major breakthroughs in chip design: &lt;b&gt;&lt;a href="http://www.cadence.com/rl/Resources/white_papers/3DIC_wp.pdf"&gt;3D-IC design&lt;/a&gt;&lt;/b&gt;. The Cadence digital end-to-end flow includes the first production release of a fully integrated 3D-IC design environment. In short, we now have a full-featured consistent design, implementation and verification environment across digital, full-custom, and packaging environments, driven by unified 3DIC design intent, that allows designers to fully realize their 3D-IC design and benefit from the ability to reduce interconnect bottlenecks and realize heterogeneous processes on a single package.&lt;/p&gt;&lt;p&gt;&lt;b&gt;What Does This Mean to You?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Last October Cadence announced our new approach that delivers a deterministic path to &lt;a href="http://www.cadence.com/rl/Resources/white_papers/silicon_realization_wp.pdf"&gt;Silicon Realization&lt;/a&gt; by creating a design flow based on the three requirements of unified design intent, design abstraction and design convergence. In other words, by providing a flow in which design intent is pervasive (instead of having different parts of the flow interpret design intent differently), uses the appropriate levels of abstraction (such as hierarchical abstraction, or other modeling technologies such as the new advanced analysis engine for signal integrity and timing) to deliver better speed and capacity, and last but not least, ensuring a highly convergent flow, we aim to provide you with the solution that gives you fastest path to successful silicon. &lt;/p&gt;&lt;p&gt;The Cadence digital end-to-end flow is part of our &lt;b&gt;Silicon Realization&lt;/b&gt; goal. But don&amp;#39;t just take our word for it -- as you hear more about it in the coming months, I invite you to give it a try, and if you already have, feel free to comment below on your experiences so far.&lt;/p&gt;&lt;p&gt;&lt;b&gt;What&amp;#39;s Next?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;You can find out more about the Cadence digital end-to-end flow from the article located &lt;a href="http://www.cadence.com/cadence/newsroom/features/Pages/digital_e2e.aspx"&gt;here&lt;/a&gt;. Or, check us out this week at DesignCon 2011. Hope to see you there!&lt;/p&gt;&lt;p&gt;Wei Lii Tan &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1249626" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/ECO/default.aspx">ECO</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/rtl+compiler/default.aspx">rtl compiler</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/low+power/default.aspx">low power</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/mixed+signal/default.aspx">mixed signal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+digital+Implementation+system/default.aspx">Encounter digital Implementation system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/mixed-signal/default.aspx">mixed-signal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3DIC/default.aspx">3DIC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3D/default.aspx">3D</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3D-IC/default.aspx">3D-IC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/silicon+realization/default.aspx">silicon realization</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+end-to-end+flow/default.aspx">Digital end-to-end flow</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Test/default.aspx">Encounter Test</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/gigahertz/default.aspx">gigahertz</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/giga-gate/default.aspx">giga-gate</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Conformal/default.aspx">Conformal</category></item><item><title>Advanced Maneuvers in Feedthrough Insertion: Maximizing Routability while Minimizing Port Creation</title><link>http://www.cadence.com/Community/blogs/di/archive/2011/01/10/advanced-maneuvers-in-feedthrough-insertion-maximizing-routability-while-minimizing-port-creation.aspx</link><pubDate>Mon, 10 Jan 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1249096</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1249096</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2011/01/10/advanced-maneuvers-in-feedthrough-insertion-maximizing-routability-while-minimizing-port-creation.aspx#comments</comments><description>&lt;p&gt;Previously I wrote about the &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/12/27/planning-for-hierarchical-design-success-do-you-have-a-robust-feedthrough-insertion-solution.aspx"&gt;basics of feedthrough insertion in Encounter&lt;/a&gt;.&amp;nbsp; Today I&amp;#39;d like to push into a tiny but powerful example of how Encounter&amp;#39;s feedthrough insertion solution can derive solutions that enable rapid top-level design closure.&lt;/p&gt;&lt;p&gt;Feedthrough insertion in Encounter has two modes of operation: Placement-based -or- route-based.&amp;nbsp; The advantage of route-based is its awareness of congested vs. sparse areas of the design.&amp;nbsp; Encounter&amp;#39;s high capacity virtual flat view of the design combined with hierarchically aware track-assignment-based trial routing provides design insight not usually available until after partitioning and reassembly.&amp;nbsp; We can use this information to derive feedthrough insertion and pin assignment with a high degree of routability.&lt;/p&gt;&lt;p&gt;Once we embark up on deriving feedthrough insertion solutions based on trial routing, some interesting situations arise.&amp;nbsp; Take for example the one pictured below.&amp;nbsp; The design has 4 partitions.&amp;nbsp; The example net potentially in need of feedthrough insertion is driven from an instance within the partition on the lower left to a partition on the upper right.&amp;nbsp; I&amp;#39;ve highlighted the net showing how it crosses over the neighboring partition to the lower right: &lt;/p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed1.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed1.png" border="0" width="450" height="433" alt="" /&gt;&lt;/a&gt;&lt;p&gt;If we run route-based feedthrough insertion it will follow the topology of the net, determine which partitions it crosses, and insert feedthroughs generally along the route.&lt;/p&gt;&lt;p&gt;Here is the command:&lt;b&gt;&lt;br /&gt;insertPtnFeedthrough -chanLess -doubleBuffer -routeBased&lt;/b&gt; &lt;/p&gt;&lt;p&gt;And here is the result: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed2.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed2.png" border="0" width="450" height="431" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After performing pin assignment (&lt;b&gt;assignPtnPin&lt;/b&gt;) and commiting the partitions (&lt;b&gt;partition&lt;/b&gt;) the result is neatly aligned connections on the partitions with no top level routing crossing over partitions:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed3.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed3.png" border="0" width="450" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This solution is fine, but what if we wanted to reduce the number of ports created and feedthrough buffers inserted?&amp;nbsp; For this particular net we could avoid the need for feedthrough buffers all together if we instead assign the partition pins for the lower left and upper right partition along the common edge they share in the center of the design.&lt;/p&gt;&lt;p&gt;But how can derive the benefits of route-based feedthrough insertion while still detecting situations where it would be better to instead simply align pins on common edges in situations like this?&amp;nbsp; There&amp;#39;s a very useful switch called &amp;quot;-preferPinAbutment&amp;quot; that will give us the best of both worlds.&amp;nbsp; With it, the tool will perform route-based feedthrough insertion and back off in situations where a common edge is available -- unless the common edges are highly congested. &lt;/p&gt;&lt;p&gt;insertPtnFeedthrough -chanLess -doubleBuffer -routeBased &lt;b&gt;-preferPinAbutment&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed4.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/feed4.png" border="0" width="450" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I remember working with our developers on this capability years ago.&amp;nbsp; I thought it was a stretch when I asked them for it but I was pleased when they implemented it.&amp;nbsp; There are a number of other capabilities insertPtnFeedthrough has that are subtly powerful.&amp;nbsp; I&amp;#39;ll be talking about them in future blog posts. &lt;/p&gt;&lt;p&gt;&lt;i&gt;Have you used Encounter&amp;#39;s feedthrough insertion functionality?&amp;nbsp; If so I&amp;#39;d love to hear what&amp;#39;s working and what&amp;#39;s not in the comments.&lt;/i&gt; &lt;/p&gt;&lt;p&gt;Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1249096" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/hierarchical+design/default.aspx">hierarchical design</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/feedthrough+insertion/default.aspx">feedthrough insertion</category></item><item><title>Planning for Hierarchical Design Success: Do You Have a Robust Feedthrough Insertion Solution?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/12/27/planning-for-hierarchical-design-success-do-you-have-a-robust-feedthrough-insertion-solution.aspx</link><pubDate>Mon, 27 Dec 2010 14:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1248835</guid><dc:creator>BobD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1248835</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/12/27/planning-for-hierarchical-design-success-do-you-have-a-robust-feedthrough-insertion-solution.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Feedthrough insertion&lt;/b&gt; is a subtly crucial task that naturally arises in hierarchical digital design.&amp;nbsp; There are several types of approaches we can use to allow signals to traverse across a chip, but the most common and effective I&amp;#39;ve seen is where buffers are inserted in neighboring partitions.&amp;nbsp; This eliminates top-level routing and more importantly takes the top-level timing closure task and makes it part of block-level timing closure.&amp;nbsp; In Encounter this capability is accessed through the TCL command &lt;b&gt;insertPtnFeedthrough&lt;/b&gt;. &lt;/p&gt;&lt;p&gt;Here&amp;#39;s a picture to describe what I&amp;#39;m talking about.&amp;nbsp; Say we have 3 partitions: a, b, and c.&amp;nbsp; A signal that originates in &amp;quot;a&amp;quot; and connects to &amp;quot;c&amp;quot; traverses over &amp;quot;b&amp;quot;: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/1.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/1.png" border="0" width="450" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If we don&amp;#39;t perform feedthrough insertion, what we&amp;#39;ll get is a net that traverses over partition &amp;quot;b&amp;quot;.&amp;nbsp; This is unacceptable in scenarios where all layers are reserved for partitions, and in scenarios where some layers are reserved for over the block-routing we get into a difficult situation because we can&amp;#39;t insert buffers on nets that exceed the maximum distance required for rebuffering.&amp;nbsp; See below what the design would look like after buffering &lt;i&gt;without&lt;/i&gt; feedthrough insertion: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f2.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f2.png" border="0" width="450" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If we use insertPtnFeedthrough, the tool will:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Insert buffers within &amp;quot;b&amp;quot; for each entrance and (optionally) exit required to traverse the partition.&lt;/li&gt;&lt;li&gt;Create new ports as needed on the partitions to make new connections.&amp;nbsp; In this case, 1 new input and 1 new output port is needed on &amp;quot;b&amp;quot;.&lt;/li&gt;&lt;li&gt;Create new top-level logical nets as needed to connect to the new ports.&lt;/li&gt;&lt;/ol&gt;Here&amp;#39;s what the design would look like after feedthrough insertion (insertPtnFeedthrough -chanLess -bufCell BUFX1 -doubleBuffer) prior to partitioning:&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f3.png"&gt;&lt;/a&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f4.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f4.png" border="0" width="450" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once the buffers have been inserted we can place the partition pins (&lt;b&gt;assignPtnPin&lt;/b&gt;) and commit the partitions (&lt;b&gt;partition&lt;/b&gt; is the command).&amp;nbsp; The result should be a design where connections between neighboring partitions consist of only 2-pin nets between abutted edges (or in the case of design with small roughly 10 microns channels, short jumper wires connecting the partitions): &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f5.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/f5.png" border="0" width="450" height="432" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So that&amp;#39;s how feedthrough works in its simplest sense. In this context it&amp;#39;s tempting to consider writing a script to do this at the logic synthesis stage.&amp;nbsp; But feedthrough insertion is much more complex in practice.&amp;nbsp; In upcoming blog posts I plan to focus on more advanced scenarios to give you a sense of what to prepare for in terms of making sure the tools you&amp;#39;re using are up to the task. &lt;/p&gt;&lt;p&gt;I&amp;#39;d love it if you subscribed to our &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;Digital Implementation RSS feed&lt;/a&gt; -or- via E-mail at the form on the right side of this page so we can continue the conversation. &lt;/p&gt;&lt;p&gt;Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1248835" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/hierarchical+design/default.aspx">hierarchical design</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/feedthrough+insertion/default.aspx">feedthrough insertion</category></item><item><title>CDNLive! Silicon Valley 2010: User Papers Explore Digital Implementation</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/11/04/cdnlive-silicon-valley-2010-now-available-on-demand.aspx</link><pubDate>Thu, 04 Nov 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1224726</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1224726</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/11/04/cdnlive-silicon-valley-2010-now-available-on-demand.aspx#comments</comments><description>&lt;p&gt;I previously wrote about the general session of the 2010 CDNLive! Silicon Valley conference, &lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2010/10/27/keeping-it-high-level-at-cdnlive-silicon-valley-2010.aspx"&gt;focusing on what EDA360 means for Digital Implementation engineers&lt;/a&gt;.&amp;nbsp;
 Today I wanted to share a little more about a couple of papers I 
co-presented along with Cadence customers.&amp;nbsp; I enjoy co-presenting with 
customers where I, as a Cadence Applications Engineer, describe a piece 
of functionality in the system and then a customer describes how they 
brought it to bear on a real-world design challenge.&amp;nbsp; It&amp;#39;s not always 
pretty or perfect but it is almost always useful.&amp;nbsp; The best part of 
conferences like these is the chance to connect other users with the 
same hyper-specific interests as you have, and then hopefully stay 
connected with them via the Cadence.com Community or on other social 
channels.&lt;/p&gt;&lt;p&gt;Proceedings for the conference have been posted.&amp;nbsp; &lt;a href="https://www.cadence.com:443/cdnlive/na/2010/pages/default.aspx"&gt;Click here to access CDNLive! Silicon Valley 2010 On-Demand&lt;/a&gt;
 where you can access slides for the presentations described below, along with 
(optionally) listening to audio recordings of the presentations along 
with slides.&amp;nbsp; You&amp;#39;ll need a Cadence.com account to view the content.&amp;nbsp; If
 you don&amp;#39;t have one you can &lt;a href="https://www.cadence.com:443/pages/registration.aspx"&gt;get one here&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;In the first presentation I was involved with,&lt;b&gt; Ranjit LoboPrabhu&lt;/b&gt; from &lt;a href="http://netronome.com/"&gt;Netronome&lt;/a&gt;
 described how they implemented a post-mask Mega-ECO.&amp;nbsp; Post-mask meaning
 all of the base layers were frozen so no changes could be made to the 
instances in the design, and &amp;quot;mega&amp;quot; meaning a large amount of changes 
were being made.&amp;nbsp; ECOs like this are complex because all the changes 
need to be made using spare cells -- or by reclaiming dormant logic if 
not enough spare cells are available.&amp;nbsp; Ranjit (photo below) shared how 
they leveraged &lt;a href="https://www.cadence.com:443/products/ld/eco_designer/pages/default.aspx"&gt;Conformal ECO Designer&lt;/a&gt; along with the Encounter Digital Implementation System&amp;#39;s &amp;quot;&lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=/soceUG/soceUG9.1.2/ECOFlow.html"&gt;ecoDesign&lt;/a&gt;&amp;quot;
 super-command to achieve their design goals.&amp;nbsp; Judging from the amount 
of audience interaction during the session, I think attendees 
appreciated the level of technical detail in the presentation.&amp;nbsp;&amp;nbsp;&lt;a href="https://www.cadence.com:443/pages/dh.aspx?vfile=/cdnlive/library/documents/2010/NA/CDNLive%21_SV_2010_SiR_2-2_LoboPrabhu.pdf&amp;amp;topic=CDNLiveNA2010Proceedings"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive4.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive4.jpg" border="0" height="386" width="579" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Next, &lt;b&gt;Jason Gentry&lt;/b&gt; from &lt;a href="http://avagotech.com/"&gt;Avago Technologies&lt;/a&gt; presented on extending the Encounter Digital Implementation System GUI in version 9.1.&amp;nbsp; You might remember his name from a &lt;a href="https://www.cadence.com:443/Community/blogs/di/archive/2010/09/28/using-dbtransform-to-translate-geometric-coordinates-in-encounter.aspx"&gt;guest post he wrote about the dbTransform command&lt;/a&gt;.&amp;nbsp;
 In the 9.1 release, Encounter switched from having an entirely tk-based
 GUI to being Qt-based.&amp;nbsp; That changed the way we as users interact with 
and extend the main GUI.&amp;nbsp; If you&amp;#39;ve tried to source an Encounter script 
written for version 8.1 or earlier that attaches a new item to a 
pulldown menu and received a message saying &lt;b&gt;bad window path name &amp;quot;.m&amp;quot;&lt;/b&gt; this presentation was right up your alley.&amp;nbsp;&amp;nbsp;&lt;a href="https://www.cadence.com:443/pages/dh.aspx?vfile=/cdnlive/library/documents/2010/NA/CDNLive%21_SV_2010_SiR_2-6_Gentry.pdf&amp;amp;topic=CDNLiveNA2010Proceedings"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive2.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive2.jpg" border="0" height="385" width="579" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks
 to everyone who participated in the conference, especially those who 
introduced themselves saying they participate in the Cadence.com 
Digitial Implementation Community.&amp;nbsp; It means a lot to me.&amp;nbsp; I&amp;#39;ll look 
forward to continuing the conversation and seeing you at a future 
Cadence event! &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1224726" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive_2100_/default.aspx">CDNLive!</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDA360/default.aspx">EDA360</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/silicon+realization/default.aspx">silicon realization</category></item><item><title>CDNLive! Silicon Valley 2010: What EDA360 Means to Digital Implementation Engineers</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/10/27/keeping-it-high-level-at-cdnlive-silicon-valley-2010.aspx</link><pubDate>Wed, 27 Oct 2010 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1202504</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1202504</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/10/27/keeping-it-high-level-at-cdnlive-silicon-valley-2010.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/default.aspx"&gt;CDNLive! Silicon Valley 2010&lt;/a&gt; -- our user&amp;#39;s group meeting and more -- kicked off yesterday morning at the Fairmont Hotel in San Jose, California.&amp;nbsp; It&amp;#39;s been 2 years since the last CDNLive! (last year&amp;#39;s event was online-only) where I captured this video of &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2008/09/11/running-soc-encounter-from-an-iphone.aspx"&gt;our Encounter software running though VPN/VNC on an iPhone&lt;/a&gt;.&amp;nbsp; I was thinking this morning: How are we going to top that?&amp;nbsp; What is going to be the thing I remember most at this year&amp;#39;s event?&lt;/p&gt;&lt;p&gt;Well, for starters I grabbed a seat near &lt;a href="http://www.cadence.com/Community/posts/rgoering.aspx"&gt;Richard Goering&lt;/a&gt;, &lt;a href="http://www.garysmitheda.com/"&gt;Gary Smith&lt;/a&gt;, and &lt;a href="http://deepchip.com/"&gt;John Cooley&lt;/a&gt; who -- collectively -- have probably written 90% of the content I&amp;#39;ve consumed while working in the semiconductor and EDA industries for the past 13 years.&amp;nbsp; It was great to see these guys in attendance along with other distinguished members of the press covering the event.&amp;nbsp; Although I&amp;#39;m a Cadence employee I share these observations from the perspective of a typical engineer.&amp;nbsp; I hope they&amp;#39;re useful in getting a feel for the tenor and topics discussed in the morning session at this year&amp;#39;s conference. &lt;/p&gt;&lt;p&gt;The morning &lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/agenda.aspx"&gt;agenda&lt;/a&gt; had our executives describing what we&amp;#39;re working on at Cadence at a high level, what our strategy is, and what makes Cadence special.&amp;nbsp; First, we heard from our President and &lt;b&gt;CEO Lip-Bu Tan&lt;/b&gt; who shared that design costs are greater than mask costs.&amp;nbsp; Automation, he suggested, is the way forward. Next, our Chief Marketing Officer &lt;b&gt;John Bruggeman&lt;/b&gt; (image below) delivered a focused and deliberate message about what &lt;a href="http://www.cadence.com/eda360/pages/default.aspx"&gt;EDA360&lt;/a&gt; is and why customers should care about it.&lt;/p&gt;&lt;p&gt;He went into detail about System Realization, SoC Realization, and Silicon Realization and shared an anecdote I found interesting.&amp;nbsp; He said that the average American television set has a lifespan of 15 years.&amp;nbsp; That business model is undesirable when contrasted with a typical smartphone business model where the consumer pays for the handset, pays for a service contract, and then pays for apps and content on top of it.&amp;nbsp; When John unboxed a television set he recently purchased he &lt;i&gt;booted &lt;/i&gt;it up (as opposed to &amp;quot;plugging it in&amp;quot; or &amp;quot;turning it on&amp;quot;) -- and was presented with an app-like user interace similar to the iPhone.&amp;nbsp; He used this as an example of how technology businesses need to fundamentally rethink the way they deliver their solutions to delight end users and then earn a revenue stream from them. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/bruggeman.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/bruggeman.jpg" align="middle" border="0" width="580" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;Chi-Ping Hsu&lt;/b&gt; is our Senior VP of R&amp;amp;D in charge of Silicon Realization.&amp;nbsp; Responsibility for the Encounter Digital Implementation System, my area of expertise, falls within his organization.&amp;nbsp; He talked about EDA360&amp;#39;s concepts of intent, abstraction, and convergence and how those concepts drive product direction.&amp;nbsp; He noted that design costs are greater than mask costs and suggested that automation is the way to reduce design costs.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Next up was &lt;b&gt;Dave Desharnais,&lt;/b&gt; Product Marketing Group Director, also in Silicon Realization.&amp;nbsp; For the engineers in the room, this was likely a highlight of the morning because he delivered a demo which showed a tangible example of how an EDA360 concept meaningfully touches backend design.&amp;nbsp; A key topic that came up throughout the day was Mixed Signal design.&amp;nbsp; He showed how a top-level analog designer could easily interact with digital IP in their design by analyzing pin assignment quality in Virtuoso and then moving over to Encounter to implement the details of the pin move while keeping the top and bottom levels in sync.&amp;nbsp; This is a simple task conceptually which can be complicated if analog and digital design teams and/or tools aren&amp;#39;t well aligned.&amp;nbsp; Here&amp;#39;s a photo of Dave in front of one of the biggest screens I&amp;#39;ve ever seen an EDA demo on: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dez.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dez.jpg" border="0" width="580" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So that took us to our first break.&amp;nbsp; Quite a session from the high-level to the mid-level, conceptually.&amp;nbsp; Check back later for some thoughts on the excellent customer presentation from &lt;b&gt;Ty Garibay&lt;/b&gt; from &lt;b&gt;Texas Instruments&lt;/b&gt; and a panel discussion on &lt;b&gt;EDA360 in the Real World&lt;/b&gt;.&amp;nbsp; I&amp;#39;ll also go into a couple of papers I co-presented with customers and talk about perhaps the best part about conferences like these -- the side discussions that occur with people with similar areas of experience and expertise. &lt;/p&gt;&lt;p&gt;If you&amp;#39;re looking for a nice meal while you&amp;#39;re out here I have a couple of suggestions.&amp;nbsp; One of my favorite restaurants in downtown San Jose is &lt;a href="http://www.ilfornaio.com/?page=138&amp;amp;restaurant_id=3156"&gt;Il Fornaio&lt;/a&gt; inside the nearby Sainte Claire Hotel.&amp;nbsp; The Pizza Fradiavola ($13.79) includes mozzarella, tomato sauce, Italian sausage, mushrooms, bell peppers, red onions, and spicy peperoncino oil.&amp;nbsp; Delicious.&amp;nbsp; Looking for a nice steak?&amp;nbsp; &lt;a href="http://www.thegrill.com/location677d.html"&gt;The Grill&lt;/a&gt; (attached to the Fairmont) serves up nice stuff with great service in a classy environment.&amp;nbsp; Pricey, but very good. &lt;/p&gt;&lt;p&gt;I&amp;#39;d love it if you &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribed to the Digital Implementation blogs&lt;/a&gt; (via E-mail or RSS) so we can continue the conversation.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Question of the Day:&amp;nbsp; Are you out here at the conference? What did you think of the morning session?&lt;/i&gt; &lt;/p&gt;&lt;p&gt;Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1202504" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive_2100_/default.aspx">CDNLive!</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDA360/default.aspx">EDA360</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SoC+realization/default.aspx">SoC realization</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/system+realization/default.aspx">system realization</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive/default.aspx">CDNLive</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/silicon+realization/default.aspx">silicon realization</category></item><item><title>Five-Minute Tutorial: ecoAddRepeater</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/10/19/five-minute-tutorial-ecoaddrepeater.aspx</link><pubDate>Tue, 19 Oct 2010 20:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1181913</guid><dc:creator>Kari</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1181913</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/10/19/five-minute-tutorial-ecoaddrepeater.aspx#comments</comments><description>&lt;p&gt;In today&amp;#39;s tutorial, we&amp;#39;re going to talk about the Encounter Digital Implementation (EDI) system command ecoAddRepeater. You may have come across this command and even used it before, or perhaps you used the GUI (Optimize-&amp;gt;Interactive ECO...) to add buffers or inverters, and didn&amp;#39;t know that this was the command doing the work. Either way, let&amp;#39;s review some reasons we&amp;#39;d want to use such a command.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fix a few remaining hold violations by adding a small buffer at the endpoint&lt;/li&gt;&lt;li&gt;Add delay to data paths you&amp;#39;re trying to skew-match&lt;/li&gt;&lt;li&gt;Buffer a path to fix an AC Limit violation&lt;/li&gt;&lt;li&gt;Buffer a path to reduce SI sensitivity&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are just a few cases; you can probably think of other times were you would use or have used this kind of functionality. We&amp;#39;ll use the case of fixing some remaining hold violations by adding a small buffer at the endpoint as an example.&lt;br /&gt;&lt;br /&gt;The command itself is pretty straightforward. For our hold-fix example, we&amp;#39;d use something like the following:&lt;/p&gt;&lt;blockquote&gt;ecoAddRepeater -term reg1/D -relativeDistToSink 0.1 -cell BUFX2&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;The -term and -cell arguments are fairly obvious: the pin you want the new buffer to drive, and the type of buffer to add, respectively. But what&amp;#39;s the -relativeDistToSink? That&amp;#39;s how close to the -term you want to buffer to be placed. The allowed range is between 0 and 1, with a small number (like 0.1 in the example) meaning that the buffer will be placed near the sink (the reg1/D pin here). If we want the buffer to be placed close to the driver of the net instead, we could specify something like 0.9 or 1.&lt;br /&gt;&lt;br /&gt;If you enter the above command, you&amp;#39;ll see that EDI takes a few minutes while a refinePlace is called and the timing is updated. Not a big deal if you&amp;#39;re only adding one buffer. But what if you&amp;#39;re adding 10 buffers, or 100 buffers, or more? You don&amp;#39;t want to sit there and wait for each one. This is where setEcoMode comes in. We can set a few things with setEcoMode so that refinePlace and a timing update are not run after each ecoAddRepeater command. This way, all of our ecoAddRepeater commands will run very quickly, and we&amp;#39;ll just do a refinePlace and update timing at the end. Here&amp;#39;s what you need to set:&lt;/p&gt;&lt;blockquote&gt;setEcoMode -refinePlace false -updateTiming false&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;The key is to remember to run refinePlace after you&amp;#39;re all done, otherwise your ecoRoute and timing will be a mess! We can also use a foreach loop to make it easier to script up a lot of ecoAddRepeater commands. We&amp;#39;ll use just 3 endpoints in this example, but you&amp;#39;ll get the idea. This is a very common ecoAddRepeater script that I use on almost every project:&lt;/p&gt;&lt;blockquote&gt;setEcoMode -refinePlace false -updateTiming false &lt;br /&gt;&lt;br /&gt;set endpoints { \&lt;br /&gt;&amp;quot;reg1/D&amp;quot; \&lt;br /&gt;&amp;quot;reg2/D&amp;quot; \&lt;br /&gt;&amp;quot;reg3/D&amp;quot; \&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;foreach endpoint $endpoints {&lt;br /&gt;&amp;nbsp; ecoAddRepeater -term $endpoint -relativeDistToSink 0.1 -cell BUFX2&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;refinePlace -preserveRouting&lt;br /&gt;&lt;br /&gt;setNanoRouteMode -routeWithEco true&lt;br /&gt;globalDetailRoute&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Notice the -preserveRouting flag for the refinePlace command. Usually, when you&amp;#39;re at the point of fixing those few last hold violations, you don&amp;#39;t want to disturb your design too much, so you don&amp;#39;t want the routing of the new nets created by adding repeaters to be ripped up. You want as much of it kept as possible, and ecoRoute will just fix up the wires it needs to in order to connect your new buffers.&lt;br /&gt;&lt;br /&gt;We&amp;#39;ve been using buffers in this example, but you can use ecoAddRepeater to add inverters too. Just specify your inverter with the -cell argument (-cell INVX2, for example), and ecoAddRepeater automatically knows to add two of them in series so that your logic polarity is preserved.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HOMEWORK:&lt;/b&gt; How would you use ecoAddRepeater to add a buffer right in the middle of a given net?&lt;i&gt; (Hint: Check out the EDI System Text Command Reference for all the options of ecoAddRepeater.)&lt;/i&gt; Feel free to post your answer in the comments.&lt;br /&gt;&lt;br /&gt;There is a lot more that you can do with this command, either at the command line or with the Interactive ECO GUI Form, but that&amp;#39;s all the time we have for this five-minute tutorial. I encourage you to investigate more on your own. This one simple command can lead to some creative solutions to unique problems. If you&amp;#39;ve used ecoAddRepeater to do something interesting, let us know about it!&lt;br /&gt;&lt;br /&gt;Still haven&amp;#39;t subscribed to the Digital Implementation Forum Blogs? What are you waiting for? Do it &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1181913" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute/default.aspx">five minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/ecoAddRepeater/default.aspx">ecoAddRepeater</category></item><item><title>3D-IC TSV Realization: The Race Has Begun!</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/10/12/3d-ic-tsv-realization-the-race-has-begun.aspx</link><pubDate>Tue, 12 Oct 2010 21:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1179587</guid><dc:creator>samtabansal</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1179587</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/10/12/3d-ic-tsv-realization-the-race-has-begun.aspx#comments</comments><description>&lt;p&gt;3D IC discussions are creating quite a buzz these days. No conference is complete without a mention of 3D ICs, and there are reasons behind that. 3D ICs using through-silicon vias (TSVs) help you meet challenging performance and power targets to serve the growing demands of the networking, graphics, wireless, and computing industries. And don&amp;#39;t forget consumer needs for ultra light and thin devices!&amp;nbsp; &lt;/p&gt;&lt;p&gt;If you have anything to do with memories or with GPUs, or with designing logic to interact with the analog and RF components for the markets I mentioned above, you probably know what I am talking about. If you have not looked at 3D-IC TSV technology yet, it&amp;#39;s a good time to do so now. &lt;/p&gt;&lt;p&gt;&lt;b&gt;What&amp;#39;s Needed for 3D IC Realization&lt;/b&gt;&lt;/p&gt;&lt;p&gt;There are a few technology requirements for 3D IC Silicon Realization:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;An integrated digital, analog and packaging environment&lt;/u&gt;&lt;/b&gt;: This serves as a foundation to enable heterogonous integration of various components like analog, RF, logic, and memories, which may be at different process nodes, for 3D IC stacks. Any solution is incomplete if it can&amp;#39;t marry these platforms together.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;u&gt;3D floorplanning&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt; and implementation&lt;/u&gt;&lt;/b&gt;: This environment helps with critical tasks such as placing microbumps for TSVs, optimizing the stack for timing and thermal management, routing the signal and power lines across multiple die, and placing landing pads.&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Thermal and IR drop analysis:&lt;/u&gt;&lt;/b&gt; Signal integrity, IR drop, and thermal analysis and management become very critical on stacked chips. One can only imagine how easy it will be to melt a chip if memory and logic are not stacked properly. Heating and cooling are important considerations.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;u&gt;Design for Test:&lt;/u&gt;&lt;/b&gt; During the 3D Panel at the recent &lt;a href="http://www.lsi.com/AI-conference/"&gt;LSI Innovation Acceleration conference&lt;/a&gt;, 3D design for test (DFT) was agreed upon as a challenge in this space. How will we test the entire system and diagnose potential problems? Who will own the stack and yield issues - foundries or OSATs? &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;u&gt;System level exploration:&lt;/u&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;This is certainly important once we start planning in 3D, but I think there are many other problems for 3D community to sort out before this.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I began studying this technology years ago wondering if it would ever become real. I remember when a colleague of mine shared an article that he had written 22 years ago that had a mention of 3D ICs. But now I can see that it &lt;i&gt;is&lt;/i&gt; real because the need is real and is urgent. Moore&amp;#39;s Law is not going anywhere anymore, &amp;quot;more&amp;quot; needs to be done to deal with the CMOS scaling trend, and 3D IC is that &amp;quot;more&amp;quot; right now. &lt;/p&gt;&lt;p&gt;We are seeing a lot of traction at some of our key customers who are now taping out real production chips. 3D IC technology has its share of open challenges, like any other disruptive technology in its early stages, but the performance and power benefits are so huge that it is certainly serving as a differentiating strategy for the few who have dared to walk that path. &lt;/p&gt;&lt;p&gt;So unarguably the race is on. &lt;/p&gt;&lt;p&gt;Are you in it yet? Let me know; let&amp;#39;s talk about it. Please let us know if you would like to see the technology in action.&lt;/p&gt;&lt;p&gt;Samta Bansal&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Recent Cadence Community blogs on 3D ICs:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Samta Bansal: &lt;u&gt;&lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/03/29/My-DATE-With-3DIC-Technology.aspx"&gt;My DATE With 3DIC Technology&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Rahul Deokar: &lt;u&gt;&lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/04/16/edp-symposium-uncovers-an-inconvenient-truth-with-a-shot-of-3d.aspx"&gt;EDP Symposium Discovers an Inconvenient Truth with a Shot of 3D&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Richard Goering: &lt;u&gt;&lt;a href="http://www.cadence.com/Community/blogs/ii/archive/2010/04/19/eda-workshop-a-reality-check-on-3d-ics.aspx"&gt;EDA Workshop: A Reality Check on 3D ICs&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Rahul Deokar: &lt;u&gt;&lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/06/28/dac-2010-a-coming-out-party-for-3d-ic-design.aspx"&gt;DAC 2010 - &lt;/a&gt;&lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/06/28/dac-2010-a-coming-out-party-for-3d-ic-design.aspx"&gt;A &amp;quot;Coming Out&amp;quot; Party for 3D-IC Design&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Richard Goering: &lt;a href="http://www.cadence.com/Community/blogs/ii/archive/2010/09/13/3d-ic-tsv-update-no-technology-roadblocks-but-cost-management-is-needed.aspx?postID=1178616"&gt;3D-IC TSV Update: No Technology Roadblocks, But Cost Management is Needed&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Recent Webinar on 3D IC Topics:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/cadence/events/Pages/event.aspx?eventid=386"&gt;Should You Design Your Next System With 3D TSVs? Hear from GLOBALFOUNDRIES and Cadence&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1179587" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning/default.aspx">Floorplanning</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3DIC/default.aspx">3DIC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3D/default.aspx">3D</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TSV/default.aspx">TSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/thermal/default.aspx">thermal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/test/default.aspx">test</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/packaging/default.aspx">packaging</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3D-IC/default.aspx">3D-IC</category></item><item><title>Guest Blog: Using dbTransform to Translate Geometric Coordinates in Encounter</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/28/using-dbtransform-to-translate-geometric-coordinates-in-encounter.aspx</link><pubDate>Tue, 28 Sep 2010 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1179194</guid><dc:creator>BobD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1179194</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/28/using-dbtransform-to-translate-geometric-coordinates-in-encounter.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;This is a guest post from JasonG at Avago. I hope you enjoy this useful piece he&amp;#39;s contributed on using the relative-new dbTransform Encounter command.&amp;nbsp; If you&amp;#39;d like to write a guest post we&amp;#39;d love to have it.&amp;nbsp; Please drop me an E-mail if you&amp;#39;re interested in contributing: &lt;a href="mailto:dwyer@cadence.com"&gt;dwyer@cadence.com&lt;/a&gt; -Bob Dwyer&lt;/i&gt; &lt;/p&gt;&lt;p&gt;Hello fellow digital implementation Tcl developers!&amp;nbsp; Bob asked if I&amp;#39;d be interested in contributing to a &amp;quot;guest blog&amp;quot; on a subject of my choosing.&lt;br /&gt;&lt;br /&gt;First, a quick background about me. I am a senior design engineer for &lt;a href="http://www.avagotech.com/pages/home/"&gt;Avago Technologies&lt;/a&gt; where I do a lot of floorplanning and floorplan-related script development.&amp;nbsp; You may have seen me a couple years ago at CDNLive! 2008 where I gave a presentation on all the extensions I&amp;#39;ve written for SoC Encounter during my career.&amp;nbsp; When Bob asked if I was interested in guest blogging, I thought what better topic than a db-command that I&amp;#39;m anxious to integrate into my Tcl scripts.&lt;br /&gt;&lt;br /&gt;Some commands that always pop up high on my list of time-consuming procedures are my Tcl-implemented transformation commands.&amp;nbsp; Often times my higher-level scripts require that I transform back and forth between &amp;quot;cell&amp;quot; coordinates and &amp;quot;instance&amp;quot; coordinates.&amp;nbsp; For instance, say you are adding a routing blockage to a partition clone and you want to ensure it also gets added to the master in the corresponding location.&amp;nbsp; One could transform the clone instance&amp;#39;s coordinate to the clone&amp;#39;s cell reference coordinate and then transform it from the cell reference to the master.&amp;nbsp; Easy, right?&amp;nbsp; Well, when you think about all the orientations that a clone could have, the computations can be pretty time consuming.&amp;nbsp; Thankfully, the Cadence Encounter Digital Implementation system platform provides a partial solution to this problem; dbTransform.&lt;br /&gt;&lt;br /&gt;The usage, as of EDI9.1USR1:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,courier;"&gt;Usage: dbTransform [-help] [-d] -localPt &amp;lt;list&amp;gt; {-inst &amp;lt;instPtr&amp;gt; | {-cell &amp;lt;cellPtr&amp;gt; -orient &amp;lt;orientEnum&amp;gt; -pt {x y}}}&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Prints out the command usage&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Specifies if points are in dbUnit: default is um&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # (bool, optional)&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-inst &amp;lt;instPtr&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # instance object (db object, required)&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-cell &amp;lt;cellPtr&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # cell object (db object, optional)&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-orient {R0|R90|R180|R270|MX|MX90|MY|MY90|dbcR0|dbcR90|dbcR180|dbcR270|dbcMX|dbcMX90|dbcMY|dbcMY90}&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; # orientation (enum, optional)&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-pt {x y}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # location (point, optional)&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;-localPt &amp;lt;list&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # a pt {x y}, rect {xl yl xu yu} or list of pts and/or&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; # rects {{x1 y1} {x2 y2} {xl yl xu yu} ...} inside cell&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; # (string, required)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is an example that shows how one would go about finding the shapes for a specific pin on a leaf cell.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,courier;"&gt;### Find the metal shapes associated with the &amp;quot;CK&amp;quot; pin of a cell.&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;set instPtr [dbGetInstByName i_a/i2]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;set termPtr [dbGetTermByName $instPtr CK]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;### The pin shapes are stored on the &amp;quot;cell fterm&amp;quot; reference.&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;dbForEachFTermLefPort [dbTermFTerm $termPtr] lefPortPtr {&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp; dbForEachLefPortLayerShape $lefPortPtr lShapePtr {&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set lsLyr [dbLayerWireId [dbLayerShapeLayer $lShapePtr]]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbForEachLayerShapeShape $lShapePtr lShapeSPtr {&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set lsBox [dbShapeRect $lShapeSPtr]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ### Use &amp;#39;dbTransform&amp;#39; to take this &amp;quot;local point&amp;quot; and translate into&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ### the instance&amp;#39;s placement.&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pinShape [join [dbTransform -d -localPt $lsBox -inst $instPtr]]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ### Fix the shape to be a legal &amp;quot;rect&amp;quot; (i.e. urx&amp;gt;llx and ury&amp;gt;lly).&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach {llx lly urx ury} $pinShape {&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {$llx &amp;gt; $urx} { set tmp $llx; set llx $urx; set urx $tmp; }&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {$lly &amp;gt; $ury} { set tmp $lly; set lly $ury; set ury $tmp; }&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pinShape [list $llx $lly $urx $ury]&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Puts &amp;quot;Pin on layer $lsLyr has rectangle \{$pinShape\}&amp;quot;&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;}&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;### The resulting coordinates, in DBU, are:&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;Pin on layer 1 has rectangle {2077950 5172740 2078370 5172920}&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;Pin on layer 1 has rectangle {2077950 5172270 2078090 5172740}&lt;/span&gt;&lt;br style="font-family:courier new,courier;" /&gt;&lt;span style="font-family:courier new,courier;"&gt;Pin on layer 1 has rectangle {2078230 5172920 2078370 5173170}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The picture below shows, in solid blue lines, the resulting shapes.&amp;nbsp; As you can see, they exactly correspond with the pin shapes for the &amp;quot;CK&amp;quot; pin on this instance.&amp;nbsp; Note that this instance just happened to be placed in the MY orient and, thus, the ury and lly were swapped.&lt;/p&gt;&lt;p&gt;Unfortunately, as dbTransform is currently implemented, there is no way to transform the other way.&amp;nbsp; In other words, you cannot transform coordinates that are in terms of an instance to a cell.&amp;nbsp; However, I hear this will be available in the next version and I cannot wait to test it out.&amp;nbsp; Also, dbTransform only supports objects of type &amp;#39;dbcObjInst&amp;#39; and &amp;#39;dbcObjBump&amp;#39;.&amp;nbsp; For my scripting needs, I also need support for &amp;#39;dbcObjHInst&amp;#39;.&amp;nbsp; Hopefully this, too, will be available soon.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dbTransform2.jpg"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/Bob_Dwyer/dbTransform2.jpg" style="width:500px;height:447px;" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Well, that&amp;#39;s it for me.&amp;nbsp; I hope you enjoyed this little tutorial.&amp;nbsp; I hope to give more in the future (I have a couple ideas for future posts but they&amp;#39;ll have to wait for the offical EDI10.1 release).&amp;nbsp; I&amp;#39;ll be giving a presentation on the new EDI GUI API available in EDI9.1 at this year&amp;#39;s &lt;a href="https://www.cadence.com:443/cdnlive/na/2010/pages/agenda.aspx"&gt;CDNLive! Silicon Valley&lt;/a&gt; conference Oct. 28.&amp;nbsp; If you are in attendance, please drop by and say &amp;#39;Hi&amp;#39;.&lt;br /&gt;&lt;br /&gt;JasonG&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1179194" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/db+access/default.aspx">db access</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbTransform/default.aspx">dbTransform</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Avago/default.aspx">Avago</category></item><item><title>Encounter Puzzler #2 Solution: Finding Registers Beneath a Hierarchy</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/24/encounter-puzzler-2-solution-finding-registers-beneath-a-hierarchy.aspx</link><pubDate>Fri, 24 Sep 2010 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1179027</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1179027</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/24/encounter-puzzler-2-solution-finding-registers-beneath-a-hierarchy.aspx#comments</comments><description>&lt;p&gt;Thanks to everyone who participated in &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/20/encounter-puzzler-2-finding-registers-beneath-a-hierarchy.aspx"&gt;this week&amp;#39;s Encounter Puzzer&lt;/a&gt;.&amp;nbsp; If you didn&amp;#39;t catch it earlier, have a look now before reading the solution discussion below.&lt;/p&gt;&lt;p&gt;I thought this puzzler was great because it&amp;#39;s such a small and simple example, yet it leads to so many useful fundamental components of database access.&amp;nbsp; The first two comments were especially appreciated because it pointed out two of the primary ways to access data in Encounter: with dbGet and with Advanced Timing TCL commands (let&amp;#39;s call them CTE-TCL commands for &amp;quot;Common Timing Engine-Tool Command Language&amp;quot; shall we?).&lt;/p&gt;&lt;p&gt;Coincidentally, I had a chance to visit was the original requestor of this challenge just yesterday.&amp;nbsp; I sent him the solution via E-mail and it wasn&amp;#39;t working!&amp;nbsp; More on why in the discussion below... &lt;/p&gt;&lt;p&gt;&lt;b&gt;@Edwin&lt;/b&gt; suggests a solution that was very nearly what I proposed to the customer:&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;deselectAll&lt;br /&gt;foreach inst [dbGet -p2 [dbGetHInstByName i_a].allTreeInsts.cell.name DFF*] {&lt;br /&gt;&amp;nbsp; dbSelectObj $inst&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;What I like about this solution is that it discovers the instances beneath the hierarchical instance i_a programatically rather than relying on instance name.&amp;nbsp; The \i_a/i0 instance I added at the top-level of the design is a bit contrived, but it does point out a risk in assuming hierarchy from instance name.&amp;nbsp; In the spirit of writing generic code that can work across a number of designs it is good practice to find the instances that are explicity stored beneath the hierarchical instance and using dbGet to traverse from hierarchical instance to &amp;quot;allTreeInsts&amp;quot; is a great way to do that.&amp;nbsp; But it raises a complication...&lt;/p&gt;&lt;p&gt;Another point to mention in this example is keying off a cell name of &amp;quot;DFF*&amp;quot;.&amp;nbsp; If the timing libraries are loaded, the script could key off the &amp;quot;.isSequential&amp;quot; cell marking as follows:&lt;/p&gt;&lt;p&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;foreach inst [dbGet -p2 [dbGetHInstByName i_a].allTreeInsts.cell.&lt;b&gt;isSequential 1&lt;/b&gt;] {&lt;br /&gt;&amp;nbsp; dbSelectObj $inst&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Remember how I said the script I sent the customer wasn&amp;#39;t working?&amp;nbsp; It turns out timing libraries weren&amp;#39;t loaded so the isSequential marking was populated.&amp;nbsp; Turns out selecting by a sequential cell master name like Edwin suggested was a better approach for the situation.&lt;/p&gt;&lt;p&gt;Another point to mention is that as of 9.1.USR1 dbSelectObj works on a list so the code could be compacted further into:&lt;/p&gt;&lt;p&gt;&lt;b&gt;dbSelectObj [dbGet -p2 [dbGetHInstByName i_a].allTreeInsts.cell.isSequential 1]&lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/blogs/di/archive/2009/12/16/selecting-pointers-with-dbget-and-dbselectobj.aspx"&gt;Further reading on selecting objects by pointer with dbGet in this blog entry.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;By the way, it&amp;#39;s worth mentioning that &lt;a href="http://www.google.com/search?q=dbselectobj+cadence+encounter"&gt;a Google search for &amp;quot;dbSelectObj cadence encounter&amp;quot;&lt;/a&gt; would retrieve this blog entry as would &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:SearchResult;producttypes=MY;documenttypes=ALL;searchText=dbSelectObj"&gt;a search on support.cadence.com for &amp;quot;dbSelectObj&amp;quot;&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;One other thing to mention relative to the dbGet solution.&amp;nbsp; When I run the suggested code I get the following message:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;**WARN: (ENCDBTCL-204): &amp;#39;cell&amp;#39; is not a recognized object/attribute for object type &amp;#39;hInst&amp;#39;. For help use &amp;#39;dbGet &amp;lt;object&amp;gt;.?h&amp;#39; to get list of all supported (settable/unsettable) objects and attributes.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;What&amp;#39;s happening there?&amp;nbsp; Well, the warning can be ignored but .allTreeInsts returns what we call a &amp;quot;heterogeneous&amp;quot; list which includes all of the instances -and- hierarchical instances beneath i_a.&amp;nbsp; This list includes the hierarchical instance i_a/i_a_sub and when we try to traverse from i_a/i_a_sub to its &amp;quot;cell&amp;quot; we get the warning message because &amp;quot;cell&amp;quot; is not a valid object for hierarchical instances.&amp;nbsp; We could filter out the objects that aren&amp;#39;t instances with the following addition in bold: &lt;/p&gt;&lt;p&gt;dbSelectObj [dbGet -p2 [dbGet -p [dbGetHInstByName i_a].allTreeInsts.&lt;b&gt;objType inst&lt;/b&gt;].cell.isSequential 1] &lt;/p&gt;&lt;p&gt;Note: We&amp;#39;re considering exposing heterogeneous and non-heterogeneous lists in a number of areas to make this simpler in a future release.&lt;/p&gt;&lt;p&gt;&lt;b&gt;@Vishnu&lt;/b&gt; used CTE-TCL: &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;set x [get_cells -hier -filter &amp;quot;hierarchical_name =~ i_a/*  &amp;amp;&amp;amp; is_sequential == true&amp;quot;]&lt;br /&gt;foreach_in_collection y $x {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  selectInst [get_object_name $y]&lt;/span&gt;&lt;/span&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;There&amp;#39;s a lot of extremely useful functionality demonstrated in this example.&amp;nbsp; The complex filtering capabilities of get_cells, keying off the &amp;quot;is_sequential&amp;quot; attribute, using foreach_in_collection to iterate through the objects... Great stuff.&amp;nbsp; One tiny tiny nuance that was problematic with the example was filtering out the top-level \i_a/i0 instance.&lt;/p&gt;&lt;p&gt;By default, Encounter hides leading backslashes from instance names, so the instance that&amp;#39;s called \i_a/i0 in the Verilog netlist is identified within Encounter as simply &amp;quot;i_a/i0&amp;quot;.&amp;nbsp; Consequently, the script would still catch that instance undesireably as being beneath i_a.&amp;nbsp; We can overcome this however with a call to:&lt;/p&gt;&lt;p&gt;encounter 1&amp;gt; set dbgIsBackslashInNamesHidden 0 &lt;/p&gt;&lt;p&gt;Once this variable is set, the leading backslash is no longer hidden and the code would work as desired: \i_a/i0 would be filtered out because it contains a leading backslash and therefore doesn&amp;#39;t match the &amp;quot;i_a/*&amp;quot; filter expression.&amp;nbsp; Normally, variables like this are visible from Options-&amp;gt;Set Global Variable...&amp;nbsp; However, this one isn&amp;#39;t public yet.&amp;nbsp; I&amp;#39;m working with our developers on that now.&amp;nbsp; Kind of a wacky side-issue but I hope it illustrates some risks associated with keying off names vs. keying off the hierarchical structure directly.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Laurent&lt;/b&gt; proposed an interesting area-based solution.&amp;nbsp; I hadn&amp;#39;t thought of that myself but it could certainly be useful in this and other scenarios when seeking to find objects by type in a specific area of the design:&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;set area [list 600 600 1200 1200]&lt;br /&gt;foreach i [dbGet [dbQueryInstInBox \&lt;br /&gt;&amp;nbsp; [dbMicronsToDBU [dbBoxLLX $area]] \&lt;br /&gt;&amp;nbsp; [dbMicronsToDBU [dbBoxLLY $area]] \&lt;br /&gt;&amp;nbsp; [dbMicronsToDBU [dbBoxURX $area]] \&lt;/span&gt;&lt;/span&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;&lt;br /&gt;&amp;nbsp; [dbMicronsToDBU [dbBoxURY $area]]].cell.isSequential 1 -p2] {&lt;br /&gt;&amp;nbsp; dbSelectObj $i&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;An even easier way to go about this is with the &lt;b&gt;dbQuery&lt;/b&gt; command.&amp;nbsp; I haven&amp;#39;t talked about it yet since it&amp;#39;s not fully documented until 9.1.USR3 but check back in a month or so for an update on that.&amp;nbsp; It can be really powerful and simple to use. &lt;/p&gt;&lt;p&gt;Another way to solve this puzzler is by using what &lt;b&gt;JasonG&lt;/b&gt; referred to as &amp;quot;old school&amp;quot; commands.&amp;nbsp; Here we&amp;#39;re talking about commands like &amp;quot;dbForEachCellInst&amp;quot; and old school is actually a good characterization of them since they&amp;#39;ve been around since Encounter&amp;#39;s inception.&amp;nbsp; I sometimes refer to these as &amp;quot;FE-TCL&amp;quot; commands.&amp;nbsp; They&amp;#39;re sometimes criticized as being cryptical and confusing, but they can often be fast and powerful: &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span id="Cadence_CS_BlogDetail_CommentsBlock"&gt;&lt;span class="Cadence_CS_BlogDetail_CommentsBody body2"&gt;proc selectHierRegisters {hinstName} {&lt;br /&gt;&amp;nbsp; dbForEachCellVInst [dbHInstCell $hinstName] viPtr {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {[dbIsCellHier [dbVInstCell $viPtr]]} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectHierRegisters $hinstName/[dbVInstName $viPtr]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elseif {[dbIsCellSequential [dbVInstCell $viPtr]]} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectInst $hinstName/[dbVInstName $viPtr]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;/p&gt;&lt;p&gt;Ideally, we can do everything you can do with FE-TCL with dbGet but there are some cases where I find it more comfortable to fall back on FE-TCL commands.&amp;nbsp; This just might be one of those cases.&amp;nbsp; Here&amp;#39;s why...&lt;/p&gt;&lt;p&gt;FE-TCL provides one very useful command for this scenario: &lt;b&gt;dbForEachHInstTreeInst&lt;/b&gt;.&amp;nbsp; It&amp;#39;s an object-type specific iterator that goes through each instance beneath a given hierarchical instance.&amp;nbsp; Perfect!&amp;nbsp; There&amp;#39;s also a &amp;quot;dbForEachHInstTreeHinst&amp;quot; command that iterates throughall of the hierarchical instances beneath a hierarchical instance.&amp;nbsp; Here&amp;#39;s an example: &lt;/p&gt;&lt;p&gt;&lt;b&gt;proc userSelectHierRegisters {hinstName} {&lt;br /&gt;&amp;nbsp; dbForEachHInstTreeInst [dbGetHInstByName $hinstName] inst {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {[dbIsCellSequential [dbInstCell $inst]]} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbSelectObj $inst&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;An interesting side-note: We&amp;#39;ve been discussing the idea of splitting out more homogeneous lists in dbGet to make code more compact.&amp;nbsp; In this case, that would mean a list of just the instances beneath the hierarchical instance.&amp;nbsp; Stay tuned for more on that in a future release. &lt;/p&gt;&lt;p&gt;As you can see there&amp;#39;s more than one way to solve this solution for sure.&amp;nbsp; I&amp;#39;m pleased we covered it from so many angles -- the general techniques described here can be applied to other scripting tasks in the tool.&amp;nbsp; Thanks again for the participation and discussion.&amp;nbsp; If you have any thoughts you&amp;#39;d like to add we&amp;#39;d love to hear from you.&amp;nbsp; Check back soon for more puzzlers and updates.&amp;nbsp; You&amp;#39;d be my Best Friend Forever if you &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribed to E-mail updates to our Digital Implementation blogs&lt;/a&gt;.&amp;nbsp; Never more than one E-mail a day and hopefully useful and interesting content. &lt;/p&gt;&lt;p&gt;Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1179027" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category></item><item><title>Five-Minute Tutorial: Creating a NONDEFAULT Rule</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/22/five-minute-tutorial-creating-a-nondefault-rule.aspx</link><pubDate>Wed, 22 Sep 2010 18:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178941</guid><dc:creator>Kari</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178941</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/22/five-minute-tutorial-creating-a-nondefault-rule.aspx#comments</comments><description>&lt;p&gt;Ah, the NONDEFAULT rule. This is a routing rule that is, well, not the default! It usually consists of double-wide or triple-wide metal, and at least double-wide spacing, but it can be whatever you like as long as it follows DRC rules (no violating the min or max metal widths, for example). NONDEFAULT rules are typically used to route clock nets or other sensitive nets. If you are very lucky, your tech LEF came with some NONDEFAULT rules already defined. But this is not usually the case. Those of us who have been around a while always dreaded the creation of NONDEFAULT rules -- it&amp;#39;s not difficult, but it is tedious to write out a large tech LEF section by hand.&lt;br /&gt;&lt;br /&gt;Well, for some time now, EDI has had the ability to create NONDEFAULT rules for us! It&amp;#39;s easy and fast. Here&amp;#39;s how to do it:&lt;br /&gt;&lt;br /&gt;In the EDI 9.1 Menu, go to Edit -&amp;gt; Create Non Default Rule. You&amp;#39;ll see the following form:&lt;/p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/nonDefaultForm.png"&gt;&lt;img border="0" src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Kari_Summers/nonDefaultForm.png" alt="" /&gt;&lt;/a&gt;&lt;p&gt;&lt;br /&gt;Name your NONDEFAULT rule something descriptive, and then choose an existing rule to start from. In most cases, all you&amp;#39;ll have so far is the Default rule. That&amp;#39;s a great starting point. With the default rule width and spacing numbers right in front of you, it&amp;#39;s easy to enter values that are twice or three times as large for a double- or triple-wide rule.&lt;br /&gt;&lt;br /&gt;Now, the vias: the vias from the default rule (or whatever rule you chose as your starting point) will be listed. In most cases, it&amp;#39;s fine to just use the default rule vias.&lt;br /&gt;&lt;br /&gt;Finally, decide if you want the NONDEFAULT rule to follow Hard Spacing. This means that violations of the NONDEFAULT rule spacing are considered and flagged as true violations. Without Hard Spacing turned on, the NONDEFAULT spacing is followed as much as possible, but if it needs to be broken to complete the route or follow other routing/spacing rules, then it&amp;#39;s not considered a violation.&lt;br /&gt;&lt;br /&gt;When you click OK or Apply, the rule is created and exists in your design database. But here is the crucial part: we want to add this NONDEFAULT rule to our tech LEF. Let&amp;#39;s say we named our NONDEFAULT rule &amp;quot;DblWide&amp;quot; and we&amp;#39;ll output it to a temporary file called tmp.lef. At the EDI prompt, type:&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;exportNdr DblWide -lef tmp.lef&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Now, you can cut and paste the NONDEFAULT portion of tmp.lef into your tech LEF. (The section you need starts with &amp;quot;NONDEFAULTRULE DblWide&amp;quot; and ends with &amp;quot;END DblWide&amp;quot; in this example.)&lt;br /&gt;&lt;br /&gt;Much easier than typing the whole thing in by hand!&lt;/p&gt;&lt;p&gt;Would you like to be notified when the next Five-Minute Tutorial comes out? &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;Subscribe to the Digital Implementation blog!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178941" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute/default.aspx">five minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five-minute/default.aspx">five-minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/nondefault+rule/default.aspx">nondefault rule</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/nondefault/default.aspx">nondefault</category></item><item><title>Encounter Puzzler #2: Finding Registers Beneath a Hierarchy</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/20/encounter-puzzler-2-finding-registers-beneath-a-hierarchy.aspx</link><pubDate>Mon, 20 Sep 2010 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178835</guid><dc:creator>BobD</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178835</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/20/encounter-puzzler-2-finding-registers-beneath-a-hierarchy.aspx#comments</comments><description>&lt;p&gt;I hope you enjoyed our first Encounter Puzzler: &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/10/encounter-puzzler-solution-where-did-my-fences-go.aspx"&gt;Where Did My Fences Go?&lt;/a&gt;&amp;nbsp;
 The source of inspiration for this week&amp;#39;s puzzler came from an internal
 alias that we have here at Cadence where folks ask and answer questions
 about Encounter.&amp;nbsp; An applications engineer received a request from a 
customer and wanted to know: &lt;span style="font-weight:bold;font-style:italic;"&gt;How can I select all of the registers beneath a given logical hierarchy?&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/puzzler2.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/puzzler2.png" style="width:450px;height:450px;" border="0" alt="" /&gt;&lt;/a&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The image above shows the scenario.&amp;nbsp; To clarify exactly what we&amp;#39;re talking about, here&amp;#39;s a sample Verilog netlist: &lt;/p&gt;&lt;p&gt;module testcase();&lt;br /&gt;&amp;nbsp;DFFX1 \i_a/i0 ();&lt;br /&gt;&amp;nbsp;BUFX1 i1();&lt;br /&gt;&amp;nbsp;a i_a();&lt;br /&gt;&amp;nbsp;b i_b();&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module a();&lt;br /&gt;&amp;nbsp;a_sub i_a_sub();&lt;br /&gt;&amp;nbsp;DFFX1 i2();&lt;br /&gt;&amp;nbsp;BUFX1 i3();&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module a_sub();&lt;br /&gt;&amp;nbsp;DFFX1 i0();&lt;br /&gt;&amp;nbsp;BUFX1 i1();&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module b();&lt;br /&gt;&amp;nbsp;DFFX1 i0();&lt;br /&gt;&amp;nbsp;BUFX1 i1();&lt;br /&gt;endmodule&amp;nbsp;&lt;/p&gt;&lt;p&gt;Given this netlist, we&amp;#39;d like to select all of the registers beneath the hierarchical instance &lt;span style="font-weight:bold;"&gt;i_a&lt;/span&gt;.&amp;nbsp; In this case, the script should therefore select &lt;span style="font-weight:bold;"&gt;i_a/i2&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;i_a/i_a_sub/i0&lt;/span&gt;.&lt;/p&gt;&lt;p style="font-weight:bold;"&gt;Tips:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The first thing that comes to mind is using &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=fetxtcmdref/fetxtcmdref9.1.2/basic_cmds.html#dbGet"&gt;dbGet&lt;/a&gt;, but there are a number of ways this could be done including &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=fetxtcmdref/fetxtcmdref9.1.2/tclscriptingT.html#1035250"&gt;Advanced Timing TCL Scripting Commands&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;In this context &amp;quot;registers&amp;quot; are just another word for sequential elements.&amp;nbsp; They&amp;#39;re marked as such in the .lib and can be keyed off in the db.&lt;/li&gt;&lt;li&gt;Consider using &lt;span style="font-weight:bold;"&gt;dbSelectObj&lt;/span&gt; -or- &lt;span style="font-weight:bold;"&gt;selectInst&lt;/span&gt; to select the instances.&lt;/li&gt;&lt;li&gt;Beware of the &lt;span style="font-weight:bold;"&gt;\i_a/i0&lt;/span&gt; instance at the top level of the design -- it is &lt;span style="font-style:italic;"&gt;not&lt;/span&gt; beneath the hierarchical instance i_a. I threw that in there to keep things interesting.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is a little more open-ended than our last puzzler.&amp;nbsp; Leave a comment below with your solution -- I&amp;#39;ll look forward to seeing what you come up with.&amp;nbsp; I&amp;#39;ll post some solutions and further discussion this coming Friday.&lt;/p&gt;&lt;p&gt;&lt;span id="anormal_12" class="Cadence_CS_BlogDetail_BlogText"&gt;Check back on Friday for the answer.&amp;nbsp; Or better yet &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribe&lt;/a&gt; to the Digital Implementation blogs to get new content delivered to your inbox or favorite feed reader.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178835" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dbGet/default.aspx">dbGet</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category></item><item><title>Five-Minute Tutorial: Encounter Command Line Help</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/15/five-minute-tutorial-command-line-help.aspx</link><pubDate>Wed, 15 Sep 2010 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178748</guid><dc:creator>Kari</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178748</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/15/five-minute-tutorial-command-line-help.aspx#comments</comments><description>&lt;p&gt;Hi everyone, and welcome to the first Five-Minute Tutorial! I have several things planned for this series. Today we&amp;#39;re going to look at getting help on the command line in the Encounter Digital Implementation (EDI) system.&lt;br /&gt;&lt;br /&gt;Sometimes in the middle of an EDI session, you want to run a command but you can&amp;#39;t remember the exact name, or the exact options. Sometimes you don&amp;#39;t even know if a command exists to do what you want, but you&amp;#39;d like to find out if it does. Obviously, you can always look at the EDI System Text Command Reference. (And I recommend doing so to learn all about the various EDI commands. This is a manual that I use every single day!) But sometimes you just want a quick reference at your fingertips. This is available in the form of command-line help.&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s say you want to report the transition violations in your design. You know there&amp;#39;s a command to do that, but you don&amp;#39;t recall if it&amp;#39;s report_tran_violation, reportTranViolation, or something else similar. At the EDI command prompt, you can type:&lt;/p&gt;&lt;blockquote&gt;encounter 31&amp;gt; help report_t*&lt;br /&gt;Multiple commands found:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; report_timing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; report_timing_derate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; report_timing_format&lt;br /&gt;&lt;br /&gt;encounter 32&amp;gt; help reportT*&lt;br /&gt;Multiple commands found:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportTimingDerate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportTimingLib&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportTranViolation&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ah, there it is! But what are the options for this command? Now that we know the exact command name, we can do this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;encounter 33&amp;gt; help reportTranViolation&lt;br /&gt;Usage: reportTranViolation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportTranViolation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-all | -noGlobalNets]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-selNetFile &amp;lt;selNetFileName&amp;gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-excNetFile &amp;lt;excNetFileName&amp;gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-useDrcMargin]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -outfile&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileName&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Great! If we want more detailed info, we can then go to the Text Command Reference, but there is yet another form of help we can get right from the command line.&lt;br /&gt;&lt;br /&gt;HOMEWORK: See what happens when you type &amp;quot;man reportTranViolation&amp;quot;.&lt;br /&gt;&lt;br /&gt;Something to be aware of: In Encounter versions 8.1 and earlier, the wildcard character * in the examples above was not required.&lt;br /&gt;&lt;br /&gt;Another way to find command names is by using the tab key:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;encounter 36&amp;gt; legalize &amp;lt;press the tab key&amp;gt;&lt;br /&gt;legalizeFPlan&amp;nbsp; legalizePin&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You could also just type the partial command name and get a message which lists the possibilities:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;encounter 38&amp;gt; legalize&lt;br /&gt;ambiguous command name &amp;quot;legalize&amp;quot;: legalizeFPlan legalizePin&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;BE CAREFUL with this one though - if what you enter is an actual command name, you will inadvertently run that command!&lt;br /&gt;&lt;br /&gt;I hope you&amp;#39;ve found this five-minute tutorial useful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Want to make sure you don&amp;#39;t miss the next Five-Minute Tutorial? &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di" target="_blank"&gt;Subscribe to the Digital Implementation blog!&lt;/a&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178748" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/command+line/default.aspx">command line</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/help/default.aspx">help</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five+minute/default.aspx">five minute</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/five-minute/default.aspx">five-minute</category></item><item><title>Encounter 101: Implementing ECOs with ecoDesign</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/14/encounter-101-implementing-ecos-with-ecodesign.aspx</link><pubDate>Tue, 14 Sep 2010 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178678</guid><dc:creator>BobD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178678</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/14/encounter-101-implementing-ecos-with-ecodesign.aspx#comments</comments><description>&lt;p&gt;When people say &amp;quot;ECO&amp;quot; in the context of back-end digital implementation tools, they can mean a number of things:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;TCL commands that trigger netlist changes to the design&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cadence.com/products/ld/eco_designer/pages/default.aspx"&gt;Functionality that takes &lt;b&gt;RTL-based&lt;/b&gt; changes and automatically implements them automatically and surgically&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Functionality that takes a new Verilog netlist and implements the changes to an existing database&lt;/li&gt;&lt;li&gt;Pre-mask or Post-mask (i.e., can the base layers in the design be altered?) &lt;/li&gt;&lt;li&gt;Selective metal layer (i.e., which metal layers are allowed to be altered?) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I consider these all part of a similar family of functionality.&amp;nbsp; They&amp;#39;re pointed at surgically altering the existing database for whatever reason and implementing just a small change in the design while leaving everything else undisturbed.&amp;nbsp; This can be hugely beneficial for accomodating late-breaking changes to the design specification or repairing bugs in the RTL.&lt;/p&gt;&lt;p&gt;In Encounter, &amp;quot;ecoDesign&amp;quot; is the super-command targeted at implementing ECOs.&amp;nbsp; The input is an existing Encounter database along with a new Verilog netlist that describes the desired logical netlist.&amp;nbsp; Here&amp;#39;s a simple example of an ECO that Encounter could be tasked with implementing and how you&amp;#39;d instruct the tool to do so:&lt;/p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco.png"&gt;&lt;img align="left" border="0" alt="" /&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco.png" border="0" width="450" height="389" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here&amp;#39;s how we&amp;#39;d do it:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Save the existing database with &amp;quot;&lt;b&gt;saveDesign &amp;lt;designName&amp;gt;.enc.dat&lt;/b&gt;&amp;quot;&amp;nbsp;&lt;/li&gt;&lt;li&gt;In a new Encounter session, call ecoDesign pointing to the new netlist along with the old Encounter database:&lt;br /&gt;Syntax: ecoDesign &amp;lt;sessionDirectory&amp;gt; &amp;lt;designName&amp;gt; &amp;lt;newNetlistFile&amp;gt;&lt;br /&gt;&amp;quot;&lt;b&gt;ecoDesign testcase.enc.dat testcase eco.v&lt;/b&gt;&amp;quot;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This will instruct the tool to load the new netlist while refering to the old physical database.&amp;nbsp; It will then compare the new netlist to the old and retain as much physical information as possible while preparing the database for incremental routing.&amp;nbsp; Finally, it will implement surgical changes to the routing to finalize the ECO.&amp;nbsp; Conceptually, this is why it is advantageous to perform an ECO as opposed to 
completely respinning.&amp;nbsp; It&amp;#39;s all about minimizing turnaround time and 
reducing the uncertainty associated with changing the entire design. &lt;/p&gt;&lt;p&gt;Here&amp;#39;s what the database would look like after ecoDesign.&amp;nbsp; Note how the connection is changed, but the old unaffected routing isn&amp;#39;t touched: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco2.png"&gt;&lt;img src="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco2.png" border="0" width="450" height="438" alt="" /&gt;&lt;/a&gt;&lt;a href="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/eco2.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;p&gt;I&amp;#39;ll be writing about other nuances related to ECO in future blog entries so I wanted to share this as a foundation for further discussion.&amp;nbsp; Developing an ECO strategy is something I&amp;#39;ve seen successful design teams do while implementing their first chip -- not only because they want to make their designs amendable to future re-spins but because they want to speed their first release to market by spinning late breaking changes effectively. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Further Reading:&lt;/b&gt; The &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=soceUG/soceUG9.1.2/ECOFlow.html#1059375"&gt;ECO Flows Chapter&lt;/a&gt; in the Encounter User&amp;#39;s Guide is actually pretty good.&amp;nbsp; It covers a wide variety of ECO types and gives detailed step-by-step insight into the steps ecoDesign performs to implement an ECO.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Have you used Encounter&amp;#39;s ECO capabilities?&amp;nbsp; We&amp;#39;d love to hear about your experiences.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178678" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/ECO/default.aspx">ECO</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/ecoDesign/default.aspx">ecoDesign</category></item><item><title>Encounter Puzzler Solution: Where Did My Fences Go?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/10/encounter-puzzler-solution-where-did-my-fences-go.aspx</link><pubDate>Fri, 10 Sep 2010 21:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178608</guid><dc:creator>BobD</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178608</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/10/encounter-puzzler-solution-where-did-my-fences-go.aspx#comments</comments><description>&lt;p&gt;A couple of days ago I posted a puzzler on a scenario where fences couldn&amp;#39;t be seen in Encounter.&amp;nbsp; Check it out &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/09/08/encounter-puzzler-where-did-my-fences-go.aspx?CMP=home"&gt;HERE&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Congratulations to Jason G for absolutely nailing it in the comments.&amp;nbsp; He was indeed corrrect -- the issue was that the fences didn&amp;#39;t contain any standard cells within them, so the tool wasn&amp;#39;t displaying them. That&amp;#39;s because the default setting stiplulates that module guides with less than 100 instances within them aren&amp;#39;t displayed.&amp;nbsp; This setting is controlled via the GUI under Options-&amp;gt;Set Preference...-&amp;gt;Display:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/module.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/module.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;(Note: In 8.1 and earlier this form was accessed via Design-&amp;gt;Preferences...) &lt;/p&gt;&lt;p&gt;This has been a long-standing default in the tool and it&amp;#39;s usually a sensible one.&amp;nbsp; If you think back to Encounter&amp;#39;s legacy of being a high capacity floorplanning system with a unique virtual-flat view, it makes sense to think that modules will usually have standard cells beneath them and if there are less than 100 instances within a given module, it&amp;#39;s usually not a large enough entity to consider as a partition.&amp;nbsp; That being the case, the default is set to 100 in order to avoid the GUI from being cluttered up.&lt;/p&gt;&lt;p&gt;However, it&amp;#39;s quite common for users to perform early floorplanning where there is no standard cell content to the modules.&amp;nbsp; In cases like this, the tool can treat empty modules as black boxes, or&amp;nbsp; as empty modules as was the case in the puzzler.&amp;nbsp; That being the case, I&amp;#39;d be in favor of changing the default to 0 (i.e., all modules should be displayed regardless of how many standard cells are within them).&amp;nbsp; What do you think?&amp;nbsp; Let us know in the comments or by dropping me an E-mail: &lt;a href="mailto:dwyer@cadence.com"&gt;dwyer@cadence.com&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Setting that aside, why was it that one user was able to see the fences yet another wasn&amp;#39;t?&amp;nbsp; It was because one user had long ago set this preference and saved it in his home directory in an .enc file.&amp;nbsp; If you&amp;#39;d like to save preferences for future sessions you can do so by clicking &amp;quot;Save&amp;quot; on the Preferences form and then choosing where you&amp;#39;d like to save the file.&amp;nbsp; Next time you start the tool, it will pick up the preferences automatically: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/module2.png"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/module2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For more information about EDI initialization files and the order in which they are sourced &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=soceUG/soceUG9.1.2/starting.html#InitializationFiles"&gt;see this section of the EDI User&amp;#39;s Guide&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So why doesn&amp;#39;t the tool save the preferences when a design is saved?&amp;nbsp; Well, it does, but depending on whether the design is restored or loaded from scratch, the preferences won&amp;#39;t get restored.&amp;nbsp; If one did a &amp;quot;saveDesign testcase.enc&amp;quot; that would result in a testcase.enc.dat directory.&amp;nbsp; That testcase.enc.dat directory &lt;span style="font-style:italic;"&gt;would&lt;/span&gt; contain the preferences saved in an enc.pref.tcl file.&amp;nbsp; If that session was restored via Design-&amp;gt;Restore Design... (or &amp;quot;source testcase.enc&amp;quot; which is equivalent to Design-&amp;gt;RestoreDesign and the TCL command &amp;quot;restoreDesign&amp;quot;) then the preferences associated with the database would be restored along with the design.&amp;nbsp; But if the design is restored by loading a configuration file and floorplan file, then the preferences file doesn&amp;#39;t get sourced.&lt;/p&gt;&lt;p&gt;In all, the moral of the story is that there is more information stored as a result of saveDesign than what is stored in the .conf file.&amp;nbsp; You might consider passing around .enc.dat directories rather than .conf files when sharing data between users. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Further Reading:&lt;/b&gt; If you want to create a self-contained testcase &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2009/07/16/how-to-create-a-self-contained-testcase-in-encounter.aspx"&gt;this blog entry might be useful&lt;/a&gt;.&amp;nbsp; It describes how to create a testcase that also contains all of the supporting library data which can be useful when passing databases to other sites that don&amp;#39;t have visibility to the same file system.&amp;nbsp; It&amp;#39;s also very useful for passing testcases to Cadence applications engineers to troubleshoot issues. This is why &amp;quot;saveTestcase&amp;quot; is one of my favorite commands.&lt;/p&gt;&lt;p&gt;I hope this format is fun and useful.&amp;nbsp; I&amp;#39;ll post another puzzler soon. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178608" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning/default.aspx">Floorplanning</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/fences/default.aspx">fences</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category></item><item><title>Encounter Puzzler: Where Did My Fences Go?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/09/08/encounter-puzzler-where-did-my-fences-go.aspx</link><pubDate>Wed, 08 Sep 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1178416</guid><dc:creator>BobD</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1178416</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/09/08/encounter-puzzler-where-did-my-fences-go.aspx#comments</comments><description>&lt;p&gt;A while back I visited a customer I see on a fairly regular basis.&amp;nbsp; As soon as I entered the building, my primary contact asked if I&amp;#39;d stop off to talk with a colleague of his who had an Encounter problem.&amp;nbsp; It was a bad one -- he was dead in the water and he couldn&amp;#39;t get past the issue.&lt;/p&gt;&lt;p&gt;It&amp;#39;s fairly unusual to look at a problem as an application engineer, and make quick suggestions that resolve problems.&amp;nbsp; Especially lately, it seems.&amp;nbsp; Invariably, the problems I see are complicated multi-variable things that take a lot of time and effort to pinpoint.&amp;nbsp; But this one was different.&amp;nbsp; It took me less than a minute to diagnose this problem and resolve it with the user.&amp;nbsp; This scenario got me thinking that sharing these little tidbits would be an interesting addition to the blog.&amp;nbsp; Challenges like this become a &amp;quot;puzzle&amp;quot; of sorts; I share some symptoms and clues, and you can take a crack at it and learn a little bit about how Encounter works along the way. &lt;/p&gt;&lt;p&gt;So here&amp;#39;s the first puzzler: &lt;/p&gt;&lt;p&gt;The designer I visited was attempting to perform floorplanning operations in the tool.&amp;nbsp; He inherited a database from another designer and needed to refine the solution to derive better fence locations and sizes.&amp;nbsp; However, there was one big problem -- he couldn&amp;#39;t see any fences in the design!&amp;nbsp; Here is what the designer saw when he looked at the floorplan in Encounter:&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/fp2.png"&gt;&lt;img src="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/fp2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The following is what he expected to see (5 fences): &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/fp1.png"&gt;&lt;img src="https://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/fp1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The strange thing was that when the original designer was working on the database he &lt;i&gt;could &lt;/i&gt;see the fences.&amp;nbsp; We checked to make sure Guides/Regions/Fences/Modules were all visible and selected -- they were.&amp;nbsp; We found one simple setting that, when changed, made the fences visible. &lt;/p&gt;&lt;p&gt;Do you think you know what&amp;#39;s going on here?&amp;nbsp; And why could one designer see the fences while the other could not?&amp;nbsp; If you have an idea, leave a comment below.&lt;/p&gt;&lt;p&gt;Check back on Friday for the answer.&amp;nbsp; Or better yet &lt;a href="http://feeds2.feedburner.com/cadence/community/blogs/di"&gt;subscribe&lt;/a&gt; to the Digital Implementation blogs to get new content delivered to your inbox or favorite feed reader. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1178416" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/encounter/default.aspx">encounter</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning/default.aspx">Floorplanning</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/fences/default.aspx">fences</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/puzzler/default.aspx">puzzler</category></item><item><title>CDNLive! Silicon Valley Abstract Deadline Extended 1 Week</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/08/25/cdnlive-silicon-valley-abstract-deadline-extended-1-week.aspx</link><pubDate>Wed, 25 Aug 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1137915</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1137915</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/08/25/cdnlive-silicon-valley-abstract-deadline-extended-1-week.aspx#comments</comments><description>&lt;p&gt;The deadline for submitting abstracts to &lt;b&gt;CDNLive! Silicion Valley 2010&lt;/b&gt; has been extended 1 week to &lt;b&gt;Sunday August 29th&lt;/b&gt;.&amp;nbsp; The conference begins October 26th at the Fairmont Hotel in San Jose, California. &lt;/p&gt;&lt;p&gt;If you&amp;#39;ve already submitted an abstract: Thank you!&amp;nbsp; &lt;/p&gt;&lt;p&gt;If you haven&amp;#39;t yet, I&amp;#39;d highly recommend you take a moment to consider taking part in this year&amp;#39;s conference.&amp;nbsp; I think the most common reason people &lt;i&gt;don&amp;#39;t&lt;/i&gt; submit abstracts and papers for conferences like this is they feel like they didn&amp;#39;t do anything spectacular enough to warrant writing a paper in the past year.&amp;nbsp; Don&amp;#39;t underestimate how useful the knowledge you&amp;#39;ve built up would be to other users.&amp;nbsp; Some of the best papers cover nuances associated with just a single option of a single command.&amp;nbsp; Or general areas you&amp;#39;ve been working with over a period of time.&amp;nbsp; The most important thing to consider, I think, is how you used Cadence tools to solve a real-world challenge. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/default.aspx"&gt;Click here to visit the CDNLive! Silicon Valley abstract submission page.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks for your consideration.&amp;nbsp; We look forward to your submission and participation in the conference. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1137915" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive_2100_/default.aspx">CDNLive!</category></item><item><title>Webinar: SOI Gives More Performance Per Watt, And There's An Easy Path</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/08/20/soi-gives-more-performance-per-watt-but-how-hard-is-it-to-use-vs-bulk.aspx</link><pubDate>Fri, 20 Aug 2010 23:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:1046486</guid><dc:creator>mikeNaustin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=1046486</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/08/20/soi-gives-more-performance-per-watt-but-how-hard-is-it-to-use-vs-bulk.aspx#comments</comments><description>&lt;p&gt;If you&amp;#39;ve seen any of the recent buzz lately around
Silicon-On-Insulator (SOI), you&amp;#39;d know that it&amp;#39;s an excellent option that can
enable you to meet lower power consumption and die area targets without
sacrificing performance or functionality. This is why Cadence, ARM and IBM have
partnered to provide you an easy path to silicon with the SOI process for your
digital design, including production proven software, design kits and IP. &amp;nbsp;&lt;/p&gt;

&lt;p&gt;If you&amp;#39;re a design manager or engineer, and you&amp;#39;d like to
learn more about designing with SOI, please join Cadence and ARM on Wednesday
August 25&lt;sup&gt;th&lt;/sup&gt; for the &amp;quot;Ready for SOI&amp;quot; webinar. Here&amp;#39;s more info:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;When: &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;August 25, 2010 @ 10:00 am pacific time&lt;/p&gt;

&lt;p&gt;&lt;b&gt;What &amp;amp; Where:&lt;/b&gt; &lt;/p&gt;

&lt;p&gt;Attend this webinar to find out
what SOI technology can do for you and how you can maximize its benefits.
You&amp;#39;ll learn how to implement and verify your digital and mixed signal SOI IP
and SoCs, and you&amp;#39;ll hear about how Cadence and its ecosystem partners are
collaborating to offer an end-to-end SOI solution and methodology.&lt;/p&gt;

&lt;p&gt;Register: &lt;a href="http://www.secure-register.net/flyer.php?id=1160"&gt;http://www.secure-register.net/flyer.php?id=1160&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This webinar is part of a Digital
Implementation and Signoff &lt;a href="http://www.cadence.com/cadence/events/Pages/eventseries.aspx?series=Digital%20Implementation%20and%20Signoff%20Webinar%20Series&amp;amp;CMP=100511pcbicwebinars_sb"&gt;series
of webinars&lt;/a&gt; that begins August 24. &lt;/p&gt;

&lt;p&gt;Michael Jacobs&lt;/p&gt;



&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=1046486" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Low-Power++/default.aspx">Low-Power  </category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Power-Efficient+Design/default.aspx">Power-Efficient Design</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/power+analysis/default.aspx">power analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/low+power/default.aspx">low power</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/mixed+signal/default.aspx">mixed signal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/webinars/default.aspx">webinars</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/power/default.aspx">power</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SOI/default.aspx">SOI</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Silicon+on+Insulator/default.aspx">Silicon on Insulator</category></item><item><title>Abstracts For CDNLive! Silicon Valley 2010 Due August 22</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/08/09/abstracts-for-cdnlive-silicon-valley-2010-due-august-22.aspx</link><pubDate>Mon, 09 Aug 2010 20:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:853022</guid><dc:creator>BobD</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=853022</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/08/09/abstracts-for-cdnlive-silicon-valley-2010-due-august-22.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/cfp.aspx"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Bob_Dwyer/cdnlive.png" align="left" border="0" hspace="10" alt="" /&gt;&lt;/a&gt;Don&amp;#39;t let the name &lt;b&gt;CDNLive!&lt;/b&gt; confuse you.&amp;nbsp; It&amp;#39;s the Cadence user&amp;#39;s group conference and for North America this year it&amp;#39;s occurring in &lt;b&gt;Silicon Valley October 26th, 2010&lt;/b&gt;.&amp;nbsp; The conference also includes Technology Demos and a Designer Expo, but the heart of the event is really the user presentations.&amp;nbsp; If you haven&amp;#39;t submitted a paper for consideration or haven&amp;#39;t even thought of a topic to talk about, don&amp;#39;t worry -- it&amp;#39;s not too late.&lt;/p&gt;&lt;p&gt;The deadline for abstracts is &lt;b&gt;August 22nd, 2010&lt;/b&gt;.&amp;nbsp; Abstracts are a maximum of 1,500 words so you don&amp;#39;t have to invest a lot of time and energy to see if your topic will be accepted.&amp;nbsp; I highly recommend you &lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/cfp.aspx"&gt;consider submitting an abstract&lt;/a&gt;.&amp;nbsp; Here&amp;#39;s why... &lt;/p&gt;&lt;p&gt;I&amp;#39;ve presented papers at this conference twice in the past and it&amp;#39;s been a rewarding experience each time.&amp;nbsp; The first was back in 2000 when the conference was called the International Cadence Usergroup Conference.&amp;nbsp; I was working at IBM at the time and my colleague &lt;b&gt;Adam Jatkowski&lt;/b&gt; and I presented &amp;quot;&lt;a href="http://webcache.googleusercontent.com/search?q=cache:rJpIlmAWa0QJ:www.cadenceusers.org/conferences/archives/icu2000/abstracts_IC.html+dwyer+jatkowski+cadence&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=firefox-a"&gt;X-Terminator: A hierarchical pin placement optimizer.&lt;/a&gt;&amp;quot;&amp;nbsp; We wrote up an algorithm in SKILL that did some very cool things in the pin assignment domain.&amp;nbsp; Adam was brains of the operation and I &amp;quot;sold&amp;quot; it to our project manager.&amp;nbsp; That project was where I developed my interest for EDA scripting languages that continues today.&amp;nbsp; We were just a couple years out of college and had a great time writing the code, presenting the paper, and sneaking in a trip up to Napa at some point during the week.&amp;nbsp; I remember a Cadence representative asking about the run-time of our solution after we finished our talk.&amp;nbsp; Adam advised that &amp;quot;it was on the order of n-squared.&amp;quot;&amp;nbsp; Good thing he was there -- I would&amp;#39;ve said it was &amp;quot;pretty fast.&amp;quot; &lt;/p&gt;&lt;p&gt;The next paper was jointly authored with &lt;b&gt;Franklin Bodine&lt;/b&gt; from Intel in 2008.&amp;nbsp; We wrote up &amp;quot;&lt;a href="https://www.cadence.com/cdnlive/library/documents/2008/Silicon%20Valley/4DI12_Robert%20Dwyer.pdf"&gt;Avoiding Unhappy Block Designers with Incremental Feedthrough Insertion&lt;/a&gt;.&amp;quot;&amp;nbsp; Franklin couldn&amp;#39;t join me to present, but it was rewarding to talk about the content we worked together developing to audience members who had familiarity working with the exact set of specific commands we leveraged.&amp;nbsp; Who knew &amp;quot;insertPtnFeedthrough -topoFile&amp;quot; could be the subject of a paper? &lt;/p&gt;&lt;p&gt;2008 was also the year I caught &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2008/09/11/running-soc-encounter-from-an-iphone.aspx"&gt;this video of our Encounter software running through VNC on an iPhone&lt;/a&gt;. I also had a nice meal at The Grill inside the Fairmont Hotel (where the conference is being held this year).&amp;nbsp; Highly recommended if you can find a way to fit it on the expense report.&amp;nbsp; If you&amp;#39;re having difficulty there&amp;#39;s always &lt;a href="http://expenseasteak.com"&gt;ExpenseASteak.com&lt;/a&gt; to help out. &lt;/p&gt;&lt;p&gt;For me the best part of the conference is connecting with other users working in the same functional areas and establishing lasting relationships.&amp;nbsp; For example I met &lt;b&gt;Jason Gentry&lt;/b&gt; at the conference.&amp;nbsp; His paper on &amp;quot;&lt;a href="https://www.cadence.com/cdnlive/library/documents/2008/Silicon%20Valley/4DI10_Jason%20Gentry.pdf"&gt;Extending SoC-Encounter using Built-In db Commands&lt;/a&gt;&amp;quot; was right up my alley.&amp;nbsp; Others enjoyed it too -- it earned the &lt;a href="http://www.cadence.com/community/blogs/di/archive/2008/09/30/interview-cdnlive-people-s-choice-winner-jason-gentry.aspx"&gt;People&amp;#39;s Choice Award for Best Paper&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;I hope you consider taking the time to submit an abstract and create your own memories at a CDNLive!&amp;nbsp; And I hope to see you there.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/cdnlive/na/2010/pages/default.aspx"&gt;Click here to visit the CDNLive! Silicon Valley 2010 website&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Bob Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=853022" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CDNLive_2100_/default.aspx">CDNLive!</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/hierarchical+design/default.aspx">hierarchical design</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Floorplanning/default.aspx">Floorplanning</category></item><item><title>EDA Follow-The-Leader ... Signoff In The Design Flow</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/08/09/eda-follow-the-leader-signoff-in-the-design-flow.aspx</link><pubDate>Mon, 09 Aug 2010 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:800362</guid><dc:creator>PeteMc</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=800362</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/08/09/eda-follow-the-leader-signoff-in-the-design-flow.aspx#comments</comments><description>&lt;p&gt;As a member of the EDA community, I find it interesting and somewhat frustrating to see how much we copy each other at times. Ever notice how one company might make a position on something, and once their message resonates, then a lot of other companies come out of the woodwork with me-too messaging and positioning?&lt;/p&gt;&lt;p&gt;I saw this happen on mixed-signal design, and now see it happening on signoff analysis.&lt;/p&gt;&lt;p&gt;Here at Cadence, we have developed a very comprehensive suite of signoff analysis solutions, and have been advocating that these solutions help design teams more when solutions are integrated into the design environment. Instead of transferring gigabytes of design data to separate tools, it makes obvious sense to enable the analysis directly from the design environments themsleves. This helps design engineers more efficiently execute the multiple types of analysis and enables an easy path to fixing any identified problems -- but it does require signoff levels of accuracy.&lt;/p&gt;&lt;p&gt;Today, signoff solutions at Cadence include functionality used to validate timing, signal integrity, distributed power dissipation, power rail IR drop and electromigration, parasitic extraction, DRC, LVS, noise and on-chip thermal analysis. All of this functionality is now accessible directly from the Encounter Digital Implementation System digital design platform, and most of this functionality is also accessible directly from our Virtuoso custom design platform too. The end result is that we have enabled our customers with high increases in ease-of-use and efficiency in completing their designs. &lt;/p&gt;&lt;p&gt;I find it a little amusing that some of my competition use phrases such as &amp;quot;in-design signoff&amp;quot; when they are often referring to limited functionality such as DRC and LVS. While it is great that they have copied the Cadence positioning, the reality is that &lt;i&gt;true&lt;/i&gt; integrated signoff covers a lot more functionality.&lt;/p&gt;&lt;p&gt;If you want to learn more on how Cadence has enabled comprehensive in-design signoff, watch out for some techtorials that will be announced in the coming weeks, where will will educate you in detail on our solutions and the value of the integration.&lt;/p&gt;&lt;p&gt;Pete McCrorie &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=800362" width="1" height="1"&gt;</description></item><item><title>Programatically Capturing Cell Delay In The Encounter Digital Implementation System</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/07/23/programatically-capturing-cell-delay-in-the-encounter-digital-implementation-system.aspx</link><pubDate>Fri, 23 Jul 2010 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:570834</guid><dc:creator>BobD</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=570834</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/07/23/programatically-capturing-cell-delay-in-the-encounter-digital-implementation-system.aspx#comments</comments><description>&lt;p&gt;A while back we were talking about &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2009/02/09/saving-your-skin-with-quot-report-timing-collection-quot.aspx"&gt;how to programatically troubleshoot timing violations in Encounter&lt;/a&gt;.&amp;nbsp; That post recieved a lot of good comments (thanks!) but one in particular touched on a point that I&amp;#39;ve worked on with other users, so I thought to raise it up for visibility here and go more in depth on the topic.&amp;nbsp; Nataraja G asks:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&amp;quot;how can we get the delay values associated with that cell ? is it possible!&amp;quot;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;When I first looked at our CTE-TCL inferface for probing timing programmatically I too thought it would be convenient to capture the delay through a given cell.&amp;nbsp; Then it would be easy to capture all the instances in a given path with delay greater than a given value, for example.&amp;nbsp; However, it&amp;#39;s a little more complicated than that in practice.&amp;nbsp; It is possible, however, and choosing the best method depends on what exactly you&amp;#39;re looking to achieve.&lt;/p&gt;&lt;p&gt;Let&amp;#39;s get right into an example of an actual timing path to see how we might be able to extract information about cell delay programmatically.&lt;/p&gt;

&lt;p&gt;In this blog entry I&amp;#39;ll be seeking to capture the delay through i0 in this simple reg2reg path that goes through a single buffer:&lt;/p&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-------------------------------------------------------------+ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Instance |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Arc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; Cell | Delay | Arrival | Required |&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;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; Time&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; Time&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |----------+-------------+-------+-------+---------+----------|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | i0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | CK ^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; 0.000 |&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.309 |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | &lt;b&gt;i0&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | CK ^ -&amp;gt; Q v | DFFX1 | &lt;b&gt;0.286&lt;/b&gt; |&amp;nbsp;&amp;nbsp; 0.286 |&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.595 | &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | i1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | A v -&amp;gt; Y v&amp;nbsp; | BUFX1 | 0.156 |&amp;nbsp;&amp;nbsp; 0.442 |&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.751 | &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | i2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | D v&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | DFFX1 | 0.000 |&amp;nbsp;&amp;nbsp; 0.442 |&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.751 | &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-------------------------------------------------------------+&lt;br /&gt;&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;Reporting timing through a given instance&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Before going too much further, it&amp;#39;s probably worth mentioning the &amp;quot;reportDelayCalculation&amp;quot; command.&amp;nbsp; It&amp;#39;s helpful for asking the tool to write out information about how delay was calculated for a given instance.&amp;nbsp; Here&amp;#39;s an abridged example of what it writes out if we call it: &lt;/p&gt;&lt;pre&gt;encounter 1&amp;gt; reportDelayCalculation -from i0/CK -to i0/Q&lt;br /&gt;-------------------------------------------------------------&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fall&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;Input transition time&amp;nbsp; : 0.120000 ns 0.120000 ns &lt;br /&gt;Effective capacitance&amp;nbsp; : 0.003261 pF 0.003261 pF&lt;br /&gt;Cell delay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0.377800 ns 0.&lt;b&gt;286&lt;/b&gt;200 ns &lt;br /&gt;Output transition time : 0.093300 ns 0.079400 ns &lt;br /&gt;------------------------------------------------------------- &lt;/pre&gt;

&lt;p&gt;This is perhaps useful information, but what if we want to do something more programmatic? &lt;/p&gt;&lt;p&gt;&lt;b&gt;Programatically capturing the delay for a portion of a path&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The &amp;quot;get_arcs&amp;quot; command can be useful in situations where you want to capture the delay from any point to any point.&amp;nbsp; In this case&lt;/p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;,Courier,monospace;"&gt;&lt;pre&gt;encounter 38&amp;gt; get_arcs -from i0/CK -to i0/Q&lt;br /&gt;0x36&lt;/pre&gt;&lt;/span&gt;&lt;p&gt;The 0x36 tells us we&amp;#39;ve caught a &amp;quot;collection&amp;quot; that we can in turn query for more information.&amp;nbsp; 

The &amp;quot;report_property&amp;quot; command can be used to list what information we can query for the collection:&lt;/p&gt;&lt;pre&gt;encounter 40&amp;gt; report_property [get_arcs -from i0/CK -to i0/Q]&amp;nbsp;&amp;nbsp; &lt;br /&gt;property&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | value&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;-------------------------------------------------&lt;br /&gt;arc_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | rising_edge&lt;br /&gt;delta_delay_max_fall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;delta_delay_max_rise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;delta_delay_min_fall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;delta_delay_min_rise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;delay_max_fall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | &lt;b&gt;0.286&lt;/b&gt;&lt;br /&gt;delay_max_rise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0.378&lt;br /&gt;delay_min_fall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0.286&lt;br /&gt;delay_min_rise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0.378&lt;br /&gt;is_cellarc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | true&lt;br /&gt;is_disabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | false&lt;br /&gt;mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;object_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | timing_arc&lt;br /&gt;sdf_cond&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;sdf_cond_end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;sdf_cond_start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;sense&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | non_unate&lt;br /&gt;source_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;sink_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;when&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/pre&gt;&lt;br /&gt;

Note that there are rise and fall arcs that go through the instance.&amp;nbsp; The 0.286 in the timing report happens to be associated with delay_max_fall.&amp;nbsp; If we wanted, we could capture one of the values explicitly with &amp;quot;get_property&amp;quot;:&lt;br /&gt;

&lt;pre&gt;encounter 42&amp;gt; get_property [get_arcs -from i0/CK -to i0/Q] delay_max_fall&amp;nbsp; &lt;br /&gt;0.286 &lt;/pre&gt;&lt;br /&gt;

&lt;b&gt;Programatically capturing the delay for a given instance&lt;/b&gt;&lt;p&gt;With get_arcs, we needed to select from the rising and falling arcs.&amp;nbsp; If we want to capture the arc that appears in a given timing report for a specific instance, we can capture a timing collection and query its timing_points.&amp;nbsp; The timing_points are sorted such that we can perform a subtraction of arrival time to determine the delay through any instance.&amp;nbsp; Here&amp;#39;s a proc that finds the delay through a given instance name in a timing collection: &lt;/p&gt;

&lt;pre&gt;proc user_get_inst_delay {inst_name timing_collection} {&lt;br /&gt;&amp;nbsp; set timing_points [get_property $timing_collection timing_points]&lt;br /&gt;&amp;nbsp; set previous_arrival_time 0&lt;br /&gt;&amp;nbsp; foreach_in_collection timing_point $timing_points {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pin [get_property $timing_point pin]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pin_name [get_property $pin hierarchical_name]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set inst [file dirname $pin_name]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set arrival [get_property $timing_point arrival]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {[string match $inst_name $inst]} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set cell_delay [expr $arrival - $previous_arrival_time]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set previous_arrival_time $arrival&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; puts &amp;quot;Delay for inst $inst_name is $cell_delay&amp;quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

Then we could query the delay through a given instance in the path as follows (switching up to i1 here just to show a different value than the next example):&lt;br /&gt;&lt;pre&gt;encounter 63&amp;gt; user_get_inst_delay i1 [report_timing -collection]&lt;br /&gt;Delay for inst i1 is 0.156&lt;br /&gt;&lt;/pre&gt;

&lt;b&gt;Programatically capturing instances with delay greater than a certain amount&lt;/b&gt;&lt;p&gt;We could also write the script such that we find the instances with delay greater than a certain amount and potentially do something with those instances like upsize them.&amp;nbsp; Here&amp;#39;s an example of how the script could be reworked to do that:&lt;/p&gt;&lt;pre&gt;proc user_get_inst_delay_greater_than {max_delay timing_collection} {&lt;br /&gt;&amp;nbsp; set timing_points [get_property $timing_collection timing_points]&lt;br /&gt;&amp;nbsp; set previous_arrival_time 0&lt;br /&gt;&amp;nbsp; foreach_in_collection timing_point $timing_points {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pin [get_property $timing_point pin]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set pin_name [get_property $pin hierarchical_name]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set inst [file dirname $pin_name]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set arrival [get_property $timing_point arrival]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set cell_delay [expr $arrival - $previous_arrival_time]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if {[expr $cell_delay &amp;gt; $max_delay]} {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts &amp;quot;Delay for inst $inst is $cell_delay&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set previous_arrival_time $arrival&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;encounter 62&amp;gt; user_get_inst_delay_greater_than 0.2 [report_timing -collection]&lt;br /&gt;Delay for inst i0 is 0.286&lt;/pre&gt;&lt;br /&gt;

&lt;b&gt;Conclusion&lt;/b&gt;&lt;p&gt;Having the ability to programatically query timing in the physical domain can be a powerful tool.&amp;nbsp; If you&amp;#39;re not that into scripting but you still want to troubleshoot timing you might find our &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2008/10/15/an-interview-with-global-timing-debug-architect-thad-mccracken.aspx"&gt;Global Timing Debug utility&lt;/a&gt; useful.&amp;nbsp; It provides a menu-driven way to capture categories of paths with certain characteristics.&amp;nbsp; For example you could create a category that had all of the paths in the design with more than &amp;quot;n&amp;quot; instances with delay greater than &amp;quot;y&amp;quot;. &lt;/p&gt;&lt;p&gt;For more information on programming and timing analysis in Encounter check out the &lt;a href="http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=fetxtcmdref/fetxtcmdref9.1.1/tclscriptingT.html#1035250"&gt;Advanced Timing Tcl Scripting Commands&lt;/a&gt; chapter of the Encounter Digital Implementation System Text Command Reference. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Question of the Day:&lt;/i&gt;&lt;/b&gt;&lt;i&gt; Any tips or tricks related to this you&amp;#39;d like to share?&amp;nbsp; Any suggestions for improvement?&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Robert Dwyer &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=570834" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/static+timing+analysis/default.aspx">static timing analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CTE-TCL/default.aspx">CTE-TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/scripting/default.aspx">scripting</category></item><item><title>DAC 2010 – A “Coming Out” Party For 3D-IC Design</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/06/28/dac-2010-a-coming-out-party-for-3d-ic-design.aspx</link><pubDate>Mon, 28 Jun 2010 22:51:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:201744</guid><dc:creator>RahulD</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=201744</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/06/28/dac-2010-a-coming-out-party-for-3d-ic-design.aspx#comments</comments><description>&lt;p&gt;Overall, the 2010 Anaheim DAC was
livelier than the years before. Customer and vendor faces were not long and
serious, but more purposeful and forward-looking. The recent M&amp;amp;A activity
also brought in some rays of sunshine. The &lt;a href="http://www.cadence.com/eda360"&gt;EDA360 vision&lt;/a&gt; for the entire industry
resonated with a wide gamut of system companies, IDM&amp;#39;s, ASIC/IP vendors and
foundries. And, the hottest topic this year definitely was 3D-IC (Stacked Die).
Most folks talk about the Denali party, but DAC
#47 was indeed a &amp;quot;coming out&amp;quot; party for 3D-IC design, and three events stood
out. &lt;/p&gt;

&lt;p&gt;The first one was &amp;quot;Hogan&amp;#39;s Heroes: What Nightmares will
22nm Bring?&amp;quot; This panel had participants from Qualcomm, Xilinx and D2S,
and was chaired by Jim Hogan, Vista Ventures. They discussed and debated how
the limits of lithography will impose new rules for designers, and discussed
the industry impact. They agreed that the biggest factor they would lose sleep
over at 22/20nm is &amp;quot;cost&amp;quot;...not performance, power, time-to-market
but &amp;quot;cost.&amp;quot; They also pointed out that costs of double-patterning
(which is a must at 22/20nm) are orders of magnitude higher than traditional
methodologies up until 32/28nm. And, that makes alternative solutions like
3D-IC viable alternatives to achieve the&amp;nbsp;next scale&amp;nbsp;of SoC
integration, without having to weather the risks of migrating to advanced
process nodes.&lt;/p&gt;

&lt;p&gt;The second event was a GSA (Global Semiconductor
Association) Birds-of-a-Feather event on 3D/TSV (through-silicon via) with an
overwhelming 125+ attendees. Herb Reiter and his team brought together
representativies from major foundries, IDMs, EDA/IP vendors, design services
and other industry organizations&amp;nbsp;to accelerate 3D design. The open forum
and discussion were definitely&amp;nbsp;a right step in that direction to not only
ensure good tools for cost-effective 3D designs, but also to minimize risk and
shorten time-to-profit for the companies that design and manufacture 3D ICs.
&lt;/p&gt;&lt;p&gt;The importance of extending today&amp;#39;s&amp;nbsp;2D tools to handle 3D design was realized,
given widespread market acceptance and usageof 3D ICs.&amp;nbsp;Only then will IC
and system designers be able to cost-effectively and efficiently&amp;nbsp;integrate
multiple 2D SoCs into 3D systems. In addition, in the GSA market survey of
semiconductor&amp;nbsp;companies that asked about&amp;nbsp;EDA vendors with 3D/TSV
support, it was satisfying to see Cadence (38%) leading the pack (Mentor is
25%, Synopsys is 18%).&amp;nbsp;&lt;/p&gt;

&lt;p&gt;The third event was a panel entitled &amp;quot;3D Stacked Die:
Now or the Future?&amp;quot; with speakers from TSMC, Samsung, IMEC and Qualcomm.
The good news is that all the panelist companies&amp;nbsp;have already moved beyond
traditional 2D design techniques and are utilizing key advantages of the third
dimension. These companies might be in different stages of the
adoption/deployment curve, but all of them consistently and clearly see a path
to fully take advantage of 3D IC design. &lt;/p&gt;&lt;p&gt;Also, the speakers highlighted that
the first wave of 3D devices would be hitting the market this year. Actual
production designs with real silicon, and in real consumer products! This first
batch would primarily have memory on one die and the rest of the SoC on another
die. This makes sense since embedded memory takes a large portion of the
design, thus&amp;nbsp;growing die-size and&amp;nbsp;decreasing yield. Embedded memory
also consumes more power and limits bandwidth, as compared to stacking memory
on top of the logic dies.&lt;/p&gt;

&lt;p&gt;All in all, the refeshing take-away was that the industry
has clearly answered for itself the question: &amp;quot;Is 3D design now or the future?&amp;quot;
&lt;/p&gt;

&lt;p&gt;The answer is an emphatic &amp;quot;Now.&amp;quot;&amp;nbsp; 3D design is
certainly happening &lt;i&gt;now&lt;/i&gt; and at a rapid pace. And, companies not
considering 3D IC design face the risk of missing the boat and being left
behind.&lt;/p&gt;

&lt;p&gt;Rahul Deokar&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;





&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=201744" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CSV/default.aspx">CSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3DIC/default.aspx">3DIC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DATE/default.aspx">DATE</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3D/default.aspx">3D</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TSV/default.aspx">TSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/PoP/default.aspx">PoP</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/flip+chip/default.aspx">flip chip</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/stacked+die/default.aspx">stacked die</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/wirebond/default.aspx">wirebond</category></item><item><title>Mixed Signal: Why The Sudden Attention?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/05/24/mixed-signal-why-the-sudden-jump-in-attention.aspx</link><pubDate>Mon, 24 May 2010 23:35:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:61702</guid><dc:creator>PeteMc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=61702</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/05/24/mixed-signal-why-the-sudden-jump-in-attention.aspx#comments</comments><description>&lt;p&gt;With DAC 2010 rapidly approaching, we can again expect that lots of EDA and
IP vendors will use “mixed signal” somewhere in their company’s messaging. Last
year it seemed that nearly everyone wanted to jump on the mixed signal
“bandwagon” … so what caused this sudden jump in interest in mixed signal?&lt;/p&gt;

&lt;p&gt;We all know that mixed signal design is not new. It’s been around for about
20 years (give or take), but there has been a shift in the types of mixed
signal designs that are being developed.&lt;/p&gt;

&lt;p&gt;In the past, a mixed signal design was typically a pretty small design that
was created using a manually-driven design methodology. Design engineers drew schematics
and simulated the design, while layout designers created the physical layout
based on the schematics and constraints from the design engineers. Custom
schematic editing and layout tools such as Virtuoso were used for these
designs.&lt;/p&gt;

&lt;p&gt;As the digital content of these mixed signal designs grew beyond a manageable
number of instances, a purely manual implementation approach rapidly became a
major bottleneck. Instead, design teams looked to more automated digital
implementation solutions, based on standard ASIC methodology. Here at Cadence,
we created a specific product for such designs, called Virtuoso Digital
Implementation (known as VDI), which complements Virtuoso and enables automatic
digital implementation for up to 50K instances. VDI has seen rapid growth,
which reflects the growth in these types of mixed signal designs.&lt;/p&gt;

&lt;p&gt;In the past couple of years, there have been a growing number of mixed signal
System on Chip (SoC) designs … very large, very complex designs that contain multiple
digital and analog components fully distributed throughout the chip. A &lt;i&gt;simple&lt;/i&gt; example of such a design is shown
in Figure 1.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;a href="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/McCrorie/MS_McCrorie.JPG"&gt;&lt;img src="https://www.cadence.com:443/Community/CSSharedFiles/blogs/di/McCrorie/MS_McCrorie.JPG" height="450" width="450" border="0" alt="" /&gt;&lt;/a&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Figure 1: Example mixed signal SoC design&lt;/p&gt;

&lt;p&gt;There are many additional design and methodology challenges associated with developing
this type of advanced mixed signal SoC chip, mostly related to size and functional
complexity. It all starts with early functional verification, where simulators
are challenged to simulate huge netlists over large timescales in order to
comprehensively validate that the design meets the functional specification.
The challenges continue through physical floorplanning, analog/digital/mixed
signal implementation and eventually design signoff prior to tapeout.&lt;/p&gt;

&lt;p&gt;Large designs mean that power management is critical, while fully
distributed analog and digital components force attention to noise management.
The advanced process technology, required to enable such large amounts of
functionality to be integrated onto the same die, forces even more attention on
design for manufacturing techniques, else low yields can be expected.&lt;/p&gt;

&lt;p&gt;These design challenges, plus industry predictions that practically every
design will be a mixed signal design in the not-too-distant future, are gaining
attention for obvious reasons.&lt;/p&gt;

&lt;p&gt;Cadence has already focused on all components within our mixed signal design
flows to ensure that such complex SoC designs can be efficiently designed. If
you are going to DAC, stop by our booth (#1334 in Hall B) and learn why the EDA
industry is positioning Cadence as a true leader in mixed signal.&lt;/p&gt;

&lt;p&gt;Pete McCrorie&lt;/p&gt;

&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=61702" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/mixed+signal/default.aspx">mixed signal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DAC/default.aspx">DAC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/mixed-signal/default.aspx">mixed-signal</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SoC/default.aspx">SoC</category></item><item><title>What you didn’t know about DFM for advanced node designs: “In-route” is insufficient </title><link>http://www.cadence.com/Community/blogs/di/archive/2010/05/14/what-you-didn-t-know-about-dfm-for-advanced-node-designs-in-route-is-insufficient.aspx</link><pubDate>Fri, 14 May 2010 20:21:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:62104</guid><dc:creator>mchacko</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=62104</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/05/14/what-you-didn-t-know-about-dfm-for-advanced-node-designs-in-route-is-insufficient.aspx#comments</comments><description>&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&lt;font size="2"&gt;Recently, there has been a lot of buzz about addressing DFM issues during routing. This is not a surprise as the &lt;span&gt;economics of increased development cost of advanced process nodes and manufacturing has influenced dramatic changes to business models of several semiconductor companies. Due to the increasing design cost and time-to-market pressure, a re-design or few weeks delay, because of poor yield for example, may mean the financial death of a project and the subsequent loss of market window opportunity.&lt;/span&gt;&lt;span&gt;At 45/40nm and advanced nodes, systematic variations are the greatest cause of catastrophic chip failures, and electrical issues related to timing, signal integrity and leakage power. Ideal-GDSII shapes (squares or rectangles) get converted into contours on silicon, irrespective of any post-tapeout manipulation of GDSII data. This is a leading cause of variability, leading to catastrophic and parametric failures. &lt;/span&gt;&lt;span&gt;Signoff DFM has been available since the 65nm node and several EDA vendors have litho hotspot analysis tools. At 40nm, signoff DFM has been made a mandatory part of the tapeout flow by several leading foundries. In this area, Cadence’s Litho Physical Analyzer (LPA) has been the first to qualify at the leading foundries and is the industry’s fastest lithography hotspot detection solution. By leveraging proprietary algorithms, and distributed processing, LPA has proven to deliver near-linear scalability with each additional CPU.&lt;/span&gt;&lt;span&gt;Model based litho hotspot detection is compute-intensive and depending on the type and complexity of the design the turnaround time can vary from few minutes to several hours. At Cadence, we integrated LPA with our flagship digital implementation solution – Encounter Digital Implementation System, at the 65nm node. While this was good, that is, signoff litho integration with implementation and leveraging a common database, the core problem remained – increased total design cycle time via iterative feedback loops from signoff to implementation. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;b&gt;The Challenge&lt;/b&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;How could we improve designers’ productivity and bring litho hotspot predictability in an incremental and convergent manner. Extreme care had to be taken such that by adding an additional DFM step during routing did not cause a big increase in turnaround time and thereby increase in design cycle time.&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;The Answer&lt;/b&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;At the advent of the 65nm node, we launched in Encounter Digital Implementation System the industry’s first &lt;b&gt;built-in litho prevention&lt;/b&gt;. In other words “&lt;b&gt;in-route&lt;/b&gt; prevention” built in to Nanoroute has been successfully used in numerous 65 - 40nm production tapeouts and helped reduce the number of potential litho hotpots during routing. The whole flow is invisible to users and the technology and intelligence was built into the router. Customers simply enabled litho prevention, followed by a signoff run for complete litho hotspot identification and fixing.&lt;/span&gt;&lt;span&gt;While “in-route” or “litho prevention” worked well for 65nm, and may be sufficient for some 40nm designs in eliminating a good chuck of the potential litho hotspots in a layout, the widening lithography manufacturing gap at 32/28nm leads to a dramatic increase in complexity. We have come to another point where existing technology (litho prevention or in-route DFM) is okay but not sufficient to enable designers with the best productivity ad predictability for their design flows.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;span&gt;At Cadence we have studied the growing lithography complexity problem and impact on design turnaround time and implemented yet another innovation in Encounter Digital Implementation System to help designers meet their design productivity and predictability goals. The goal is to help eliminate all potential litho hotspots during implementation and truly use signoff as a final verification step. I will explain the innovation in the Cadence approach in the coming weeks.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;span&gt;How are you managing DFM routing today? Let me know. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Manoj Chacko&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="font-family:arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=62104" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Manufacturability+Sign-off/default.aspx">Manufacturability Sign-off</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation+forums/default.aspx">Digital Implementation forums</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DRC/default.aspx">DRC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation/default.aspx">Encounter Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/design+rules/default.aspx">design rules</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DFM/default.aspx">DFM</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDA/default.aspx">EDA</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+Digital+Implementation+System+9.1/default.aspx">Encounter Digital Implementation System 9.1</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system+Encounter+Digital+Implementation+System/default.aspx">EDI system Encounter Digital Implementation System</category></item><item><title>Hands Up, Anyone Believe That Toyota's Problems Are All Physical?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/04/26/hands-up-anyone-believe-that-toyota-s-problems-are-all-physical.aspx</link><pubDate>Mon, 26 Apr 2010 17:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:60975</guid><dc:creator>PeteMc</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=60975</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/04/26/hands-up-anyone-believe-that-toyota-s-problems-are-all-physical.aspx#comments</comments><description>&lt;p&gt;In the past number of weeks/months we have all seen how Toyota has struggled to manage perception
around their &amp;quot;sudden acceleration&amp;quot; problems. The first fix that was
proposed was a replacement of the floor mats, under the argument that the mats
had been forcing the gas pedal down. Quickly following this first
&amp;quot;solution&amp;quot;, Toyota
announced that they were issuing a recall to fix the mechanics of the gas
pedal, adding a small spacer to prevent the pedal from getting physically
stuck.&lt;/p&gt;

&lt;p&gt;Even during the recall, there started to appear a number of people who were
stating that their pedal wasn&amp;#39;t physically stuck, and that they were unable to
turn off the engine or shift the car into neutral. The implication is that
while the physical fixes may have helped, there might be a more underlying problem
associated with the electronics.&lt;/p&gt;

&lt;p&gt;There are some good reference pages online (&lt;a href="http://www.frost.com/prod/servlet/market-insight-top.pag?docid=181455184" target="_blank"&gt;example
report&lt;/a&gt; from Frost &amp;amp; Sullivan) that show how the automotive industry is
expanding its use of integrated electronics.&lt;/p&gt;



&lt;p&gt;As far back as 2003, BMW announced that their 5- and 7-series cars already
had upwards of 100 microprocessors in them, to manage functions from engine
control to opening the windows, and unless designed very carefully, these
systems could fail a number of different ways. One failure mechanism is the
software itself getting locked in a tight loop ... who hasn&amp;#39;t had to force a
reboot on their computer to get it out of such a situation? Another failure
mechanism could come from some form of electrical interference, either in the
wiring harnesses or directly in the microprocessor and sensor chips.&lt;/p&gt;

&lt;p&gt;With safety as their #1 goal, automotive suppliers must perform rigorous
testing and validation to prove that their components are not going to fail
under some harsh conditions, including large operating temperature ranges, high
levels of humidity, varying voltages, electro-magnetic interferences,
mechanical stress ... the list is long.&lt;/p&gt;

&lt;p&gt;Specifically for the chips that are used in automotive systems, there is an
absolute requirement that they are validated to correctly operate under all
possible conditions and scenarios. What does this mean to the automotive chip
design team? Many weeks of simulations to ensure that the functionality is
operating correctly in all possible modes of operation, extended physical
verifications to ensure that the chips do not fail due to the high stress
environments that they execute in, and extended electrical checking to ensure
that timing, IR drop, electromigration, Joule heating, electro-static
discharge, latch-up, signal integrity and ... and ... and ..., are all fully
validated.&lt;/p&gt;

&lt;p&gt;EDA is a critical component of design, and so we must ensure that EDA tools
and functionality used to perform such comprehensive verifications and
validations continue to keep up with the ever-advancing chip design
requirements and the ever-increasing focus on safety.&lt;/p&gt;

&lt;p&gt;If you are interested in a similar viewpoint of the challenges of the automotive
industry, you might want to take a look at the &lt;a href="http://www.cadence.com/Community/blogs/ii/archive/2010/02/12/toyota-prius-2005-an-early-warning-about-verification.aspx" target="_blank"&gt;blog
from Richard Goering on the Toyota Prius&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Is there anyone from the automotive design industry that would like to give
us the views from the design team?&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Pete McCrorie&lt;/i&gt;&lt;/p&gt;



&lt;br /&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=60975" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/verification/default.aspx">verification</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/microprocessor/default.aspx">microprocessor</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/BMW/default.aspx">BMW</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/toyota/default.aspx">toyota</category></item><item><title>EDP Symposium Uncovers an Inconvenient Truth with a Shot of 3D</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/04/16/edp-symposium-uncovers-an-inconvenient-truth-with-a-shot-of-3d.aspx</link><pubDate>Fri, 16 Apr 2010 15:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:61368</guid><dc:creator>RahulD</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=61368</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/04/16/edp-symposium-uncovers-an-inconvenient-truth-with-a-shot-of-3d.aspx#comments</comments><description>Every April the leading edge of the leading edge of
semiconductor industry meet at the Electronic Design Process (EDP) Symposium to
address design problems that make design more difficult than it should be. This
was my first visit and chance to rub shoulders with the industry&amp;#39;s gurus and to
discuss the arc and future of EDA tools and the EDA industry.


&lt;p&gt;The nice thing about the EDP symposium (often referred to as the &amp;quot;secret DAC&amp;quot;) is that
it favors open discussions around presented papers. It is a sound mix of
academic and industrial research and experiences and the goal is to foresee
what the coming design problems might be and propose either solutions or
alternatives. This year, the programme included a
number of interesting topics including parallelism/cloud-computing for EDA,
high level design/ESL, and 3D ICs.&lt;/p&gt;

&lt;p&gt;I had the
privilege to present on 3D IC design - particularly the latest work/trends
around Through-Silicon Vias (TSV). For those of you that are new to this area,
here&amp;#39;s an interesting article that helps understand the foundational elements: &lt;a href="http://www.cadence.com/Community/blogs/di/archive/2010/03/29/My-DATE-With-3DIC-Technology.aspx"&gt;http://www.cadence.com/Community/blogs/di/archive/2010/03/29/My-DATE-With-3DIC-Technology.aspx&lt;/a&gt;.
The beauty and promise of this new technology is that it can inject a fresh
breath of air into the semiconductor industry and give life to a whole new world
of consumer end-applications. It can provide a huge paradigm shift to what can
be achieved in design performance, power, and form factor.&lt;/p&gt;

&lt;p&gt;The
inconvenient truth is that the semiconductor industry is at crossroads. The
cost of doing design in the traditional 2D methodology is getting exhorbitant.
For instance, designing at 32/28nm incurs 3-4X the cost of design at 45nm
(spanning fabrication costs, design costs, process and mask costs). Additional
manufacturing effects like lithography, chemical-mechanical polishing, stress,
and double-patterning are rendering the move to advanced process nodes
exceedingly difficult. To make matters worse, we get hit with a double-whammy
since the time-to-production on advanced process nodes has increased
significantly, and that takes its toll on the profit margins for the industry.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Rahul/TTP.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Rahul/TTP.jpg" width="538" border="0" height="380" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;And, this
is where the new 3D/TSV solution shows promise to be the panacea to the industry&amp;#39;s
ailments. The biggest benefit it offers is the flexibility of heterogeneous
integration. Designers no longer need to move the entire System-on-Chip (SoC)
to the latest process node, thus eliminating a lot of the risks, costs and
time-to-market delays. Design companies can choose to keep their analog,
full-custom and memory IP at the older, safer process nodes while they move the
aggressive CPU/GPU/digital logic to advanced process nodes. Essentially,
designers now get the best-of-both-worlds by mitigating the cost, complexity,
risk, and development time. And the end-result is smaller and faster and
lower-power.&lt;/p&gt;

&lt;p&gt;Thomas
Williams from Future Tech and Sungkyu Lim from Georgia Tech also talked about
3D/TSV in their presentations. An interesting way of looking at the cost
savings from 3D/TSV is the following: Let&amp;#39;s take a traditional methodology for
an SOC chip on a signle die with dimensions (L x L). The footprint/area of this
device would be L&lt;sup&gt;2&lt;/sup&gt; and the corner-to-corner distance would be 2L.
Now consider this chip to be implemented in 3D as a stack of 4 dies with each
die dimensions of (L/4 x L/4). The footprint/area of this device would be L&lt;sup&gt;2&lt;/sup&gt;/4
(one fourth of the original). The corner-to-corner distance would be much
smaller to the original as well (L + h, where h is the height of the
stack).&amp;nbsp; And this reduced area and corner-to-corner wire-length is what
effectively translates to significant benefits in performance and power for the
3D/TSV methodology.&lt;/p&gt;

&lt;p&gt;In the real
world, I see several semiconductor companies are now taping out real production
chips. Some of them are also using &amp;quot;Silicon Interposers&amp;quot; which are silicon
platforms with TSVs and enable different dies to be connected. It looks like
the light at the end of the tunnel is real, and not just a false hope. While
this technology and approach might not be for everybody (as was righly debated
at the EDP symposium), it is certainly is a differentiating strategy for the
select few semiconductor vendors who have embarked on this 3D/TSV path. &lt;/p&gt;

&lt;p&gt;Have you
looked at this 3D/TSV technology? What&amp;#39;s your take on it? &lt;/p&gt;

&lt;p&gt;&lt;i&gt;-Rahul
Deokar&lt;/i&gt;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=61368" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CSV/default.aspx">CSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3DIC/default.aspx">3DIC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DATE/default.aspx">DATE</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TSV/default.aspx">TSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/PoP/default.aspx">PoP</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/flip+chip/default.aspx">flip chip</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/stacked+die/default.aspx">stacked die</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/wirebond/default.aspx">wirebond</category></item><item><title>IR Drop Analysis: It's Not Really Necessary, Is It?</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/04/05/IR-Drop-Analysis_3A00_-It_2700_s-Not-Really-Necessary_2C00_-Is-It_3F00_.aspx</link><pubDate>Mon, 05 Apr 2010 18:25:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:60974</guid><dc:creator>PeteMc</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=60974</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/04/05/IR-Drop-Analysis_3A00_-It_2700_s-Not-Really-Necessary_2C00_-Is-It_3F00_.aspx#comments</comments><description>&lt;p&gt;I was recently asked by an engineering manager if running IR drop analysis was really necessary.  The argument to support his question was that his engineering team always over-designs the power rails, and so the risk of getting high IR drop was so small that analysis was not required.
&lt;/p&gt;
&lt;p&gt; 
The easiest way to answer his question was to relate what actually happened during the creation of a &lt;a href="http://www2.dac.com/" target="_blank"&gt;DAC&lt;/a&gt; demo a number of years ago.
&lt;/p&gt;
&lt;p&gt;  
The demo was designed to initially suffer from high IR drop in the center of the design, and the plan was to short the VDD of this region to a solid VDD, and hence fix the high IR drop. Figure 1 shows the initial IR drop analysis results, with the high IR drop in the center of the design. You can also see the solid VDD net just below the red region of IR drop.
&lt;/p&gt;&lt;p&gt;&amp;nbsp;

&lt;/p&gt;
&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/McCrorie/IR%20Drop%202.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/McCrorie/IR%20Drop%202.jpg" width="551" border="0" height="408" alt="" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Figure 1: Initial IR drop plot


&lt;p&gt;&amp;nbsp;&lt;br /&gt;While the added jumper did help reduce the highest IR drop in the center, it also enabled current to flow through a completely different path from the lower right boundary VDD I/O pad to the center of the design. This new path caused higher currents to flow around a memory, and resulted in new electromigration (EM) failures around the sense-amps of the memory. Figure 2 shows a zoomed in view of the lower right of the design, where you can see the added VDD jumper and the new EM failures.
 &lt;/p&gt;&lt;p&gt;&amp;nbsp;

&lt;/p&gt;
&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/McCrorie/VDD%20Jumper.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/McCrorie/VDD%20Jumper.jpg" width="550" border="0" height="408" alt="" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Figure 2: VDD jumper plus new EM problems in lower right memory


&lt;p&gt;&amp;nbsp;&lt;br /&gt;When we saw this result, it surprised everyone involved and we were all experts with many years of experience in both chip design and IR drop analysis. No-one could have predicted how the addition of a small jumper in the center of the design could have caused new EM problems towards the corner of the design.
 &lt;/p&gt;
&lt;p&gt;
That&amp;#39;s the reason why power rail analysis is required!
 &lt;/p&gt;
&lt;p&gt;
While we would like to believe that we can predict how current flows through the power network, in reality the current often flows unpredictably through multiple levels of interconnect and complex gridded power networks. It is the inability to predict how the current flows that forces the need for analysis.&amp;nbsp; How can you possibly over-design the power rails when you don&amp;#39;t know where, and how much, current is flowing though them?
  &lt;/p&gt;
&lt;p&gt;
Anyone have other thoughts on this?
   &lt;/p&gt;
&lt;p&gt;
Pete 
&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=60974" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EM+Failures/default.aspx">EM Failures</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/VDD/default.aspx">VDD</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/VDD+I_2F00_O/default.aspx">VDD I/O</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/IR+Drop/default.aspx">IR Drop</category></item><item><title>My DATE With 3DIC Technology</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/03/29/My-DATE-With-3DIC-Technology.aspx</link><pubDate>Tue, 30 Mar 2010 00:10:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:50427</guid><dc:creator>samtabansal</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=50427</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/03/29/My-DATE-With-3DIC-Technology.aspx#comments</comments><description>This year &lt;a href="http://www.date-conference.com/" target="_blank"&gt;DATE&lt;/a&gt; (Design, Automation and Test in Europe) was in snowy cold Dresden, Germany, March 8th-March 12&lt;sup&gt;th&lt;/sup&gt; and offered several 3DIC topics during the conference. I heard someone say &amp;quot;How did 3D with TSVs become hot from cold just so quickly?&amp;quot; In fact it did. Last year when I was following this technology I had found the design community to be hesitant in the feasibility of this technology in the beginning with lots of secretive projects in the pipeline. Suddenly by the end of last year, several IDMs, foundries, Cadence, and other EDA vendors were sharing methodologies and flows around 3D. There is now at least one discussion on this topic, at every industry conference, in various forms - panel, paper, etc. &lt;p&gt;For some of you who might be wondering what am I talking about let me share some background information: 3D is the stacking mechanism engineers have been using for several years to squeeze-in smaller package size to accommodate for smaller, denser electronic devices that consumers need and demand &amp;nbsp;(think cell phone, heart pace makers..tiny gadgets !!)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Samta_Bansal/Why%203D.png"&gt;&lt;/a&gt;&lt;p&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Samta_Bansal/Why%203D.jpg" width="550" border="0" height="157" alt="" /&gt;
&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;br /&gt;Added to that need of miniaturization is performance and density and that starts a trend called 3D TSV : It is a technology to stack chips on top of each other with a silicon layer in the middle with TSVs (Like Vias just too large) going between them. This helps performance, miniaturization and enables flexibility of combining Analog, RF, and Digital all on one package eliminating the need of wire bonding them down. Obviously as you may imagine this adds the complexity for the EDA tools to move from one dimension analysis to 3D knowledge.&lt;/p&gt;







&lt;a href="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Samta_Bansal/What%20is%20different%20with%20TSV.jpg"&gt;&lt;img src="http://www.cadence.com/Community/CSSharedFiles/blogs/di/Samta_Bansal/What%20is%20different%20with%20TSV.jpg" width="562" border="0" height="218" alt="" /&gt;&lt;/a&gt;







&lt;p&gt;&lt;br /&gt;Coming back to a more interesting topic - DATE in snowy Dresden, Germany.&amp;nbsp; DATE had 3 big 3D IC centric events - &lt;a href="http://www.date-conference.com/conference/date10-tutorial-D" target="_blank"&gt;3D tutorial&lt;/a&gt; session, 3D dinner event, and &lt;a href="http://www.date-conference.com/conference/date10-workshop-W5" target="_blank"&gt;3D Workshop&lt;/a&gt;.&amp;nbsp; I was able to attend the first and the last. I was pleasantly surprised to see two things: People&amp;#39;s interest on this topic and actually given the newness of 3D with TSV technology, its increasing adoption by customers. I have to say &amp;quot;It is here today and it is taking off sooner than expected&amp;quot;.&lt;/p&gt;&lt;p&gt;Both DATE 3D tutorial and Workshop had some good papers/presentations from EDA vendors and customers who have dared to be first in adopting 3D.&amp;nbsp; I noticed more sharing and more EDA players than last RTI conference I was in. From all the papers, talks, panels, keynotes one thing was clear that community is expecting EDA vendors to accelerate the tool development to support the growing 3D with TSV trend.&amp;nbsp; Apart from EDA vendors telling which part of the 3D flow they are enabling and helping out with, what also caught my attention are the questions that lingers around 3D : &lt;/p&gt;&lt;ul class="unIndentedList"&gt;&lt;li&gt;Ecosystem readiness : &lt;ul&gt;&lt;li&gt;Are Foundries ready? &lt;/li&gt;&lt;li&gt;What will the business model look like between OSAT and Foundry? &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Standards &lt;ul&gt;&lt;li&gt;Too many approaches (Via first, Via Last, Via Middle) today&lt;/li&gt;&lt;li&gt;How to do 3D test to answer questions on reliability and yield? (2 redundancy/4 redundancy approach, iJTAGs, KGD, TSV and Micro bump Fault modeling)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Cost of 3DICs with TSV vis-&amp;agrave;-vis moving to the next smaller geometry&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I think until and unless we find out the answers to the above, there will still be hesitation in the 3D wider adoption. In order for 3D TSV to really take off and become mainstream, I expect to see more close knit, open discussions and convergence on the above questions else it will remain just a niche technology !!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Samta&amp;nbsp; Bansal&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=50427" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/CSV/default.aspx">CSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/3DIC/default.aspx">3DIC</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/DATE/default.aspx">DATE</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TSV/default.aspx">TSV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/PoP/default.aspx">PoP</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/flip+chip/default.aspx">flip chip</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/stacked+die/default.aspx">stacked die</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/wirebond/default.aspx">wirebond</category></item><item><title>Signoff-Driven Implementation = Consistent and Convergent = Predictable and Efficient</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/03/10/signoff-driven-implementation-consistent-amp-convergent-predictable-amp-efficient.aspx</link><pubDate>Wed, 10 Mar 2010 17:38:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:26791</guid><dc:creator>mikeNaustin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=26791</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/03/10/signoff-driven-implementation-consistent-amp-convergent-predictable-amp-efficient.aspx#comments</comments><description>&lt;p&gt;Digital designs are reaching 10&amp;#39;s of millions of instances,
which makes efficiency of the overall digital implementation and signoff flow
critical to ensure predictability in the design schedule. &amp;nbsp;&amp;nbsp;A major
stumbling block that can be a real threat to that predictability is iterations
between different stages of the design flow. There are multiple reasons why
this happens but one that should not happen is because you have two design
stages giving you two different answers with the same set of data. 
&lt;/p&gt;
&lt;p&gt;The most common, and likely the most costly, is when your
implementation tool disagrees with your signoff analysis or extraction tool. At
this late stage in the design flow, fixes are costly and time consuming. Also,
how do you know which is right? Did your implementation tool miss something or
is your signoff tool too pessimistic? &lt;/p&gt;

&lt;p&gt;Adding margin to your implementation tool for timing or
power is one way to mitigate this problem but this can be costly in several
ways: &lt;/p&gt;

&lt;ul class="unIndentedList"&gt;&lt;li&gt;
Degrades
chip performance when timing margins are already tight&lt;/li&gt;&lt;li&gt;
Area
and power consumption will increase&lt;/li&gt;&lt;li&gt;
Makes
your optimization work longer and harder to close timing - major productivity
killer&lt;/li&gt;&lt;/ul&gt;







&lt;p&gt;The easy way around this dilemma is leverage high-precision
tools which use the signoff analysis and extraction engines to drive
implementation. This way your analysis results are consistent and convergent
throughout the flow and you don&amp;#39;t get any surprises at the end during signoff.
You can essentially catch problems early in the design process which makes them
much easier to fix. &lt;/p&gt;

&lt;p&gt;It&amp;#39;s for this exact reason that&amp;nbsp;Cadence has integrated
our signoff analysis and extraction technologies into our implementation
environment. Our production proven signoff technologies - &lt;a href="http://www.cadence.com/products/di/eps/Pages/default.aspx" target="_blank"&gt;Encounter Power
System&lt;/a&gt; for power analysis, &lt;a href="http://www.cadence.com/Community/controlpanel/blogs/Encounter%20Timing%20System" target="_blank"&gt;Encounter Timing System&lt;/a&gt; for timing and signal
integrity, and QRC for digital extraction are built-in the &lt;a href="http://www.cadence.com/products/di/edi_system/Pages/default.aspx" target="_blank"&gt;Encounter Digital
Implementation&lt;/a&gt; (EDI) System. Since we&amp;#39;ve done this, our users have seen some
major productivity benefits when using the complete solution.&lt;/p&gt;

&lt;p&gt;A bonus is that, with this integration, you can also signoff
during implementation if you like without going to a separate signoff tool. In
fact, we have many customers doing just that at 65nm and above where the number
of timing and power runs for signoff are much less. This eliminates the need to
re-run your timing and power analysis in a different session or tool. Also, it
allows the implementation environment to take immediate advantage of the latest
analysis capabilities such as advanced OCV, statistical timing, thermal
analysis, technology files, etc. to fix design problems instead of just finding
them.&lt;/p&gt;

&lt;p&gt;You may be wondering... will this slow me down if I&amp;#39;m using
signoff engines at every stage? Actually, in this case an ounce of prevention
saves you a ton of iterations. And, with the latest developments in mult-CPU
performance and capacity of our analysis and extraction solutions, the flow
stages are actually much faster. &lt;/p&gt;

&lt;p&gt;&lt;i&gt;In
short, you should always be doing implementation with signoff in mind so there
are no surprises. &amp;nbsp;Signoff-driven implementation = consistent &amp;amp;
convergent = predictable &amp;amp; efficient&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Mike Jacobs &lt;/p&gt;



&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=26791" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Signoff+Analysis/default.aspx">Signoff Analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/static+timing+analysis/default.aspx">static timing analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Early+Rail+Analysis/default.aspx">Early Rail Analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/dynamic+rail+analysis/default.aspx">dynamic rail analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/power+analysis/default.aspx">power analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/SI+analysis/default.aspx">SI analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/signal+integrity/default.aspx">signal integrity</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/noise+analysis/default.aspx">noise analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/timing+system/default.aspx">timing system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Multi-Core+and+Parallel+rocessing/default.aspx">Multi-Core and Parallel rocessing</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/timing+convergence/default.aspx">timing convergence</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Timing+Constraints/default.aspx">Timing Constraints</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Timing+analysis/default.aspx">Timing analysis</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Extraction/default.aspx">Extraction</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/OCV/default.aspx">OCV</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Statistical/default.aspx">Statistical</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/signoff/default.aspx">signoff</category></item><item><title>Encounter How To: Writing To/Reading From a File With TCL</title><link>http://www.cadence.com/Community/blogs/di/archive/2010/02/24/encounter-how-to-writing-to-reading-from-a-file-with-tcl.aspx</link><pubDate>Wed, 24 Feb 2010 15:20:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:25764</guid><dc:creator>BobD</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.cadence.com/Community/blogs/di/rsscomments.aspx?PostID=25764</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/di/archive/2010/02/24/encounter-how-to-writing-to-reading-from-a-file-with-tcl.aspx#comments</comments><description>&lt;p&gt;A couple weeks ago, there was &lt;a href="https://www.cadence.com:443/community/forums/T/14730.aspx" target="_blank"&gt;a good thread in the Digital Implementation Forums&lt;/a&gt; about managing buffering on nets between IOs and registers.&amp;nbsp; The post touched on a number of interesting topics, but one of the fundamental building blocks I&amp;#39;d like to expand upon in this blog entry is the fundamental task of writing to and reading from a file: File I/O.&lt;/p&gt;&lt;p&gt;It may seem like second nature for folks who use TCL-based tools like Encounter regularly, and it&amp;#39;s pretty much straight TCL that we use to write and read, but I hope having concise examples of how to do this within Encounter is a useful reference.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Reading From a File&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Say for example you received a list of nets in a file that needed to be routed on upper metal layers.&amp;nbsp; Here&amp;#39;s an example of how you would read from that file and use the &amp;quot;setAttribute&amp;quot; command to apply that routing constraint.&amp;nbsp; Say your file looked like this: &lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; critical.nets:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; n_5822&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; n_5828&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; n_5834&lt;/p&gt;&lt;p&gt;Here&amp;#39;s how we&amp;#39;d do it: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; set infile [open critical.nets &amp;quot;r&amp;quot;]&lt;br /&gt;&amp;nbsp;&amp;nbsp; while {[gets $infile line] &amp;gt;= 0} {&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; setAttribute -net $line -bottom_preferred_routing_layer 5&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close $infile&lt;/p&gt;&lt;p&gt;&lt;b&gt;Writing To A File&lt;/b&gt; &lt;/p&gt;&lt;p&gt;Say we wanted to capture a list of all of the nets in the design that are connected to IO pins?&amp;nbsp; Here&amp;#39;s how we could do it:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; set outfile [open io.nets &amp;quot;w&amp;quot;]&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach net [dbGet [dbGet -u top.terms.net].name] {&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; puts $outfile $net&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close $outfile&lt;/p&gt;&lt;p&gt;&lt;b&gt;Redirecting Command Output To A File&lt;/b&gt; &lt;/p&gt;&lt;p&gt;Another scenario that&amp;#39;s often useful is when we want to take command output that&amp;#39;s echoed to the console and redirect it to a file.&amp;nbsp; We can use the &amp;quot;redirect&amp;quot; command for this purpose. (Note: The command is not documented. This will be rectified in the next release.)&amp;nbsp; Say for example you wanted to parse the output of the verifyGeometry command to see whether there were any violations.&amp;nbsp; Here&amp;#39;s one way you could do it:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; redirect verifyGeometry &amp;gt; verifyGeometry.out&lt;br /&gt;&amp;nbsp;&amp;nbsp; set infile [open verifyGeometry.out &amp;quot;r&amp;quot;]&lt;br /&gt;&amp;nbsp;&amp;nbsp; while {[gets $infile line] &amp;gt;= 0} {&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; if {[string match *Verification* $line]} {&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; set nrViols [lindex $line 3]&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close $infile&lt;br /&gt;&amp;nbsp;&amp;nbsp; puts &amp;quot;verifyGeometry reported $nrViols violation(s)&amp;quot;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Tip: It&amp;#39;s much easier to use &amp;quot;dbGet top.markers&amp;quot; to see whether there are violations in the design after running verifyGeometry:&lt;br /&gt;encounter 1&amp;gt; dbGet top.markers&lt;/i&gt;&lt;br /&gt;&lt;i&gt;0x2aab94d740 0x2aab94d5f0&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Separately, some commands like report_timing support &amp;quot;&amp;gt;&amp;quot; and &amp;quot;&amp;gt;&amp;gt;&amp;quot; redirection.&amp;nbsp; For example:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; report_timing &amp;gt; timing.report&lt;/p&gt;&lt;p&gt;We&amp;#39;re looking to expand this easy &amp;quot;&amp;gt;&amp;quot; mechanism to include other commands in a future release.&lt;/p&gt;&lt;p&gt;I hope these examples are useful. Any related tips you&amp;#39;d like to share?&lt;/p&gt;&lt;p&gt;-Bob Dwyer&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=25764" width="1" height="1"&gt;</description><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Digital+Implementation/default.aspx">Digital Implementation</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/TCL/default.aspx">TCL</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/scripting/default.aspx">scripting</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/EDI+system/default.aspx">EDI system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Encounter+digital+Implementation+system/default.aspx">Encounter digital Implementation system</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Foundation+Flow+Design/default.aspx">Foundation Flow Design</category><category domain="http://www.cadence.com/Community/blogs/di/archive/tags/Closure/default.aspx">Closure</category></item></channel></rss>
