• 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 Design
  3. incremental techDB and constraintGroups

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 126
  • Views 15728
  • 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

incremental techDB and constraintGroups

marcelpreda
marcelpreda over 10 years ago

Hi *,

I'm trying to use the ITDB feature in Virtuoso 6.1.6 .

In a few word what I want:

I a base technology db, with some layers/vias, etc..

I want to reference that library and to add a new layer LXX, and to create a new via "cnt_LXX" using (Metal1, Contact, LXX).

The Metal1 and Contact are already defined in the base techdb.

I would like to have the the new cnt_LXX in the same constraint group "virtuosoDefaultSetup" which the activative one by default.

The idea is that when the layouter press "O" (Create->Via...) to have the list of vias all the initial vias plus the new created.

The problem is that in the new teck library I'm not allowed to use the same constraint group name "virtusosDefaultSetup".

When loading the new tech file (ASCII) I get error message

_____________

*WARNING* (TECH-2000000): techCreateConstraintGroup: Constraint group with name virtuosoDefaultSetup already exists.
*WARNING* (TECH-280190): Failed to create constraintGroup virtuosoDefaultSetup.
*WARNING* (TECH-280257): Failed to load technology file from file '..."

_______________

I can change teh name of the group to something like "virtuosoDefaultSetup_LXX" and then to switch the wire Constraint group via Options->Editor, but it is not nice (not productive for designers).

So the question is how can I have the old vias and new via in a common list/constraint which is loaded/set by default?

I have to admit I'm not very familiar with the tech file, but I've read some documents availale on virtuoso install path.

Below is a piece of code from tech file, teh layer definition and few other details were skip.

Best Regards,

Marcel

__________

refTechLibs( "my_baseTech")

;********************************
; VIADEFS
;********************************
viaDefs(

 standardViaDefs(
 ;( viaDefName    layer1    layer2    (cutLayer cutWidth cutHeight [resistancePerCut])
 ;   (cutRows    cutCol    (cutSpace))
 ;   (layer1Enc) (layer2Enc)    (layer1Offset)    (layer2Offset)    (origOffset)
 ;   [implant1     (implant1Enc)    [implant2    (implant2Enc) [well/substrate]]])
 ;( -------------------------------------------------------------------------- )

  ( cnt_LXX          LXX          Metal1          ("Contact" 0.17 0.17)        
     (1 1 (0.34 0.34))                                    
     (0.13 0.13)    (0.08 0.08)    (0.0 0.0)    (0.0 0.0)    (0.0 0.0)    
  )                                            
 ) ;standardViaDefs

) ;viaDefs

;********************************
; CONSTRAINT GROUPS
;********************************
constraintGroups(
  ( "virtuosoDefaultSetup" nil
    interconnect(
     ( validLayers   ( LXX
       ) )
     ( validVias     (
        cnt_LXX
     ) )
    ) ;interconnect
  )
 
 

  ( "DoubleVia" nil

    interconnect(
     ( validLayers   ( LXX
       ) )
     ( validVias     (
       cnt_LXX
       ) )
    ) ;interconnect

    )

  ( "virtuosoDefaultExtractorSetup"    nil

    interconnect(
     ( validLayers   (  
        LXX
    )) ;interconnect
    )
  ) ;virtuosoDefaultExtractorSetup


  ( "foundry"    nil


    orderedSpacings(
     ( minOppExtension               "LXXC_Mark"    "Contact"    (0.46 0.46) )
    ) ;orderedSpacings
) ;; foundry    

) ;constraintGroups

  • Cancel
  • theopaone
    theopaone over 10 years ago

    The virtuosoDefaultSetup is the default name for the router constraint group. With IncTechDB, a constraint group cannot be redefined. This prevents multiple problems when trying to merge the values.

    Create a new constraint group with a reference to virtuosoDefaultSetup. For the users, set their default constraint group to the new group using .cdsenv variable: wireConstraintGroup which governs the wire editor. If you need to affect the extractor, setup a constraint group for that and set the default constraint group using the env variable: setupConstraintGroup. That way, the users do not have to do anything.

    Ted

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 10 years ago

    Hi Ted,

    Thanks for hint.

    I've just tring using the memberConstraintGroup.

    Now the load/compile of new tech library goes OK, but I can not find the new via in any constraint group, except "foundry" .

    Using skill I get:

    l1 = lxGetValidViaDefs(cv "virtuosoDefaultSetup")
    (db:0x192b9598 db:0x192b9596 db:0x192b9597 db:0x192b9595 db:0x192b9594
        db:0x192b9593 db:0x192b9592 db:0x192b959c db:0x192b959d db:0x192b959a
        db:0x192b9599 db:0x192b959b
    )
    l2 = lxGetValidViaDefs(cv "virtuosoDefaultSetup_add_LXX")
    (db:0x192b9598 db:0x192b9596 db:0x192b9597 db:0x192b9595 db:0x192b9594
        db:0x192b9593 db:0x192b9592 db:0x192b959c db:0x192b959d db:0x192b959a
        db:0x192b9599 db:0x192b959b
    )
    l3 = lxGetValidViaDefs(cv "foundry")
    (db:0x192b9598 db:0x192b9597 db:0x192b9596 db:0x192b9595 db:0x192b9594
        db:0x192b9593 db:0x192b9592 db:0x192b959d db:0x192b959c db:0x192b9599
        db:0x192b959b db:0x192b959a db:0x192ba312
    )

    My tech file (viaDefs and constraintGroups section) is looking like:

    __________________

    ;********************************
    ; VIADEFS
    ;********************************
    viaDefs(

     standardViaDefs(
      ( cnt_LXX          LXX          Metal1          ("Contact" 0.18 0.18)        
         (1 1 (0.24 0.24))                                    
         (0.13 0.13)    (0.07 0.07)    (0.0 0.0)    (0.0 0.0)    (0.0 0.0)    
      )                                            
     ) ;standardViaDefs

    ) ;viaDefs

    ;********************************
    ; CONSTRAINT GROUPS
    ;********************************
    constraintGroups(
      ( "virtuosoDefaultSetup_add_LXX" t


        memberConstraintGroups( "virtuosoDefaultSetup" )

        interconnect(
         ( validLayers   ( LXX
           ) )
         ( validVias     (
         cnt_LXX
         ) )
        ) ;interconnect
      )
     
     

      ( "foundry"    nil


        orderedSpacings(
         ( minOppExtension               "LXXC_Mark"    "Contact"    (0.26 0.26) )
        ) ;orderedSpacings
    ) ;; foundry    

    ) ;constraintGroups
    _____________

    I've try also : "virtuosoDefaultSetup_add_LXX" t   ; I got the same result

    Did I miss some property somewhere ?

    BR,

    Marcel

    PostEdit: I've noticed that if I comment the line

    memberConstraintGroups( "virtuosoDefaultSetup" )

    the cnt_LXX via is visible in "virtuosoDefaultSetup_add_LXX" grop constraint, but I miss vias from "virtuosoDefaultSetup".

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 10 years ago

    Hi,

    Finally fixed.

    Insetad of memberConstraintGroups( "virtuosoDefaultSetup" ),

    I had to use list as parameter  memberConstraintGroups( ("virtuosoDefaultSetup") )


    I was expecting an error/warning in the 1st case.

    BR,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 10 years ago

    Hi again,

    I was wrong, still didn't work.

    And noticed that when I  use memberConstraintGroups( ("virtuosoDefaultSetup") ) , I get a warning in the CIW  

    *WARNING* (TECH-280193): Constraint group member name must be a string.

    BR,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 10 years ago

    Hi Ted,

    Any idea what is the proper syntax of memberConstraintGroups ?

    Is it memberConstraintGroups("group1" "group2") ,

    or memberConstraintGroups(("group1" "group2")) ?

    Why I'm asking this:

    I've simplify the things: I created two tech libs ( "myTech_base"  "myTech_flash"), and on the top on new techoptions.

    If I'm using the 1st syntax     memberConstraintGroups(  
            ("virtuosoDefaultSetup_base"
            "virtuosoDefaultSetup_flash")
        )


    I get the warning "*WARNING* (TECH-280193): Constraint group member name must be a string."

    But after that all seems to work, I can see all the vias that I wanted.

    If I'm using     memberConstraintGroups(  
            "virtuosoDefaultSetup_base"
            "virtuosoDefaultSetup_flash"
        )
    I get no warning, but only the vias from         "virtuosoDefaultSetup_base" are visible on the top.

    If I switch the lines  memberConstraintGroups(

       "virtuosoDefaultSetup_flash"
       "virtuosoDefaultSetup_base"
        )

    the only the vias from    "virtuosoDefaultSetup_flash" are visible on top

    On top I have now next code:

    controls(
        techVersion("1.0")
         refTechLibs(
        "myTech_base"
        "myTech_flash"
       ) ;refTechLibs
    )

    constraintGroups(
      ( "virtuosoDefaultSetup" t
        memberConstraintGroups(  
            ("virtuosoDefaultSetup_base"
            "virtuosoDefaultSetup_flash")
        )
      )
    ) ; constraintGroups
     
    which rise the warning, but I have all vias in the "virtuosoDefaultSetup".

    I've test it tens of time, every time restarting virtuoso; to be sure that I'm using a clean database.

    BR,

    Marcel

    • 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