• 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. lxGenFromSource - BUT ignore existing layout views and give...

Stats

  • Replies 11
  • Subscribers 148
  • Views 443
  • Members are here 0

lxGenFromSource - BUT ignore existing layout views and give me "flat" devices

vtboy51
vtboy51 6 days ago

I am using the lxGenFromSource in my SKILL routine to generate a layout view of my top level cellview (which has multiple sub-cells instantiated). As we all know if a layout view is found for any of the schematic sub-cells it will place that layout view and not generate "flat" devices. However, for my needs I would like to specify a temp library to generate the top level layout in, and NOT pull-in the existing layouts. 

My workaround has been to copy the schem/symbols into a temp lib and then run, but the copy is slow for larger designs.

  • Cancel
  • Sign in to reply
Parents
  • RobMan
    RobMan 5 days ago

    The schematic/layout binding initialisation is defined in the physConfig cellview. Follow these steps...

    Edit the physConfig, You will need to add at least one 'Physical stop Library'. Typically the pdk device lib (XL needs to know where to stop descending the hierarchy).

    Then select all the instnaces: RMB -> Set hierarchical force descend. Save CPH.

    Layout -> Generate From Source: Should result in all hierarchy expanded down to primitive devices.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • RobMan
    RobMan 5 days ago in reply to RobMan

    Also consider the Design Planning and Analysis flow...

    Virtuoso Design Planning and Analysis (IC25.1)

    Offers a more flexible approach to design planning.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 5 days ago in reply to RobMan

    In addition to Rob's suggestions, if this is all being done from SKILL, there are "cph" functions for setting force descend too...

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vtboy51
    vtboy51 5 days ago in reply to Andrew Beckett

    Yes, this is all being done inside my code so I'll look up the cph fuctions. Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vtboy51
    vtboy51 5 days ago in reply to Andrew Beckett

    I've read through lots of documentations and it seems I need to run the "cphSetCellForceDescend" command for each cell in my top level schematics hierarchy in order for it to not use the existing layout view, am I understanding this correctly? Next question, assuming I do need to run the command on each cell, will I need write permission in the schematics to modify this property (which would be a showstopper for my use case). 

    A bit more background in case it helps. I'm opening a top level schematic, graphically, and then running my code which calls the lxGenFromSource function. I need to generate every level of hierarchy (except std cells) flat so that I can do some area calculations. My hope was to define a stop library for the std cells vs. alter the props of every schematic.

    lxGenFromSource(cv
    ?layLibName layoutLibName ;LAYOUT LIB NAME
    ?layCellName layoutCellName ;LAYOUT CELL NAME
    ?layViewName layoutViewName ;LAYOUT VIEW NAME
    ?configLib layoutLibName
    ?configCell layoutCellName
    ?configView layoutViewName
    ?initDoStacking "t" ;AUTO ABUT MOS INTO CHAIN
    ?initCreateInstances t ;GEN ALL INSTANCES IN SCH W/O IGNORE PROP
    ?lxGenerateInBoundary t ;GEN INSIDE BOUNDARY SHAPE
    ?lxPositionMinSep 20 ;DEVICE SEPERATION IS IMPORTANT BECAUSE I OVERSIZE SOME LAYERS BELOW, IF FETS ARE TO CLOSE IT WILL MERGE AND IMPACT AREA ACCURACY.
    ?initAreaSource1 "Utilization"
    ?initAreaSource1Val 100.0
    ?initAreaSource2 "AspectRatio"
    ?initAreaSource2Val 1.0
    ?extractAfterGenerateAll nil
    ?ignoreSchematicCheck t
    ;?extractSchematic nil
    );end lxGenFromSource

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • vtboy51
    vtboy51 5 days ago in reply to Andrew Beckett

    I've read through lots of documentations and it seems I need to run the "cphSetCellForceDescend" command for each cell in my top level schematics hierarchy in order for it to not use the existing layout view, am I understanding this correctly? Next question, assuming I do need to run the command on each cell, will I need write permission in the schematics to modify this property (which would be a showstopper for my use case). 

    A bit more background in case it helps. I'm opening a top level schematic, graphically, and then running my code which calls the lxGenFromSource function. I need to generate every level of hierarchy (except std cells) flat so that I can do some area calculations. My hope was to define a stop library for the std cells vs. alter the props of every schematic.

    lxGenFromSource(cv
    ?layLibName layoutLibName ;LAYOUT LIB NAME
    ?layCellName layoutCellName ;LAYOUT CELL NAME
    ?layViewName layoutViewName ;LAYOUT VIEW NAME
    ?configLib layoutLibName
    ?configCell layoutCellName
    ?configView layoutViewName
    ?initDoStacking "t" ;AUTO ABUT MOS INTO CHAIN
    ?initCreateInstances t ;GEN ALL INSTANCES IN SCH W/O IGNORE PROP
    ?lxGenerateInBoundary t ;GEN INSIDE BOUNDARY SHAPE
    ?lxPositionMinSep 20 ;DEVICE SEPERATION IS IMPORTANT BECAUSE I OVERSIZE SOME LAYERS BELOW, IF FETS ARE TO CLOSE IT WILL MERGE AND IMPACT AREA ACCURACY.
    ?initAreaSource1 "Utilization"
    ?initAreaSource1Val 100.0
    ?initAreaSource2 "AspectRatio"
    ?initAreaSource2Val 1.0
    ?extractAfterGenerateAll nil
    ?ignoreSchematicCheck t
    ;?extractSchematic nil
    );end lxGenFromSource

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett 5 days ago in reply to vtboy51

    No, the schematic does not get touched. You'd need write access to a physConfig view to do this.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vtboy51
    vtboy51 5 days ago in reply to Andrew Beckett

    Thanks. Because I can't guarantee write access to even the library, I'll switch gears and do a hierarchal copy into a temp lib, minus the layout views, and then run the GenFromSource. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 5 days ago in reply to vtboy51

    So how are you going to generate the layout? The physConfig view can be wherever the layout is.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vtboy51
    vtboy51 5 days ago in reply to Andrew Beckett

    I would create a temp lib and specify it with ?layLibName flag so it writes the new layout there and not inside the read only schematic library. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 5 days ago in reply to vtboy51

    OK, so the physConfig could go in the same temp lib.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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.

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

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