• 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. How to change via level with skill in IC6

Stats

  • Locked Locked
  • Replies 31
  • Subscribers 148
  • Views 29599
  • 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

How to change via level with skill in IC6

Eric L14
Eric L14 over 14 years ago

 In IC6, I have a bindkey which change via level (via1 to via2) . Main part of the code is:

; Current selected via
viaToBeChanged=car(geGetSelSet())

; new via identifier
newVia=dbOpenCellViewByType( technName viaName "layout" nil "r")
if( newVia then
  viaToBeChanged~>master=newVia
)

Do you know how doing the same thing in IC6 ?

Thanks in advance

Eric

  • Cancel
  • Antonios
    Antonios over 12 years ago

    Let me try to be more explicit:

    We have created a layout migration flow which does the following:

    1. Migrates cdb2oa layouts

    2. Scans all the via instances and extracts their parameters i.e.: rows, cols, enclosures, space etc.

    3. Based on a via mapping table which maps the old viaDefs to the new ones, the script recreates the vias with dbCreateVia and assigns to them the extracted in step 2 properties. It is then erasing the old via instances.

    4. It re-compiles hierarchically the pcells.

    We have pcells which can instantiate or not several vias of the the available ones in the technology's viaDefs, based on a metal stack pcell variable.

    The issue is that these pcells are created in a different technology in which the vias where named differently. i.e the name of via 1 was "via1" in the previous technology while in the new one it is "V1". By replacing all "via1" by "V1" in step 3 renders our pcells non functional. We must recreate them from scratch.

    We were wondering if we could change the pcell definitions before recompiling them to account for the new via naming.

    We would like to avoid dumping in a text file the pcell definitions, parse them and reload them. We would prefer the rename the vias directly in the pcell db. Are there functions doing this?

     

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

    Are you using the -viamap argument to cdb2oa?

    BTW, pcell definitions are actually SKILL code - so theoretically you could dump the pcell code out, modify and then load it back in (which would effectively recompile it). Using something like dbDumpPcell() and then dbDefineProc to read back in the modified file. However, that would only work if the original pcell is flat - i.e. it doesn't do any via placement in sub-functions; if the original pcell was a "graphical" pcell, it would be flat - but if it was written in SKILL directly, you'd be best finding the source code and modifying it and recompiling.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • VaughnR
    VaughnR over 12 years ago

    Andrew and the Cadence online guys, I just wanted to say these forums are a tremendous help, thanks!

     

    I have two questions about the stdVia.

     

    1) I see the ViaVariant in the techfile I want to use. How do I instantiate it in my layout using skill? I have tried  dbCreateVia() but failed to get the variant to work.

     

    2) using skill how can I take a seleted set of "M2_M1" stdVias and make them "M3_M2" stdVias? It looks very difficult. Do I really have to delete the selected item and dbCreateVia() using the same XY and params just to change the cut layer?

     

    Regards

     

    Vaughn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Antonios
    Antonios over 12 years ago

    Dear Andrew,

    First of all I would also like to say that I agree with the thank you statement of Vaughn.

    Just to answer to you that we do not use -viamap in cdb2oa. We were not aware of that. I guess using it would simplify our scripts which currently search also among the regular design instance objects to extract the vias and translate them into stdvias objects. Usign -viamap I guess, would convert via instance objects to customVia objects which are more easily detectable and convertible to stdvias than instances.

    I would also like to add that as Vaughn  suggests in 2), it would be a great help if there was a skill function to transform a via object just by changing its viaDefName while preserving the remaining parameters thus avoiding to delete and dbCreateVia() of a clone of it.

    Best regards,

    Antonios

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

    First I'll reply to Vaughn.

    1. There's dbCreateStdViaVariant and dbCreateCustomViaVariant.
    2. Unfortunately not. One of the most commonly asked questions though - so I suggest you log a service request to ask for a clean way to remaster a via instance. I did find an existing CCR 751369 for this, but this is not planned to be implemented (at all) - it would need more customers asking for it to bring it back to life.

    And to Antonios.

    The viamap can directly map a via instance (they were instances in CDB) to either a customVia or a stdVia directly.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • VaughnR
    VaughnR over 12 years ago

    Andrew,

     

    Please point me to some kind of lesson or example of how to use stdVia and stdViaVariants. I am not understanding the relationship between  dbCreateStdViaVariant, dbCreateCustomViaVariant and dbCreateVia.

    From what I gather stdViaVariant is a temporary local definitions of the stdVia params? If so how do I impose this new definition onto an existing stdVia?

    What is the difference between using stdViaVariant or using the existing override param on an existing stdVia?

     

    Vaughn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Antonios
    Antonios over 12 years ago

    From the cdb2oa syntax description I understand the following:

    viamap file is a list of the CDB via cellview masters to be created in the new oa library. It is also stated that the translator adds a new oaCustomViaDef in the new oa library.

    viamap is misleading as name since it does not seem to do any mapping.

    In our migration flow (tech1->tech2) We still need to convert let's say Via1 name into V1 by the mean of i.e.: dbCreateStdViaVariant or dbCreateVia and extract all via parameters from Via1 to copy them into V1. We must then erase all Via1 vias since in the target technology there is not such viaDef and we do not have the right to create one. 

    Please correct me if I am wrong but I do not see any major difference between dbCreateVia  and dbCreateStdViaVariant if it is not for the way we pass via parameters such as via layer enclosures, space, viaDef etc.

    As for 2 it would be great if there was already a solution but we have already our custom solution developed as you described. There is no point for us filling in a CCR for this.

    Can you please let us know if there is a CCR filled in for a function doing what you have described in you post of 01-14-2013 1:15 PM of this thread and we asked in the previous post? I mean the via pcell migration function or something similar. If any we would like to have it as reference in case we fill in a similar CCR.

    Best regards,

    Antonios

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • VaughnR
    VaughnR over 12 years ago

     Andrew,

     I have having difficulty finding the proper format for the l_cutPattern. Which is a requirement for dbCreateStdViaVariant().

    Here is what I have so far.

      p, li { white

    dbCreateStdViaVariant(

       cvId

       "testViaVariant"

       "VIA1"

       '("VIA1" 0.064 0.064)

       '(1 1 (0.16 0.16))

       '(0.0 0.075)

       '(0.075 0.0)

       '(0.0 0.0)

       '(0.0 0.0)

       '(0.0 0.0)

       '(0.0 0.0)

       '(0.0 0.0)

       )

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

    A bit tricky here because we have two interleaved threads (I think it might be beyond my moderator skills to sort out the mess and separate them). So let me answer VaughnR's questions first, and then come back to Antonios.

    Firstly, some examples and more info in some solutions. This solution was created before dbCreateStdViaVariant was created (I think). And this solution talks about using dbCreateStdViaVariant.

    Personally I find the API for dbCreateStdViaVariant a bit odd. The idea of a viaVariant is that it is a variant of a normal via, but with particular values for rows and columns, enclosures, spacings etc. So it's like a template that you can reuse. From the create via form, you can save away a via variant, and then when you use it, you don't have the opportunity to change any of the parameters. With the API however, you have to specify all the parameters, so I can't see much point in using a viaVariant over the source via! I'm going to ask R&D about this. If dbCreateStdViaVariant had optional arguments after the  viaVariantName (or viaDefName) then I could understand it - but it doesn't - they're all required arguments.

    Now, for the cutPattern. I wrote some SKILL to do what you want - to encode the cut pattern for you.

    Regards,

    Andrew.

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

    Replying to Antonios - I don't know (I'd have to do a number of experiments with viamap to be sure). I also don't know whether there's a CCR to migrate pcells in the way you want (it wouldn't be very easy to automate, to be honest). I think going through customer support is the best bet for this, and then we can spend the appropriate amount of time on this (remember that I and various other Cadence folks do this forum in our spare time; spare time is a bit short at the moment!).

    Regards,

    Andrew.

     

    • 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