The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Other CAD Tools >> Entry Tools >> Technology translation
https://designers-guide.org/forum/YaBB.pl?num=1246969676

Message started by Berti on Jul 7th, 2009, 5:27am

Title: Technology translation
Post by Berti on Jul 7th, 2009, 5:27am

Hi all,

I need to translate a schematic from a technology into another. Is there a easy way to do that instead of search and replacing all the devices by hand? How can I read a cadence schematic (skill functions?)
(btw: The devices have different parameters which also need to be adjusted).

Thanks for advises!
Cheers

Title: Re: Technology translation
Post by Andrew Beckett on Jul 10th, 2009, 7:10am

The SKILL code in the attached gzipped tar file should help.

This contains:

abConvertComponentParams.il
abInvokeCdfCallbacks.il

The first is the code which does the work. There are comments at the top which explain how to define the config file to control the mapping.
The second is a general function for calling CDF callbacks.

Regards,

Andrew.

Title: Re: Technology translation
Post by Berti on Jul 12th, 2009, 10:26pm

Cool, thank you Andrew!!!

Title: Re: Technology translation
Post by keyur on Aug 24th, 2009, 8:42am

Hello,
Thanks for the script. I am newbie in SKILL, and I haven't entirely got how to use these scripts for technology translation. I have to translate all my 0.6um(AMI06) designs to 0.18um(NCSU_Techlib_tsmc02) technology. I am not getting how to specify the "conv.config" file. Can anyone guide me how to write the "conv.config" file. This is how I wrote the conv.config file, but didn't work.

(
 (nil
  fromLib   "test1"
  fromCell  "inverter"
  toLib     "test2"
  toCell    "inverter"
  runCallbacks t
  params (
        ("w" "width")
        ("l" "length")
        )  
  )  
)

Please help me. Thanks !

Title: Re: Technology translation
Post by Riad KACED on Aug 24th, 2009, 10:30am

Hi Keyur,

What do you mean by it didn't work ?
You must load the files provided by Andrew and then run the function.
Anyway, please post the errors you had when running this Skill. This would help Andrew and us to help you moving forward.
BTW, the following forum is good to catch up on your Skill skills ...
http://groups.google.com/group/comp.cad.cadence/topics

Cheers  :)
Riad.

Title: Re: Technology translation
Post by keyur on Aug 24th, 2009, 11:00am

I loaded the file and then I called the function abConvertComponents(conv.config), and then I see a "NIL" in the CIW. And nothing is created in the new library where I am trying to have all my new 0.18um designs. Please help.

Title: Re: Technology translation
Post by Andrew Beckett on Aug 25th, 2009, 9:25am

I think you've misunderstood the configuration file. You have it set to convert instances of test1/inverter to test2/inverter. I assume you actually want to convert transistors and resistors and so on? The configuration file specifies the mapping of the devices, and then this is applied to the design in the current window.

Regards,

Andrew.

Title: Re: Technology translation
Post by keyur on Aug 26th, 2009, 7:54am

yes I want to convert transistors and resistors in the design. I am not entirely clear with what are you saying. Can you elaborate a little bit?

Thanks a lot.

Title: Re: Technology translation
Post by Andrew Beckett on Sep 1st, 2009, 6:10am

Keyur,

In your post you had:


keyur wrote on Aug 24th, 2009, 8:42am:
Hello,
(
 (nil
  fromLib   "test1"
  fromCell  "inverter"
  toLib     "test2"
  toCell    "inverter"
  runCallbacks t
  params (
        ("w" "width")
        ("l" "length")
        )  
  )  
)


This is stating that you want to change all instances of test1/inverter to test2/inverter in your current design. If you are trying to change the transistors, it's more likely to be:


Code:
(
 (nil
  fromLib   "gpdk090"
  fromCell  "nmos2v"
  toLib     "newpdk"
  toCell    "nch"
  runCallbacks t
  params (
        ("w" "width")
        ("l" "length" fixIt)
        )
  addProps (
          ("isnoisy" t)
          )
  )
 (nil
  fromLib   "gpdk090"
  fromCell  "pmos2v"
  toLib     "newpdk"
  toCell    "nch"
  propMatch (("subtype" "pxyz"))
  runCallbacks (?useInstCDF t ?callInitProc t)
  params (
        ("w" "width")
        ("l" "length")
        )
  )
)


etc. In other words, one entry per transistor (and other primitive devices) in the old PDK mapping to the new PDK (forget the parameters above - these were just examples).

You then run the conversion tool on the design open in the current window - it will search for all the devices which appear in the configuration f ile, and map them to the "toLib/toCell" components.

Is that clearer?

Regards,

Andrew.

Title: Re: Technology translation
Post by jackey on Dec 14th, 2010, 1:13am

Who can explain how to use Andrew's attachment?

Many thanks!

Title: Re: Technology translation
Post by jackey on Dec 15th, 2010, 11:23pm

who can tell me how to do step by step? I'm a freshman on skilllanguage. And I want to replace the cell  "rpod3x" to "rpod5x", and make the callback run.

Many thanks.


Jackey

Title: Re: Technology translation
Post by Andrew Beckett on Jan 2nd, 2011, 11:53am

The comments at the top of the code, together with the example config files, ought to make it clear enough, I'd have thought? The idea is that the config describes what you're mapping from and to, and then you need to have runCallbacks set as in some of the previous examples.

Have you got a config file? If so, please post it here.

Andrew.

Title: Re: Technology translation
Post by please87 on Aug 20th, 2016, 9:13am

Hello all,
Sorry for entering an old post.
I use Andrew's script without any problem in the 'Edit Object Properties'. However, there is a difference while doing netlist:
Some dependent properties is not reflected.

My case is, if 'finger width' and 'number of fingers' are entered, 'drain diffusion area' (and other dependent properties as well) will be automatically calculated differently in two different pdk.
After I run the callback function, the string value in the 'Edit Object Properties' is displayed correctly, yet the actual value is still the one from the old pdk.

Is anyone can solve this problem? Many thanks.

Title: Re: Technology translation
Post by Andrew Beckett on Dec 29th, 2016, 2:04am

Sorry for the late reply - possibly too late for you, but maybe will help somebody else who finds this (I've not been looking at this forum for a while due to being stupidly busy with my day job). Generally this suggests that either a callback failed, or that you're not calling all the relevant callbacks.

What I normally do when debugging such things is to first start off by looking in the simulation information for the netlister in question for that cell's CDF, and seeing what CDF parameters it netlists (take note of the propMapping too in case the names are mapped during netlisting). Then look on the instance (using foreach(mapcar prop car(geGetSelSet())~>prop list(prop~>name prop~>value)) - this will output the name-value pairs actually stored on the instance - any value not stored on the instance would come from the CDF default). Check the property that is being incorrectly output.

Then try modifying a value on the edit properties form, and seeing if the derived parameter is being updated.

Try calling the callbacks with my code with the ?debug t argument to give some indication as to what functions are being called (you could call abInvokeInstCdfCallbacks (I think that's the function)) to check it just for a single instance.

Normally with a bit of poking around like this, the problem becomes apparent. Maybe  you need to call with the option to call the formInitProc first?

Regards,

Andrew.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.