The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Mar 28th, 2024, 2:21pm
Pages: 1
Send Topic Print
Technology translation (Read 26114 times)
Berti
Community Fellow
*****
Offline



Posts: 356

Technology translation
Jul 07th, 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
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: Technology translation
Reply #1 - 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.
Back to top
 
View Profile WWW   IP Logged
Berti
Community Fellow
*****
Offline



Posts: 356

Re: Technology translation
Reply #2 - Jul 12th, 2009, 10:26pm
 
Cool, thank you Andrew!!!
Back to top
 
 
View Profile   IP Logged
keyur
New Member
*
Offline



Posts: 3
United States
Re: Technology translation
Reply #3 - 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 !
Back to top
 
 
View Profile   IP Logged
Riad KACED
Community Member
***
Offline



Posts: 93
Swindon, UK
Re: Technology translation
Reply #4 - 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.
Back to top
 
 

Riad KACED
PDK, EDA Support Engineer.
View Profile   IP Logged
keyur
New Member
*
Offline



Posts: 3
United States
Re: Technology translation
Reply #5 - 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.
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: Technology translation
Reply #6 - 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.
Back to top
 
 
View Profile WWW   IP Logged
keyur
New Member
*
Offline



Posts: 3
United States
Re: Technology translation
Reply #7 - 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.
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: Technology translation
Reply #8 - 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.
Back to top
 
 
View Profile WWW   IP Logged
jackey
New Member
*
Offline



Posts: 2

Re: Technology translation
Reply #9 - Dec 14th, 2010, 1:13am
 
Who can explain how to use Andrew's attachment?

Many thanks!
Back to top
 
 
View Profile   IP Logged
jackey
New Member
*
Offline



Posts: 2

Re: Technology translation
Reply #10 - 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
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: Technology translation
Reply #11 - 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.
Back to top
 
 
View Profile WWW   IP Logged
please87
New Member
*
Offline



Posts: 2

Re: Technology translation
Reply #12 - 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.
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: Technology translation
Reply #13 - 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.
Back to top
 
 
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.