Plotting frequency with time...

Reuben,

Two ways:

1. Use the freq_meter component in ahdlLib - this is an accurate way of doing
it, because it forces breakpoints at the zero-crossings.

2. Use the code below (this is a solution on sourcelink now).

Load the code, and then use (abRegInstFreqSpecialFunction) to register
it. It will then show up as a special function in the calculator.

Enjoy,

Andrew.


/* abInstFreq.il

Author A.D.Beckett
Group Custom IC (UK), Cadence Design Systems Ltd.
Language SKILL
Date Apr 13, 2004
Modified
By

Plots instantaneous frequency.

If using spectre, you'll get a more accurate result using the
freq_meter in ahdlLib, but this should be sufficient for
many purposes.

***************************************************

SCCS Info: @(#) abInstFreq.il 04/13/04.16:10:56 1.1

*/

/***************************************************************
* *
* (abCreateInstFreqForm) *
* *
* Create the form for the calculator function *
* *
***************************************************************/

(procedure (abCreateInstFreqForm)
(let (start stop threshold edgeType)
(setq start (ahiCreateStringField
?name 'start
?prompt "Start Time"
?value "0"
))
(setq stop (ahiCreateStringField
?name 'stop
?prompt "Stop Time"
?value "0"
))
(setq threshold (ahiCreateStringField
?name 'threshold
?prompt "Threshold"
?value "0.0"
))
(setq edgeType (ahiCreateCyclicField
?name 'edgeType
?prompt "Edge Type"
?value "rising"
?choices '("rising" "falling")
))
(calCreateSpecialFunctionsForm
'abInstFreqForm
(list (list start 0:0 180:20 90)
(list stop 0:30 180:20 90)
(list threshold 0:60 180:20 90)
(list edgeType 0:90 180:20 90)
))
))

/********************************************************************
* *
* (abInstFreqSpecialFunctionCB) *
* *
* The callback function which actually creates the special function *
* *
********************************************************************/

(procedure (abInstFreqSpecialFunctionCB)
(calCreateSpecialFunction
?formSym 'abInstFreqForm
?formInitProc 'abCreateInstFreqForm
?formTitle "Instantaneous Frequency"
?formCallback
"calSpecialFunctionInput( 'abInstFreq '(start stop threshold edgeType))"
))

/***************************************************************
* *
* (abRegInstFreqSpecialFunction) *
* *
* Register the special function. Pass t as argument if you're *
* using 4.3.4. 4.4.X doesn't need this. *
* *
***************************************************************/

(procedure (abRegInstFreqSpecialFunction)
(calRegisterSpecialFunction
(list "instFreq..." 'abInstFreqSpecialFunctionCB))
t
)


/*****************************************************************
* *
* (abInstFreq waveform start stop threshold [edgeType]) *
* *
* Produce a waveform of instantaneous frequency versus time. Can *
* either be done on the positive or negative edges - and can be *
* clipped to just part of the waveform. *
* *
*****************************************************************/

(procedure (abInstFreq waveform start stop threshold @optional
(edgeType "rising"))
(cond
;---------------------------------------------------------------------
; Handle ordinary waveform
;---------------------------------------------------------------------
((drIsWaveform waveform)
(let (xVec len clipped crosses firstEdge period
outXVec outYVec)
(setq xVec (drGetWaveformXVec waveform))
(setq len (drVectorLength xVec))
;---------------------------------------------------------------
; if no start given (start less or equal to 0), use first time point
;---------------------------------------------------------------
(when (leqp start 0)
(setq start (drGetElem xVec 0)))
;---------------------------------------------------------------
; if no stop given (stop less or equal to 0), use last time point
;---------------------------------------------------------------
(when (leqp stop 0)
(setq stop (drGetElem xVec (sub1 len))))
;---------------------------------------------------------------
; cast everything to floats, just to make sure
;---------------------------------------------------------------
(setq start (float start))
(setq stop (float stop))
;---------------------------------------------------------------
; clip the waveform
;---------------------------------------------------------------
(setq clipped (clip waveform start stop))
;---------------------------------------------------------------
; Build the waveform
;---------------------------------------------------------------
(setq outXVec (drCreateVec 'double 1))
(setq outYVec (drCreateVec 'double 1))
;---------------------------------------------------------------
; And find the crossing points, and then convert them to
; instantaneous frequency
;---------------------------------------------------------------
(setq crosses (cross clipped threshold 0 edgeType))
(setq firstEdge (car crosses))
(foreach cross (cdr crosses)
(setq period (difference cross firstEdge))
(when (greaterp (abs period) 1.0e-37)
(drAddElem outXVec cross)
(drAddElem outYVec 1.0/period)
)
(setq firstEdge cross)
)
(drCreateWaveform outXVec outYVec)
))
(t
(error "abInstFreq - can't handle %L\n" waveform)
)
) ; cond
) ; procedure



On Wed, 16 Jun 2004 11:58:42 +0100, "R Wilcock" <reubenwilcock@hotmail.com>
wrote:

Hi all,

I was wondering if it is possible to plot the frequency of a waveform with
changing period using the calculator? For example if I want to evaluate the
performance of a VCO I would want to plot the voltage input against the
frequency output...

Any ideas?

Cheers,

Reuben
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
You could use the PSS to simulate it. If you use the tran and then use dft
to plot the freq. domain. It is okay too.


"aditya" <adityagarapati@hotmail.com> ???
news:512d5a9c.0406171949.2434b944@posting.google.com ???...
Hi,

I have a layout of a gilbertcell mixer and i have to verify its
functonality . I need to plot the frequency vs magnitude of the o/p
signal . How do I do it in Spectre. I used DFT function from the
calculator but not sure if the results are correct . I got a plot of
time vs magnitude when i plotted the DFT of my o/p . How do I get the
freq vs mag plot . Am I using the correct function for my problem?????
aditya
 
Hi,

1) Use Assura->MSPS, then backannotating to annotate
parasitics values as text on the schematic.

2) Modify the LVS rules file to include saveInterconnect() rules
for the layers you want to see in the extracted view.

hope this helps,

stéphane

Alex Gerdemann wrote:
I've created a schematic, done the layout with Layout XL, and then run
a parasitic extraction through Assura. This generates a bunch of
parasitic components which are displayed in a layout view. In this
view, my routing has all been eliminated (and the parasitic components
are tiny), so it is very difficult to figure out where the parasitic
elements are supposed to be connected. In the Analog Environment
window, I can then generate a netlist and do simulations. (I do this
by inserting the parasitic extracted view into the "switch view list"
set under Setup-Environment.) It would be nice to place the parasitic
components back in the schematic, so I can see where they are supposed
to go without pouring through a difficult to read netlist. Is this
possible? Alternatively, is there some way to change the display
settings in the layout editor so it's obvious where the parasitics are
connecting?

Thanks,

Alex Gerdemann
 
Hon Seng Phuah wrote:

try using
while( outputResult=ipcReadProcess(cid)
printf("%s" outputResult)
) ; while

alternatively define callbacks in ipcBeginProcess().


stéphane

Hi all,

I need some helps on getting an output result after executing
ipcBeginProcess command.

In my SKILL script, I have:

executeCommand = "runCommand"
cid = ipcBeginProcess(executeCommand "" nil nil nil "")
ipcWait(cid)
outputResult = ipcReadProcess(cid)
printf("%s" outputResult)

If I run "runCommand" command prompt, I get at least 20 lines. For the
above skill script, it only displays one line. For your information,
the runCommand is perl script and invokes a few CVS commands. If I
want to get all runCommand output result like command prompt, is there
any option for me to do it?

Thanks.

-HS Phuah
 
Hi vikas,
I am running a simple montecarlo simulation on two transistor on the
same schematic.When I use mismatch only option in MC tool,result does
not vary.For process variation thought it works.Even defining a
correlation between 2 transistor doesn'nt proudce different results.

Now as i searched out the solution is defining an inline subcircuit(or
some prametrized model inside subcircuit)and so so....
You need to have a monte carlo model (provided by your foundry) and to
actually use these models. In my case, the model libraries are
mcparams.scs (the actual MC parameters) and cmos53.scs. For the cmos53
library I have to set the section to be cmosmc so that the monte carlo
parameters are used - otherwise even if the mcparams.scs is in the model
library list then they aren't used.

Your equivalent to mcparams.scs will contain lines such as

parameters cj50=x.xxxxe-xx

as well as statistics sections with

vary cj50 dist=unif N=x.xxxxe-xx percent=no

You may need to look at your model files to find the exact section to set.

Hope this helps.

Cheers,

Roger
 
Alex Gerdemann wrote:

I've created a schematic, done the layout with Layout XL, and then run
a parasitic extraction through Assura. This generates a bunch of
parasitic components which are displayed in a layout view. In this
view, my routing has all been eliminated (and the parasitic components
The routing is simply not copied to the extracted view. If you own the
extract deck, this step is trivial

are tiny), so it is very difficult to figure out where the parasitic
elements are supposed to be connected. In the Analog Environment
It is possible to "scale up" the parasitic components ( but only if you
own the technology )

window, I can then generate a netlist and do simulations. (I do this
by inserting the parasitic extracted view into the "switch view list"
set under Setup-Environment.) It would be nice to place the parasitic

nice? clearly you do not get several thousand parasitics per net ...

components back in the schematic, so I can see where they are supposed
to go without pouring through a difficult to read netlist. Is this
possible? Alternatively, is there some way to change the display
settings in the layout editor so it's obvious where the parasitics are
connecting?
Try turning net display on in your extracted view. If your circuit is
small, and you only have a few
parasitics, this can sometimes be useful.

( but it would be great if this capability could also hide specific nets
like supplies !!!!)

Thanks,

Alex Gerdemann
 
That's interesting. I believe that Cadence doesn't like arrays that are
non-Manhattan, arrays where the elements are diagonal to each other instead
of offset by only X in one direction and Y in the other direction, i.e. 45
degree rotated arrays. I've never seen arrays like this though, and I don't
think a real design would have them. Can you send me an example of a GDSII
with arrays that Cadence doesn't understand? Maybe just a simple test case
with a small file that doesn't disclose any IP? I have a viewer that I
wrote, and I can extract the exact AREF data records and compare them to the
GDSII standard to see if they are legal. Just because other programs can
read these arrays doesn't mean that they adhere to the standard.

Oh, and I think the "Flying Cats" software you are talking about was a
product of Numerical Technologies, acquired by Synopsys. The website is now:
http://www.synopsys.com/products/ntimrg/cats_main_ds.html

Frank

"Dustin D." <dustin999whoop@yahoo.com> wrote in message
news:1306b50.0406191917.758001de@posting.google.com...
At my company we use the tool Flying Cats (I believe that's the name,
although I'm not very familiar with the tool) within our mask
engineering department to do data fracturing and preparation for
sending the GDSII data to the fab. One thing I've noticed in the data
Cats generates is that it attempts to simplify duplicate data by
creating arrays/mosaics. So when we use Cadence to dump out our final
GDSII to send off for final prep before going to the fab, the data is
read into Cats, simplified with these array structures, and dumped
back out as GDSII and sent to the fab.

The problem is, these array structures do not seem to integrate well
with Cadence. If I take a GDSII file that has been generated by Cats
and import the stream into Cadence, the arrays are completely messed
up. Sometimes the array has all of the structures stacked on top of
each other (i.e. an offset of 0), sometimes the array is extended in
the x-axis (as columns) when it should be in the y-axis (rows). Thus,
the data looks corrupted.

With the fabs we use, we haven't had any problems with corrupted data
related to this array situation screw up a set of waifers (yet). So
I'm assuming most tools used by the fabs can read the arrayed
structures from Cats just fine. But for whatever reason, Cadence and
the pipo streamin procedure doesn't translate the data properly. This
has set off alarms, as now many are concerned that our data is being
corrupted by Cats.

Does anyone know of any solutions to this, or has anyone seen this
same problem? It appears the data is useless for Cadence once it has
been touched by Cats because of this problem with translating the
data. The simple solution would be to force Cats to preserve the
GDSII and not convert to arrays, but according to our mask engineers,
this isn't possible.

I'm 99.9% sure it's a Cadence translation issue because we haven't had
any failed tapeouts due to this problem, and all of our data goes
through Cats as a last pass before going to the fab.

Any ideas?

Thanks,
Dustin

P.S. If responding by email, please respond directly to
dustin_atm_99@n-o_s-p-a-m.yahoo.com (note: remove the nospam part of
the address)
 
As I think I've outlined recently in this forum, there's a good paper on this
on http://www.designers-guide.com in the modelling section.

It talks about the methodology for modelling for monte carlo.

Here's the full URL to the paper:

http://www.designers-guide.com/Modeling/montecarlo.pdf

Regards,

Andrew.

On 18 Jun 2004 09:44:13 -0700, sharmav@cae.wisc.edu (vikas) wrote:

Thanks Roger,

I know the section which is "stats" in my case.When I do MC analysis
with Process variation only, it works(taking random values for
parameter and giving diferent results in each run),but when i do
mismatch only it gives the same results for each run.

Somewhere I found out that in order to do the mismatch(variation)
analysis in 'Spectre', I need to surround my circuit with a
parametrized model . Here I do'nt understand how to do this modelling.

I am using TSMC18rf mixed signal lib,and want to to do montecarlo
simulation for an RF front-end.

Do you also use spectre for MC?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Roger Light <roger.lightDOESNTLIKESPAM@nottingham.ac.uk> wrote in message news:<caucva$dsf$1@oyez.ccc.nottingham.ac.uk>...
Hi vikas,
I am running a simple montecarlo simulation on two transistor on the
same schematic.When I use mismatch only option in MC tool,result does
not vary.For process variation thought it works.Even defining a
correlation between 2 transistor doesn'nt proudce different results.

Now as i searched out the solution is defining an inline subcircuit(or
some prametrized model inside subcircuit)and so so....

You need to have a monte carlo model (provided by your foundry) and to
actually use these models. In my case, the model libraries are
mcparams.scs (the actual MC parameters) and cmos53.scs. For the cmos53
library I have to set the section to be cmosmc so that the monte carlo
parameters are used - otherwise even if the mcparams.scs is in the model
library list then they aren't used.

Your equivalent to mcparams.scs will contain lines such as

parameters cj50=x.xxxxe-xx

as well as statistics sections with

vary cj50 dist=unif N=x.xxxxe-xx percent=no

You may need to look at your model files to find the exact section to set.

Hope this helps.

Cheers,

Roger

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Regards,
--Vikas
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
Serkan wrote:

I have to connect one bit of a bus (ie foo<7:0>) to ground, but if I
directly connect it to a ground symbol it gives an error saying that
net foo<0> is shorted to gnd!.. For simulation purposes I can use a 1
ohm resistor, but now I have to draw the layout for the schematic, and
that resistor gives a big headache.. What is the formal way to do the
connection? (problem is merely at the schematic level, for the layout
I can simply connect it by a Metal 1 path)..
One possible solution is to connect each wire from bus to ground.
That’s mean you should apply for example gnd<0:7>
Another solution is to terminate it to a wire, instead of instance.
Look "Understanding Connectivity and Naming Conventions" part of the
"schematic composer user’s guide".

--
Regards, Alex.
 
Xuejun,

Monte-Carlo via the hspiceS interface does not use hspice's built-in monte-carlo
analysis, but instead uses cdsSpice as the random number generator (mostly for
historical reasons).

So adding parameters onto the tran line won't help you.

I don't believe it is possible to save the waveforms between runs with the
hspiceS monte-carlo interface. With the "spectre" interface, it uses the native
monte-carlo in the simulator, and that does allow waveforms to be saved (there's
a checkbox on the monte carlo form for doing this).

Andrew.

On 18 Jun 2004 07:32:02 -0700, xuejun_zhang2004@hotmail.com (Xuejun Zhang)
wrote:

Hello,

I am running MonteCarlo analysis in Cadence IC5032. The simulator I
use is hspiceS. The MonteCarlo simulation run well, but the simulation
result seems to be erased after each run. So is there some way I can
save the psf result of each run?

The second question:
In hspice you can just use the analysis statement to do the monte
carlo simulation, for example
.TRAN 1.0e-12 1.0e-8 START=0.0 MONTE=30
where Monte=30 means the hspice will run monte carlo simulation for 30
times.
So I manually edit analysis statement in the final netlist to the
example show above, and then manually run the "runHspice" in the
netlist directory. The hspice simulation run well, the psf data,
however, can only generate one waveform instead of 30 waveforms in
Analog DE. When I look into the size of the psf data, it do have size
of 30 times bigger than the non-montecarlo simulation, which indicates
the simulation results of all 30 monte carlo run are stored in the psf
file. But the analog DE could only view one of them.

Therefore, the question is how can view all waveforms of each monte
carlo run from the psf data?
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
you can get de generic process design kit (gpdk)
from cadence at pdk.cadence.com

meshgr@yahoo.co.uk wrote:
hello all,
i am new to this tool so please don't mind simple questions. i am
using IC 4.4.5. when i am selecting any device from analogLib and
netlisting & running in analog environment error appears that "
Instance M0/D0.. model file missing".
i know that there is a setup for model libraries in analog artist. but
the problem is where to find those files. we donot have design kit
like NCSU etc.


plese help.
bye
meshgr
 
the function you're looking for is
techBindTechfile()
and is documented in the technology file and display resource
file skill reference manual.

regards,
stéphane


Allan Nielsen wrote:

Hi

I'm new to SKILL and in one of my programs i need to create a new
library and attach the technologi file tsmc18rf to it.
Normaly I will just the command dbCreateLib but I down't know how to
attach the file

Allan Nielsen
 
There is no host list file. You set up a host list with a command,
probably called host_list.

To use LSF, you set the mode to batch. Check the dist commands.

/Jean Brouwers


In article <caetvl$acb$1@bagan.srce.hr>, Matko Bosnjak
<matko.bosnjakremovethis@fer.hr> wrote:

Hi

I need to get familiarized with cadence buildgates distributed
synthesis....to be precise, i need to run it....but i'm new in this
area.....(new with cadence in generally, i need to run the distributed
systhesis as a part of a seminar.....)

I know that the method of distribution can be host list or LSF Batch but i
couldn't find the specification of host list file nor i know how to use LSF
Batch (i don't know what it is actually), so could anyone explain me how to
make methods, or send me an example of host list file.


Thank you for your help...

Matko
 
Hi,

I just downloaded a new checkSysConf from sourcelink some days ago and there
seem to be full support for IC5.0.33 and LDV5.1 for RedHat 8.0.
You won't see that with the checkSysCOnf within the 5.0.33 releases ...

best regards

Ulrich

"Erik Wanta" <erikwanta@starband.net> schrieb im Newsbeitrag
news:84018314.0405261505.2948b99a@posting.google.com...
Terry:
I don't believe rh8 is officially supported for either ldv51 or
ic5033. I think rh8 will be officially supported by IC5141 and IUS53.

Note that I have been running ldv51 and ic5033 on rh8 for awhile and
have not seen any major issues.

In assura it crashes when I try to open the LVS error report. Has
anyone else seen this?
---
Erik

terrysin1978@yahoo.com.sg (Juvezio) wrote in message
news:<e97bfb76.0405251948.6e468bc3@posting.google.com>...
Is Cadence LDV 5.1 and IC 5033 run on REDHAT 8?
 
I have a program that calculates the top cell of a GDSII file along with
other information such as the number of cells, number of shapes, list of
layers, etc. What operating system do you want it for? I have it compiled
for MS Windows/PC and can probably compile it for other OSes.

Frank

"Manju Arasaiah" <manju@intersil.com> wrote in message
news:5070f848.0406250529.5f40921c@posting.google.com...
Is there any unix command or utility that gives out the topcellname
given a GDS2 file? I do not want to open any GUI.

Thanks, Manju
 
Try this free program "GdsDump" from Neanderthal Design.
It translate GDSII to human-readable text.
http://www.neander.com/GdsDump.html

=================
Kholdoun TORKI
http://cmp.imag.fr
==================

Manju Arasaiah wrote:

Is there any unix command or utility that gives out the topcellname
given a GDS2 file? I do not want to open any GUI.

Thanks, Manju
 
meshgr@yahoo.co.uk wrote:
hi,
we have a setup of three sun ultra 10 computers. /cadence is mounted
on all the three. every day in morning when we start we have to run
lmgrd on all the three systems to start cadence. can anyone tell me a
way so that we donot have to run lmgrd on each system every time we
switch-on?


thanks in advance.
Normally a startup script is placed in /etc/rc/rc3.d so start lmgrd at
boot time. This should be described in the Cadence administrators
documentation.

I am doing this from home and making this all up so expect an error or
three in the script
----------------
# /etc/rc/rc3.d/S99cadenceLicenses
# needs not checked, assumed available in init 3 mode
# needs /cadence automount complete
# needs user $CADENCELM to exist

# making LMBINPATH and the licese file local allows it to work
# even if network mounts fail. Also cadence would be a local user
# to avoid dependance on NIS

# who to run as
CADENCELM=cadence
# path to lincese binaries
LMBINPATH=/cadence/tools.sun4v/bin
# license file to server
LMLICFILE=/cadence/licenses/licenseA.dat
# log file
LMLOGFILE=/var/logs/cadenceLM.log

# path to other binaries might be needed if the license
# file does not specify the full path

PATH=${LMBINPATH}:$PATH
export PATH

# run lmgrd as user cadence, makes logfile owned by cadence
echo "Starting Cadence License Manager\n"
su $CADENCELM -c "$LMBINPATH/lmstart -c $LMLICFILE 2>>&1 $LMLOGFILE"
---------------

Lmgrd needs to run only on the actual license server that hosts the
liceneses. Do you have 3 sets of licenses (3 license files), each
license set bound to a separate host? That is a strange setup. Normally
1 machine would be designated as the licenses host and it would serve
out licenses to many individual machines. When you get more than 3
users, closer to 10 or more you can get away with fewer licenses than
end users as not everyone will be working at the same time.

Also I would look into using a new PC running linux and compare
simulation times VS the sun ultra 10's. Get a new $100 disc drive put it
in a spare PC install Linux and Cadence then point it to one of your
existing license servers. This should allow you to compare operation times.


-----
Shutting down and restarting a Sun everyday is a little unusual. Why not
just leave them running?
 
Because you have elected to have fault tolerant licensing. Fault tolerant
licensing has three license servers, whereas normal licensing just has a single
license server.

Andrew.

On 28 Jun 2004 02:44:05 -0700, meshgr@yahoo.co.uk wrote:

license file is something like ..
#
#
SERVER name1 80b0.. 5280
SERVER name2 80b1.. 5280
SERVER name3 80b2.. 5280

#
#
--- --- --- -- ---
/cadence partition is mounted on all the three systems. lmgrd is to be
run on all three to start cadence. can you suggest why is this so?
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
The boundary is not blue for everybody, so you better
state the 'rectangle on the such layer' rather
than the 'blue rectangle'. anyway.

My guess is that your prBoundary layer is not 'valid'
so just do in LSW 'Choose Valid Layers', then search for
this layer and check it. It will appear in LSW and you'll
be able to change it.

You can also make all layers valid if you do not know which
layer it is.

Hope this helps,
stéphane

dati_remo@libero.it wrote:

I can't change the boundary dimension (the blue rectangle) of a
standard cell after its creation.

What is the method in LayoutXL to do it?

Thanks
 

Welcome to EDABoard.com

Sponsor

Back
Top