ChinFu
New Member
Offline
Posts: 6
|
Hi, recently i used verilog-a to model a device, and the input is a Vdc.
// VerilogA for mic_model, sin_wave_5, veriloga
`include "constants.vams" `include "disciplines.vams"
module sin_wave_5 (vin, mout);
inout vin, mout; electrical vin, mout;
parameter real frequency = 0;
parameter real a0=451.47; parameter real a1=4.9; parameter real a2=-0.0143;
real q, p, r, b;
analog begin
q=2.0*`M_PI*frequency*$abstime;
p=sin(q);
b=V(vin, mout);
r=b*(a0+a1*p+a2*p*p);
I(vin,mout) <+ 2*ddt(r*1e-15);
end
endmodule
It can run trans analysis well, but can not run AC analysis (the input is a Vdc). I need AC analysis result so that I change the program as
// VerilogA for mic_model, sin_wave_5, veriloga
`include "constants.vams" `include "disciplines.vams"
module sin_wave_5 (vin, mout);
inout vin, mout; electrical vin, mout;
parameter real ac_mag = 1; parameter real ac_phase = 0;
parameter real amplitude = 1; parameter real frequency = 0;
parameter real a0=451.47; parameter real a1=4.9; parameter real a2=-0.0143;
real q, p, r, b, ac_phaserad;
analog begin
q=2.0*`M_PI*frequency*$abstime;
p=sin(q);
b=V(vin, mout);
r=b*(a0+a1*p+a2*p*p);
if (analysis("ac")) begin ac_phaserad=ac_phase*3.14159/180;
I(vin,mout) <+ ac_stim("ac", ac_mag, ac_phaserad); end else begin
I(vin,mout) <+ 2*ddt(r*1e-15); end
end
endmodul
This can not run in trans analysis and ac analysis.
Could someone tell me how to correct the program to run trans and ac analysis well?
Thanks
ChinFu
|