I have one technolgy schematics,in that having mos's(p&n mos) and all the components like caps &resistors ,So i want to replace that mos's of old technology to new another technology mos's .
if it is possible to convert with SKILL scrips are not please let me know
Thanks in adavance
See the SKILL code in this post. If you need to call CDF callbacks after the change, you might also need abInvokeCdfCallbacks.il which is in this Designer's Guide post.
In reply to Andrew Beckett:
Thank you So much Andrew .
whatever u given it's working but I want scalling of mos widths& lengths by using one expression ,then how to write the expression
i want two expressions
1. for digital schematics length fine ,but width is same as W/L of old tech mos'es
2.for analog schematics length will change 1/sqrt(2) of old tech length and width is same as W/L of old tech mos'es
change in whatever you given fixit() skill script or other scrip required
procedure(fixIt(inst parName val) printf("Fixing %s on %s\n" parName inst~>name) ; double the value. Note evalstring is not really a good idea, ; just in case the parameter value is some legal SKILL which could do ; something unexpected (e.g. "exit()" !) sprintf(nil "%n" evalstring(val)*2) )
please help on this
Thanks in Advance
In reply to siva 234:
First of all you'll have to distinguish between analog and digital schematics - I don't know what criteria you use to determine which is which.
It's also not clear what you're actually trying to change - it doesn't make sense that a width would be the same as the old W/L (surely W/L will be dimensionless if you're dividing the width by the length).
Maybe you're just saying that for digital schematics you keep the W and L the same as before, but for analog schematics the length becomes the L/sqrt(2) and leaves the width the same?
If so, then it would be:
procedure(MyFixLength(inst parName val) if(MyIsAnalog(inst~>cellView) then aelSuffixNotation(cdfParseFloatString(val)/sqrt(2)) else val ))
Note I'm using cdfParseFloatString and aelSuffixNotation to avoid using evalstring and sprintf (the aelSuffixNotation will make the expression prettier).
You'd have to write MyIsAnalog() to take a cellView id to determine whether analog or digital.
And then you'd specify MyFixLength as the function call as the third argument for mapping the length in the config file.
andrew , what iam saying is
I divided old technology schematics into two libraries 1.digital library 2. analog librarey
I want to change only old tech width , old tech length is converted to new tech length(instance of new tech length like 40nm)
Eg: old tech w=100n L=60n
new tech w=x n L=40n ===>x=(w of old tech*(2/3)) keeping W/L constant in old &new technologies
so finallay i want expression is
old tech width * (2/3) =new tech width
old tech length =new tech length ( automatic change instrance of new tech what ever you given code :procedure(fixIt1(inst parName val ) printf("Fixing %s on %s\n" parName inst~>name) )
analog library: I want to chane length and width.
new tech width = old tech width * (3/4)
new tech length=old tech length * (1/sqrt(2))
Thanks for each quick replying of this issue.
Thanks in advance,
Isn't this just a matter of defining:
procedure(MyFixDigital(inst parName val) case(parName ("w" aelSuffixNotation(cdfParseFloatString(val)*2.0/3.0)) ("l" "40n") ))
procedure(MyFixAnalog(inst parName val) case(parName ("w" aelSuffixNotation(cdfParseFloatString(val)*3.0/4.0)) ("l" aelSuffixNotation(cdfParseFloatString(val)/sqrt(2))))
And then having two config files - one for your analog library conversion, and one for your digital library conversion. For the w and l parameters, you'd either reference MyFixDigital or MyFixAnalog - the above functions would take care of both w and l.
Are the parameters actually called "width" and "length" in the technology you're migrating to? If you rename "w" to "width" and the new technology doesn't use "width" but uses "w" (or some other parameter name) then it's hardly surprising that you get the default values.
The comments in the header of the code explain that the idea is that the params mapping allows you to cope with the fact that the parameter was called one thing in the old technology, but something else in the new. You need to find what the corresponding CDF parameters are called in the old and new technologies.
BTW Isn't ts018 a 0.18um technology? If so, does migrating the length to 40nm make sense?