PZ Analysis

S

Samiran

Guest
Dear all,

How do I access results of pz analysis by value: To be specific, I
want to get the values of "Pole_1" and corresponding "Qfactor" that is
being printed in spectre.out after I run pzSummary( ) through a ocean
script. How can I achieve this without reading the spectre.out?

Thanks in advance.

Regards,
Samiran
 
Samiran wrote, on 05/04/10 08:54:
Dear all,

How do I access results of pz analysis by value: To be specific, I
want to get the values of "Pole_1" and corresponding "Qfactor" that is
being printed in spectre.out after I run pzSummary( ) through a ocean
script. How can I achieve this without reading the spectre.out?

Thanks in advance.

Regards,
Samiran
Samiran,

The poles and zeros are stored in a waveform which has all the qfactor values as
the x-axis values, and the y-axis values are the complex value of the pole (or
zero).

So this is how you'd process all the poles:

selectResult('pz)
poles=getData("poles")
qfactorVec=drGetWaveformXVec(poles)
poleVec=drGetWaveformYVec(poles)
numPoles=drVectorLength(qfactorVec)
for(poleNum 0 numPoles-1
qfactor=drGetElem(qfactorVec poleNum)
pole=drGetElem(poleVec poleNum)
printf("Pole: %d Qfactor=%g real=%g imag=%g\n"
poleNum+1 qfactor real(pole) imag(pole)
)
)

This is how it works in IC61X. In IC5141, it was a bit different. You had to do:

selectResult('pz)
pv("Pole_1" "qfactor") => qfactor
pv("Pole_1" "pole") => complex pole

For zeros, the second parameter to pv is qfactor and zero, of course. To find
out how many there were, you had to parse the output of outputs() to see what
names appeared.

Regards,

Andrew.
 
On May 4, 6:32 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
Samiran wrote, on 05/04/10 08:54:

Dear all,

How do I access results of pz analysis by value: To be specific, I
want to get the values of "Pole_1" and corresponding "Qfactor" that is
being printed in spectre.out after I run pzSummary( ) through a ocean
script. How can I achieve this without reading the spectre.out?

Thanks in advance.

Regards,
Samiran

Samiran,

The poles and zeros are stored in a waveform which has all the qfactor values as
the x-axis values, and the y-axis values are the complex value of the pole (or
zero).

So this is how you'd process all the poles:

selectResult('pz)
poles=getData("poles")
qfactorVec=drGetWaveformXVec(poles)
poleVec=drGetWaveformYVec(poles)
numPoles=drVectorLength(qfactorVec)
for(poleNum 0 numPoles-1
   qfactor=drGetElem(qfactorVec poleNum)
   pole=drGetElem(poleVec poleNum)
   printf("Pole: %d Qfactor=%g real=%g imag=%g\n"
     poleNum+1 qfactor real(pole) imag(pole)
   )
)

This is how it works in IC61X. In IC5141, it was a bit different. You had to do:

selectResult('pz)
pv("Pole_1" "qfactor") => qfactor
pv("Pole_1" "pole") => complex pole

For zeros, the second parameter to pv is qfactor and zero, of course. To find
out how many there were, you had to parse the output of outputs() to see what
names appeared.

Regards,

Andrew.
Hi Andrew,

It is working great in IC5141 :) ...Thanks!

Cheers
Samiran.
 

Welcome to EDABoard.com

Sponsor

Back
Top