The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
May 3rd, 2024, 7:36pm
Pages: 1
Send Topic Print
vhdl-ams software (Read 5766 times)
vinique
New Member
*
Offline



Posts: 1

vhdl-ams software
Feb 06th, 2007, 8:37am
 
Hello
I'm doin a project which invovles the simulation of a low noise amplifier in vhdl-ams.The software that i am using is called smash.It has a limitation in that it can simulate circuits having a maximum of 30 nodes.But my circuits has many more.So i'd like to use a better simulation software.please help.

This is the architecture of a transistor.

ARCHITECTURE struct OF bjt_npn IS

 TERMINAL e1, b1, c1 : ELECTRICAL;
 QUANTITY vbo ACROSS ib THROUGH b to b1;
 QUANTITY veo ACROSS ie THROUGH e to e1;
 QUANTITY vco ACROSS ic THROUGH c to c1;
 QUANTITY vct ACROSS ict THROUGH c1 to e1;
 QUANTITY vbe ACROSS ibe THROUGH b1 to e1;
 QUANTITY vbc ACROSS ibc THROUGH b1 to c1;
 QUANTITY vce : real := 1.0;
 CONSTANT gmin : real := 1.0e-12;
 CONSTANT vt : real := 0.02589;

BEGIN
 
 brk:BREAK vbe => 1.0, vbc => -1.0;

 diodecond1: if(vbe > -5.0*vt) use
   diodebef: ibe == ((isat*(exp(vbe/vt)-1.0))+(gmin*vbe))/bf;
 elsif(vbe <= -5.0*vt) use
   diodeber: ibe == ((-1.0*isat)+(gmin*vbe))/bf;
 end use;

 diodecond2: if(vbc > -5.0*vt) use
   diodebcf: ibc == ((isat*(exp(vbc/vt)-1.0))+(gmin*vbc))/br;
 elsif(vbc <= -5.0*vt) use
   diodebcr: ibc == ((-1.0*isat)+(gmin*vbc))/br;
 end use;

 bres: vbo == ib*rb;
 cres: vco == ic*rc;
 eres: veo == ie*re;
 kcl_eqn: ie == -1.0*(ib+ic);
 vcevolt: vce == vbc-vbe;
 ictdep: ict == ((ibe*bf)-(ibc*br))*(1.0-(vbc/vaf));

END struct;

These are the lines of code which have errors.

brk:BREAK vbe => 1.0, vbc => -1.0;
ERROR: in WORK.BJT_NPN(STRUCT); VBE'DOT should appear in the text of the model

vcevolt:vce == vbc-vbe;
WARNING: in WORK.BJT_NPN(STRUCT); simple simultaneous statement has no tolerance (using DEFAULT_TOLERANCE)


Kindly help with the code and suggest any other software.
Thank you.
Back to top
 
 
View Profile   IP Logged
Paul
Community Fellow
*****
Offline



Posts: 351
Switzerland
Re: vhdl-ams software
Reply #1 - Feb 9th, 2007, 10:32pm
 
Hi Vinique,

It is not correct to say that SMASH is limited to 30 nodes. You are certainly using the evaluation license, which does limit the circuit complexity which you can simulate. To my best knowledge, the evaluation licenses of most (all?) commercial tools do limit the circuit complexity, otherwise nobody would bother paying for the full license... You should check with your employer/university if you can get access to commercial tools. In case you are enrolled in an academic curriculum, your university may enroll into educational programs giving EDA tool licenses at reduced fees.

For other simulator options, have a look at the following post:
http://www.designers-guide.org/Forum/YaBB.pl?num=1088456060

Paul
Back to top
 
 
View Profile WWW   IP Logged
wprodanov
New Member
*
Offline



Posts: 3
Genoa, Italy
Re: vhdl-ams software
Reply #2 - Feb 23rd, 2007, 2:37am
 
Hello Vinique,
No comments about licenses as I fully agree with Paul. I know SMASH very well end the 30 nodes limitation is for demo licenses as Paul has supposed.

About your code, I could see you are using BREAK statement for vbe, vbc voltages variables, setting a initial conditions for them,  but  their respective derivatives are not used . BREAK statement is used to help analog solver to deal with discontinuities in derivatives. I think there is no reason to use BREAK in your model.

If you really need to set a initial conditions for vbe and vbc you could try doing it when declaring them as follows:

Code:
QUANTITY vbe := 1.0 ACROSS ibe THROUGH b1 to e1;
QUANTITY vbc := -1.0 ACROSS ibc THROUGH b1 to c1;  



regards
william
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1998
Massachusetts, USA
Re: vhdl-ams software
Reply #3 - Apr 9th, 2007, 3:49am
 
vinique wrote on Feb 6th, 2007, 8:37am:
 diodecond1: if(vbe > -5.0*vt) use
   diodebef: ibe == ((isat*(exp(vbe/vt)-1.0))+(gmin*vbe))/bf;
 elsif(vbe <= -5.0*vt) use
   diodeber: ibe == ((-1.0*isat)+(gmin*vbe))/bf;
 end use;


The code above is pretty lousy in terms of continuity across the "if" statement.  exp(-5*vt / vt) = 0.0067, which is treated as zero in the "elsif" block. So, not only is there a discontinuity in the derivative, there's a discontinuity in the VALUE!

With a simple model like this, I don't think you'd really notice the extra simulation time if you just compute
 diodebef: ibe == ((isat*(exp(vbe/vt)-1.0))+(gmin*vbe))/bf;
regardless of the value of vbe.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.