Interesting observation on awd

Guest
Hi,

awd has the feature of horizontal and vertical markers. These are
extremely useful, sometimes more useful as the A and B markers as I
can have the intersect points printed.

I have observed that the vertical markers are always available. The
horisontal markers are sometimes grayed out. This is probably because
it would make no sense to place a horizontal marker, like when more
than one y-axis are used. (May be expeptions, though).

I mostly declare my plots as expressions fetched from the calculator
as I want to use dB20 and phase functions, and at the same time be
able to use the plot button in ADE.

In an attempt to plot three different open-loop simulations I
discovered that when adding two subwindows and moving graphs so that I
had the three simulations separate, I was able to place horizontal
markers in the two added windows, but not in the original one. I added
a fourth subwindow, moved the ones in the *expressions* window there
and was then suddenly able to add horizontal markers. I could then
delete the empty *expressions* window and place horizontal and
vertical markers in all windows.

Why fussing with the markers at all? I find it extremely convenient to
place horizontal markers at 0dB to find the unity gain frequency with
display intercept values. (Sometimes awd also forget the 0 value on
the y-axis annotation depending on range on the y-axis. Indeed a bug
in my opinion.) Then I place a vertical marker at that frequency to
find the phase margine. I can then go on and place a horizontal marker
at -180 deg to find the frequency where my circuit become positive
feedback, and then place a marker to find the gain margine. Get the
intercept values, add those numbers as annotations and, voila, the
documentation of the work is finished.

PM and GM can all be found with the calculator, and is an alternative
way to find the frequencies at which I place my markers. I find it
more convenient to have the markers in the plot as I can easily see
what is going on just before and just after the critical points. PM
and GM calculated from the calculator are just numbers. (Another thing
is that when you have to work with CDE, you would like to do as much
work in windows that pop up by themselves, the calculator is always on
the bottom....)

Now I have given a rationale why I do it this way, and maybe somebody
can tell me why the original *expressions* window does not allow
horizontal markers when it actually should have.

Kind regards,
--
Svenn
 
It is generally speaking difficult to do things post-process. You either have
to carefully define your outputs, choose a specific spectre analysis (S, PZ, or
stability in your case ) or write your postprocessing in ocean.

Anyway, there is enough that can be done with awv when you get to know it a bit.
There is one thing I would still like to learn: how to you group multiple waves
into a family. And a related one: how to generate a customised ROF after ocean runs.

Did you try the new waveform viewer too ("wavescan" if I remember) ?

I use these to help me build my X vector:

(defmacro cfor (initExpr testExpr incrExpr @rest bodyExprs)
`(let ((l_return nil))
,initExpr
(while ,testExpr
,@bodyExprs
l_return=tconc(l_return ,incrExpr )
);while
car(l_return)
);let
);mac
procedure(as(start stop step)
cfor(i=start-step i<stop i=i+step i) )
procedure(an(start stop numpoints) let( ( (step 1.0*(stop-start)/numpoints) )
as(start stop step) ) )
procedure(gs(start stop ratio)
cfor(i=start/ratio i<stop i=i*ratio i) )
procedure(gn(start stop numpoints) let( ( (ratio
1.0*exp((ln(stop)-ln(start))/numpoints)) )
gs(start stop ratio) ))
procedure(en(start stop numpoints) let( ( (ratio
1.0*exp((ln(10)-ln(1))/numpoints)) )
gs(start stop ratio) ))

/* example */
w1=expr(x sin(x)/x an(1p 15 10000))
w2=w1+flip(w1)-1
wi2=iinteg(w2)
wf1=dB20(dft(w2 -15 15 4096))
wif1=dB20(dft(wi2 -15 15 4096))

plotwin=newWindow()
plot(w2 ?expr '("sin(x)/x" ))
plot(wi2 ?expr '("sum[sin(x)/x]" ))
awvSetDisplayMode(plotwin "strip")
awvAddSubwindow(plotwin)
awvSetCurrentSubwindow(plotwin 2)
awvSetDisplayMode(plotwin "strip")
plot(wf1) plot(wif1)


svenn.are@bjerkem.de wrote:
Hi,

awd has the feature of horizontal and vertical markers. These are
extremely useful, sometimes more useful as the A and B markers as I
can have the intersect points printed.

I have observed that the vertical markers are always available. The
horisontal markers are sometimes grayed out. This is probably because
it would make no sense to place a horizontal marker, like when more
than one y-axis are used. (May be expeptions, though).

I mostly declare my plots as expressions fetched from the calculator
as I want to use dB20 and phase functions, and at the same time be
able to use the plot button in ADE.

In an attempt to plot three different open-loop simulations I
discovered that when adding two subwindows and moving graphs so that I
had the three simulations separate, I was able to place horizontal
markers in the two added windows, but not in the original one. I added
a fourth subwindow, moved the ones in the *expressions* window there
and was then suddenly able to add horizontal markers. I could then
delete the empty *expressions* window and place horizontal and
vertical markers in all windows.

Why fussing with the markers at all? I find it extremely convenient to
place horizontal markers at 0dB to find the unity gain frequency with
display intercept values. (Sometimes awd also forget the 0 value on
the y-axis annotation depending on range on the y-axis. Indeed a bug
in my opinion.) Then I place a vertical marker at that frequency to
find the phase margine. I can then go on and place a horizontal marker
at -180 deg to find the frequency where my circuit become positive
feedback, and then place a marker to find the gain margine. Get the
intercept values, add those numbers as annotations and, voila, the
documentation of the work is finished.

PM and GM can all be found with the calculator, and is an alternative
way to find the frequencies at which I place my markers. I find it
more convenient to have the markers in the plot as I can easily see
what is going on just before and just after the critical points. PM
and GM calculated from the calculator are just numbers. (Another thing
is that when you have to work with CDE, you would like to do as much
work in windows that pop up by themselves, the calculator is always on
the bottom....)

Now I have given a rationale why I do it this way, and maybe somebody
can tell me why the original *expressions* window does not allow
horizontal markers when it actually should have.

Kind regards,
 
fogh <cad_support@skipthisandunderscores.catena.nl> wrote in message news:<417f95f6$0$32072$e4fe514c@dreader18.news.xs4all.nl>...
It is generally speaking difficult to do things post-process. You either have
to carefully define your outputs, choose a specific spectre analysis (S, PZ, or
stability in your case ) or write your postprocessing in ocean.

Anyway, there is enough that can be done with awv when you get to know it a bit.
There is one thing I would still like to learn: how to you group multiple waves
into a family. And a related one: how to generate a customised ROF after ocean runs.

Did you try the new waveform viewer too ("wavescan" if I remember) ?
Yes, I am aware of wavescan, and I use it quite a lot for spectre
corner runs. Problem is that we have an in-house simulator that write
runObjFiles that awd understand, but wavescan don't. Wavescan has some
features that awd doesn't have and vice versa. I really like the look
of awd, but I don't like the feel. With wavescan it is the other way
around.

What you say about post-processing is true. But post-processing of
data is the documentation work of a successful circuit. Problem is
that the doc process that a designflow with cadence support best is
stack-of-paper. If I want to store plots or sections of plot data for
later processing, I have to go through a big process that tight
schedules don't support.

I have tried a couple of other post-processing tools and there are
always pros and cons for each tool. What I really miss in awd and
wavescan is the ability to save the curve data to a table ascii file.
That way I could use a simple x/y plotting tool to generate data for a
latex run. I know I can include PostScript, but I sometimes like to
overlay data that weren't plotted overlaid in awd.

--
Svenn
 
svenn.are@bjerkem.de wrote:
fogh <cad_support@skipthisandunderscores.catena.nl> wrote in message news:<417f95f6$0$32072$e4fe514c@dreader18.news.xs4all.nl>...

It is generally speaking difficult to do things post-process. You either have
to carefully define your outputs, choose a specific spectre analysis (S, PZ, or
stability in your case ) or write your postprocessing in ocean.

Anyway, there is enough that can be done with awv when you get to know it a bit.
There is one thing I would still like to learn: how to you group multiple waves
into a family. And a related one: how to generate a customised ROF after ocean runs.

Did you try the new waveform viewer too ("wavescan" if I remember) ?



Yes, I am aware of wavescan, and I use it quite a lot for spectre
corner runs. Problem is that we have an in-house simulator that write
runObjFiles that awd understand, but wavescan don't. Wavescan has some
features that awd doesn't have and vice versa. I really like the look
of awd, but I don't like the feel. With wavescan it is the other way
around.

What you say about post-processing is true. But post-processing of
data is the documentation work of a successful circuit. Problem is
that the doc process that a designflow with cadence support best is
stack-of-paper. If I want to store plots or sections of plot data for
later processing, I have to go through a big process that tight
schedules don't support.

I have tried a couple of other post-processing tools and there are
always pros and cons for each tool. What I really miss in awd and
wavescan is the ability to save the curve data to a table ascii file.
That way I could use a simple x/y plotting tool to generate data for a
latex run. I know I can include PostScript, but I sometimes like to
overlay data that weren't plotted overlaid in awd.
If you need only the raw data, that's not too hard. Let's say you pick a real
waveform in the calculator and it shows you wavew9s1i1(), you can do something
like this:
mapcar(lambda((lXY) printf("%L\t%L\n" car(lXY) cadr(lXY)))
artWaveformToList(wavew9s1i1()))

Now you would have to extend it, test if it is a complex waveform, a family, in
that case use another format string, loop with famMap etc... and register it as
a calculator function, with a GUI to ask you what file/port you want to fprintf
to, and then you have a really end-user solution. If you do so, please post your
SKILL.

I can recognise what you say about docs. But if the client gave a greenlight
for detailed circuit design, he can wait a small while after the circuit review
before he gets docs. Or do you have people making application PCBs and stacks of
specsheets before the custom IC layout even started ?
 

Welcome to EDABoard.com

Sponsor

Back
Top