• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Shrink cell view during migration

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 142
  • Views 16984
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Shrink cell view during migration

kbhow
kbhow over 16 years ago

Hi,

Is there a way to shrink the cell view to certain resolution.

I was doing process migration from 45 to 65nm. After migrating and mapping all the via, inst and devices, noticed that the devices in new technology was obviously smaller than original tech file. In the other hand, shapes such as polygon, rect, path will remain the same.

Is there a way to do the shrinking for a cell view?

 

Regards,

How

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 16 years ago
    How,

    Cadence has a tool, Virtuoso Layout Migrate, for doing precisely this sort of thing.

    Regards,

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi Adrew,

    Thanks for the reply. Where can i get the tools?

     

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

     Hi How,

    VLM (Virtuoso Layout Migrate) should be part of your IC tools installation, it is enabled by having the correct license.  If you install using a control file with InstallScape then it may not have installed tools that you do not have licenses for, but the IC5141 and IC61 releases do contain the VLM tool. The license feature to look for is "Virtuoso_Layout_Migrate", the name is the same for either release, but the version or release number in the license file will be either 5.1 or 6.1

    Hope this answers your question,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi,

    Yes. This answer my question but i doesn't have license for the tool. Sign...

    Can i change the env setting for DBUPerUU? Maybe i can use Xscale to scale the library and adjust for the change in DBUPerUU.

    Will this works?

     

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

    Hi How,

    You can certainly shrink or scale things this way but it is not likely to give you the result that you would hope for.  Consider something like the following, a metal path abutting to a metal pin shape:

      .-----.------
      |     |
      |     | -----
      |     |
      |_____|______
    

    Which is then shrunk or scaled, you might get the following:

      .---. .-----
      |   | | ----
      |___| |_____
    

    The shapes may no longer abut or connect because they have both shrunk or been scaled in place.  This is what VLM takes care of, moving things so that the relative placements stay as originally intended.  As you may realise, this is not a trivial operation, hence there is a tool for it (and of course other third-party tools exist too).

    I hope that this answers your question.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

    Look at my previous post online for the text "graphics" to look correct. The main point is that if shapes scale in place, shapes that were butted up to one another may no longer be touching.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi Lawrence,

    Thanks for the clear explanation.

    For your information, i was performing process migration from 45 to 65nm. Upon migrate, the devices on the new tech is much smaller than the original, but the path/rect and other polygons shapes are still remain the same. Any idea on how to shrink the polygon/rect/path with magnification without using Virtuoso Layout Migration Tool?

    Your advice is much appreciated. 

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 16 years ago

    You could just scale all the coordinates and attributes of the objects in the cellView. I have the code below (which is very old) which I've used for similar things in the past. You'd probably need to adapt it though, in particular if you've already sorted out the instances. It's not going to be easy though, and even then the results are probably not going to be design rule correct.

    /* abScale.il
    
    Author     A.D.Beckett
    Group      Structured Custom, Cadence Design Systems Ltd
    Machine    SUN
    Date       1995 
    Modified   
    By         
    
    Various scaling routines to aid change of DBUPerUU
    
    ***************************************************
    
    SCCS Info: @(#) abScale.il 11/20/08.15:26:20 1.1
    
    */
    
    /***************************************************************
    *                                                              *
    *                (abScaleNumber number factor)                 *
    *                                                              *
    *             Scale a number by the scale factor.              *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScaleNumber number factor)
      (times number factor))
    
    /***************************************************************
    *                                                              *
    *                     (abScalePoint point)                     *
    *                                                              *
    *  Scale a point. Note that it inherits the variable factor.   *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScalePoint point)
      (list (times (xCoord point) factor)
    	(times (yCoord point) factor)))
    
    /***************************************************************
    *                                                              *
    *               (abScalePointList points factor)               *
    *                                                              *
    *           Scale a list of points by a scale factor           *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScalePointList points factor)
      (mapcar 'abScalePoint points))
    
    /***************************************************************
    *                                                              *
    *                  (abScaleObject obj factor)                  *
    *                                                              *
    *              Scale an object by a scale factor               *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScaleObject obj factor)
      (case (dbGetq obj objType)
    	("arc" 
    	 (dbSetq obj (abScalePointList (dbGetq obj ellipseBBox) factor) ellipseBBox)
    	 )
    	("dot" 
    	 (dbSetq obj (abScaleNumber (dbGetq obj height) factor) height)
    	 (dbSetq obj (abScaleNumber (dbGetq obj width) factor) width)
    	 (dbSetq obj (abScalePoint (dbGetq obj xy)) xy)
    	 )
    	("donut" 
    	 (dbSetq obj (abScaleNumber (dbGetq obj outerRadius) factor) outerRadius)
    	 (dbSetq obj (abScaleNumber (dbGetq obj innerRadius) factor) innerRadius)
    	 (dbSetq obj (abScalePoint (dbGetq obj xy)) xy)
    	 )
    	("ellipse"
    	 (dbSetq obj (abScalePointList (dbGetq obj bBox) factor) bBox)
    	 )
    	("label" 
    	 (dbSetq obj (abScaleNumber (dbGetq obj height) factor) height)
    	 (dbSetq obj (abScalePoint (dbGetq obj xy)) xy)
    	 )
    	("line"
    	 (dbSetq obj (abScalePointList (dbGetq obj points) factor) points)
    	 )
    	("path"
    	 (dbSetq obj (abScalePointList (dbGetq obj points) factor) points)
    	 (dbSetq obj (abScaleNumber (dbGetq obj width) factor) width)
    	 (dbSetq obj (abScaleNumber (dbGetq obj beginExt) factor) beginExt)
    	 (dbSetq obj (abScaleNumber (dbGetq obj endExt) factor) endExt)
    	 )
    	("polygon"
    	 (dbSetq obj (abScalePointList (dbGetq obj points) factor) points)
    	 )
    	("rect"
    	 (dbSetq obj (abScalePointList (dbGetq obj bBox) factor) bBox)
    	 )
    	("mosaic"
    	 (dbSetq obj (abScalePoint (dbGetq obj xy)) xy)
    	 (dbSetq obj (abScaleNumber (dbGetq obj maxExtension) factor) maxExtension)
    	 (dbSetq obj (abScaleNumber (dbGetq obj uX) factor) uX)
    	 (dbSetq obj (abScaleNumber (dbGetq obj uY) factor) uY)
    	 )
    	("inst"
    	 (dbSetq obj (abScalePoint (dbGetq obj xy)) xy)
    	 )
    	))
    
    /***************************************************************
    *                                                              *
    *              (abScaleObjectList objList factor)              *
    *                                                              *
    *          scale a list of objects by a scale factor           *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScaleObjectList objList factor)
      (foreach object objList (abScaleObject object factor)))
    
    /***************************************************************
    *                                                              *
    *               (abScaleAllObjects view factor)                *
    *                                                              *
    *             scale all the objects in a cellview              *
    *                                                              *
    ***************************************************************/
    
    (procedure (abScaleAllObjects view factor)
      (abScaleObjectList (dbGetq view instances) factor)
      (abScaleObjectList (dbGetq view shapes) factor)
      (abScaleObjectList (dbGetq view mosaics) factor)
      )
    
    
    

    The argument to abScaleAllObjects is a cellView ID.

    Best Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi Andrew and Lawrence,

    Thanks a lot for all the solution and advice that provided to me. Let me try it out and feedback to you if i encountered any issue in making my flow run.

    Thanks =D

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi Andrew,

    Your script works well :). Amazing...

    But, it doesn't works on pathSeg (wire), where all wires are still maintain at its original shapes after shrinking.

    I added pathSeg in the case

    (

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information