• 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. Automatically instantiate title block on new schematics

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 146
  • Views 16257
  • 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

Automatically instantiate title block on new schematics

mhowell67
mhowell67 over 13 years ago

I've seen SKILL that can go through a library and automatically add an instances to existing schematics but this is not the best solution for us due to our data management system and the need to checkout every schematic which can be disruptive. (That's a serious run-on sentence.)

Is there a way to automatically instantiate a specific library/cell/symbol in a new schematic?  We require that all our schematics have a title block but more often than not we (designers) forget to place it. Is is possible to "force the issue" through SKILL automation?  What I would like is that the enduser does nothing different; they simple create a new schematic like they normally do with the only change being that there is a title block instantiated automatically.

Hope my description is clear.

Regards,

 

 

  • Cancel
  • Quek
    Quek over 13 years ago

    Hi mhowell67

    Hope that the following script is what you need. : )


    procedure( CCSaddSchTitleCell(args)
       let( (cv title)
          cv=geGetWindowCellView()
          unless( dbFindAnyInstByName(cv "titleBlock")
             title=dbOpenCellViewByType("yourLib" "yourTitleCell" "symbol")
             dbCreateInst(cv title "titleBlock" 0:0 "R0")
             ;schCheck(cv) ;Uncomment this to do schematic check
             ;dbSave(cv) ;Uncomment this to save schematic
             printf("Added title block to schematic cell %s\n" cv~>cellName)
          ) ;unless
       ) ;let
    ) ;procedure


    deRegUserTriggers("schematic" nil nil 'CCSaddSchTitleCell)

    when( rexMatchp("virtuoso" getVersion())
       deRegUserTriggers("schematicXL" nil nil 'CCSaddSchTitleCell)
    ) ;when


    Best regards
    Quek

    addtitle.il
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • samung
    samung over 10 years ago

    Hello mhowell67, Quek,

    I am trying to implement your solution.

    However I would like to avoid editing the script file for every new library I create.
    Is there a mean to automatically load the script file at the virtuoso launch and to pass the "yourLib" argument automatically to the script ?

    Plus, how to map my existing titleBlock symbol pattern to the script which will replace the "cellName", the "libName" ... ?

    Thanks a lot for your help !

    P.

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

    Please read the forum guidelines where you are asked not to post to the end of an old thread (3 years + in this case).  

    Surely your title block comes from one (reference) library, so if you create new design libraries you do not need a new reference library containing a title block for each new design library? You can automate a certain amount, but how would Virtuoso "know" which library to point to?  If it is the same library as the current cellview comes from, then it is easy to obtain that information from the current cellview database object (e.g. cv~>libName).  The titleBlock cell has a fixed name and so this name needs to be put in the script somehow, whether it is the explicit name, or some rule for finding a title block cell based on cellview size (say) or some naming rules (e.g. use rexMatchp() or pcreMatchp() to find matching names to a name pattern).  Also, by the way, the solution uses geGetWindowCellView() - this is unnecessary since the cellview database ID can be obtained from the 'args' data structure that is passed in to the function (in this case it would be: args->viewId).

    Regards,

    Lawrence.

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

    Hello,

    I am succefully using the CCSaddSchTitleCell provided by Quek (thank you).

    procedure( CCSaddSchTitleCell(args)
    let( (cv title)
    cv=geGetWindowCellView()
    when(member(args->accessMode '("a" "w")) 
    unless( dbFindAnyInstByName(cv "titleBlock")
    title=dbOpenCellViewByType("myLib" "titleBlock" "symbol")
    dbCreateInst(cv title "T0" 1:2 "R0" 1)
    schCheck(cv)
    dbSave(cv)
    ) ;unless
    ) ;when
    ) ;let

    ) ;procedure

    To avoid netlisting of this titleBlock cell, I add a cdf param: "nlAction" with the value "ignore".

    When I instantiate the titleBlock manually, it is not netlisted (expected behaviour).

    Nevertheless when I instantiate the titleBlock automatically (with the previous procedure), it seems that the cdf is not took into account because the titleBlock remains netlisted. Then if I update manually (in the design) any property of the automatically inserted titleBlock, the block become not netlisted.

    Do yopu know why ? any workaround ?

    regards,

    Fabrice

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

    Hi Fabrice,

    Rather than adding a CDF parameter, open the symbol for the titleBlock, and do Edit->Properties->CellView (or whatever the cellVIew properties menu is called) and add a string property to the cellVIew with name nlAction, value "ignore".

    I suspect what you've done is add it as a CDF parameter with storeDefault=yes - and that will only be triggered to add an instance property nlAction=ignore when you explicitly place an instance with Create Instance. So rather than that, put the property on the placed master (the symbol view) and then it will always be picked up regardless of how the instance is placed.

    Regards,

    Andrew.

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

    Thanks Andrew,

    Indeed your analysis looks good. Nevertheless instade add the nlAction=ignore manually, can i automate it in the skill procedure ?

    regards,

    fabrice

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

    Hi Fabrice,

    Why would you need to add this automatically? You add it once to the title block cellView, and then provided the title block symbol is saved, it's valid for any user of the title block from then onwards.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fabriceBG
    fabriceBG over 10 years ago
    Andrew, this aproach is very efficient.thnks a lot for your help.regards,Fabrice
    • 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