Home
        Verilog-A Manual
         Contents
1.      endmodule    You may like to enter the above example in the same manner as the previous hello world  example  We suggest entering this circuit     gain_block    U1 out       16    Verilog A User Manual    When using the menu Verilog A   Construct Verilog A Symbol for the above definition   you will notice a dialog box appear asking the location for the device s pins  You would  not have seen this with the hello world example as that device does not have any pins   Choose    left    for    in    and    right    for    out        We have supplied the above pre built  See Examples Manual gain block  All the  examples used in this manual are available from Examples Manual  However  you may  find it more instructive to enter the code and schematics manually     Run the above in the usual way  You should see an output that follows the input  that is a  IV 1kHz sine wave     Module Ports    In the above definition we have introduced two    module ports    to the module definition   These define connection terminals and the generated symbol shows these as pins    in     and    out       Branch Contributions   The line     V out   lt   V in  gain      defines the relationship between the module ports out and in  This is known as a  branch contribution in the LRM  Branch contributions define a relationship that the  simulator must maintain between the    probes     v  in  in the above  on the right hand  side and the    source     V  out  above  on the left hand side  They behave 
2.    Verilog A User Manual    Sdiscontinuity   discontinuity     constant expression        Does not return a value  Currently  discontinuity performs no action    display   display  list_of_arguments      Does not return a value   display displays text in the command shell when the current iteration converges   The arguments can be any sequence of strings  integers or reals  The function will  display these values in the order in which they appear  The values will be output literally  except for the interpretation of special characters that may appear in string values  The    special characters are backslash           and percent     96         V is used to output special  characters according to the following table                              n Newline character    t Tab character      Literal   character   v     character    ddd Character specified by the ASCII code of the 1 3 octal digits       The    9o    character must be followed by a character sequence that defines a format  specification  In execution  the    90    and the format characters are substituted for the next  value in the argument list  formatted according to the string  User s conversant with the     C    programming language will have seen this method in the printf function  For  example   d specifies that an integer be displayed in decimal format  So  if count has a  value of 453  the following    Sdisplay  Count 5d   count      would display    Count 453    in the command shell     The following table 
3.    expr Input expression    zeros Array of pairs of real numbers representing the zeros of  the Laplace transform  Each pair consists of a real part  and an imaginary part with the real part first  Each zero  introduces a product term on the numerator in the form    S    retj im    where re is the real part and im imaginary part  If a zero is  complex  i e  the imaginary part is non zero  then its    57    poles    E       Chapter 4 Verilog A Reference    complex conjugate must also be present  If both real and  imaginary parts are zero then the zero becomes just s     The values can be entered as an array variable or as an  array initialiser  An array initialiser is a sequence of  comma separated values enclosed with       and          E g     1 0  2 3  3 4  4 5   The values do not need to be constants     Array of pairs of real numbers representing the poles of  the Laplace transform  Each pair consists of a real part  and an imaginary part with the real part first  Each pole  introduces a product term on the denominatr in the form    S    retj im    where re is the real part and im imaginary part  If a pole is  complex  i e  the imaginary part is non zero  then its  conjugate must also be present  If both real and imaginary  parts are zero then the pole becomes just s     The values can be entered as an array variable or as an  array initialiser  An array initialiser is a sequence of  comma separated values enclosed with       and          E g     1 0  2 3  3 4  4 5   The 
4.    for the electrical discipline  Similarly  the flow access identifier is usually    I    for the  electrical discipline  net or port scalar expression can be a module port node or an  internal node  branch identifier can be a branch defined with the branch keyword or an  unnamed branch specifying the nodes connected to the branch     exp    real value   exp  x     Returns the exponential of x  Range is  00 to about 709   See Also     limexp    on page 59  flicker_noise  real value   flicker noise  power  exp    name        flicker_noise is only active in small signal noise analysis and real time noise analysis  in  other analysis modes it returns zero  It creates a noisy signal with a power of power at    1H7 which varies in proportion to 1 f        name may be used to combine noise sources in the output report and vectors  Noise  sources with the same name in the same instance will be combined together     In real time noise analysis flicker_noise simply returns a random number whose    54    Verilog A User Manual    statistical distribution satisfies the characteistic of 1 f noise  In small signal analysis  flicker noise defines a 1 f noise source that may be propagated to any output node     See Also     white_noise    on page 63  floor   real value   floor  x     returns the next lower integer to x   See Also     ceil    on page 52    hypot  real value   hypot  x  y       2 2  Returns yx  y  idt  real value   idt  expression    initial condition        Returns the time 
5.   Yes  args  noise_table real  real array  string   No  pow real  real real  Yes  sin real  real  Yes  sinh real  real  Yes  slew real  real  real  real    Yes  sqrt real  real  Yes  tan real  real  Yes                   37       Chapter 4 Verilog A Reference                                              tanh real  real  Yes   timer integer  real  real  real    Yes   transition real  real  real  real  real  real      Yes   white_noise real  real  string   Yes   zi_nd real  real real array real array  No  real  real  real      zi_np real  real real array real array  No  real  real  real      zi_zd real  real real array real array  No  real  real  real      zi_zp real  real real array real array  No  real  real  real       abstime    real time    abstime      In transient analysis  returns the absolute simulation time in seconds  In all other  analyses returns zero      bound_step   bound_step  expression      Does not return a value     In transient analysis  instructs simulator to limit the next timestep to the value of  expression      debug     debug  list of arguments      Does not return a value     Sdebug is a display function that displays information in the command shell  See  Sdisplay for a description of its arguments  The Sdebug function writes to the command  shell on every iteration  By contrast  other display functions such as Sdisplay only write  information when an iteration has converged     See Also       Sfdebug    on page 42     Sdisplay    on page 39    38 
6.  Yes  Stemperature real 0  Yes  Svflip real 0  No  Svt real   real  Yes  Swrite none   real integer string      Yes  Sxposition real 0  No  Syposition real 0  No  above integer  real  real  real    No  abs copies  real int  Yes  args  absdelay real  real  real   real   Yes  ac_stim complex    string  real  real    Yes  acos real  real  Yes  acosh real  real  Yes  analysis integer  string        Yes  asin real  real  Yes  asinh real  real  Yes  atan real  real  Yes  atan2 real  real real  Yes  atanh real  real  Yes  ceil real  real  Yes                   36    Verilog A User Manual                                                                               cos real  real  Yes  cosh real  real  Yes  cross integer  real  integer  real  real     Yes  ddt real  real  real string   Yes  ddx real  real access_func  Yes  exp real  real  Yes  flicker_noise real  real real  string   Yes  floor real  real  Yes  hypot real  real real  Yes  idt real  real  real  real  real string     Yes  idtmod real  real  real  real  real  real  No  string       laplace_nd real  real real array real array  real    Yes  string    laplace_np real  real real array real array  real    Yes  string    laplace_zd real  real real array real array  real    Yes  string    laplace_zp real  real real array real array  real    Yes  string    last_crossing real  real integer  Yes  limexp real  real  Yes  In real  real  Yes  log real  real  Yes  max copies  real int real int  Yes  args  min copies  real int real int
7.  npn 8 Q pnp 0  pnp 8 Q pnp 1         This has three mappings  You can use hicum_211 with no level parameter to define a  model  In this case the pnp parameter would need to be set for a PNP device   Alternatively you can use NPN as a model type name along with LEVEL 8 for an NPN  device  or PNP with LEVEL 8 for a PNP device     Tolerances    The Verilog A language only allows for absoulte tolerances to be hardwired in the VA  source file  This means for example  that absolute current tolerance  must be specified as  a fixed constant which cannot be changed in the OPTIONS line or anywhere else     SIMetrix provides a workaround for this using the special values  abstol   vntol    chgtol and  fluxtol  These can be used to define absolute tolerances in electrical nature  definitions  These are already used in the standard discipline header files supplied with  the SIMetrix Verilog A compiler  It is quite possible that the final implementation will  solve this problem by some other means so this may be a temporary feature     Analysis   Function  Additional analyis types      sens    sensitivity analysis       tf    transfer function analysis     pz    pole zero analysis    73    Chapter 5 Implementation   vs LRM       pta    pseudo transient analysis     smallsig    small signal analysis     rtn    real time noise analysis    Ssimparam   Function   Standard types supported by SIMetrix      gdev         gmin         simulatorSubversion        simulatorVersion          sourceScal
8.  number of  significant digits  Default if omitted is 6     e  E  f  F  g  G or r  R    e or E  Signed value displayed in exponential format  E g   1 23456E3   f or F  Signed value in decimal format  E g  1234 56   Result will be very long if value is very large or very    40    Verilog A User Manual    small   g or G  Uses either f or e depending on which is most  compact for give precision    r or R  displays in engineering units  Uses these scale  factors     T  G  M  K  k  m  u  n  p  f  a   Notes    Currently the compiler will raise an error if the type of an argument does not match its  position in a corresponding format string  For example  the following will raise an error  at compile time     integer count     display   Count  g   count       Note that the type  i e  integer or real  of literal constants is determined by the way they  are written  If a decimal point is included or if exponential or engineering formats are  used  the number is real  Otherwise it is an integer  So    11    is an integer  while 11 0 is a  real     See Also     Sfdisplay    on page 42       Sdebug    on page 38     Smonitor    on page 44     fclose   fclose  file_descriptor      Does not return a value   Closes one or more file descriptors opened with  fopen   See Also     Sfopen    on page 42      fdisplay    on page 42     Sfmonitor    on page 42        fdebug    on page 42     Sfwrite    on page 44    41    Chapter 4 Verilog A Reference    Sfdebug    Sfdebug file descriptor  list of a
9.  this issue before final release     Pseudo Transient Analysis    Pseudo transient analysis will work correctly with Verilog A devices provided they are  not energy sources  Put another way  if all output sources are zero when all input probes  are zero  PTA will work  If there are any sources that are non zero with zero inputs then  PTA performance may be compromised  In this situation you should use the   simparam  sourceScaleFactor   system function to scale energy producing outputs   For example a 5V fixed voltage source should look like this     V nl n2   lt   5 Ssimparam  sourceScaleFactor       simparam  sourceScaleFactor   returns a value from 0 0 to 1 0 representing the supply  ramp in pseudo transient as well as DC source stepping     It would be possible for the compiler to automatically add this  Currently this isn   t done  as this will not necessarily be beneficial if the device is not energy producing and could  lead to a singular matrix condition in some cases  For this reason we currently put the  onus on you the user to define PTA behaviour     75    
10.  types Implemented    abstime real    Yes  Sangle real 0  No  Sbound step none  real  Yes  Sdebug none   real integer string      Yes  Sdiscontinuity none   integer   Yes   display none   real integer string      Yes  Sfclose none  integer  Yes  Sfdebug none  integer   real integer string        Yes   fdisplay none  integer   real integer string        Yes   finish none   integer   Yes   fmonitor none  integer   real integer string        Yes   fopen integer  string  Yes   fstrobe none  integer   real integer string        Yes   fwrite none  integer   real integer string        Yes   hflip real    No   limit real  access_func string real     No   mfactor real    Yes   monitor none   real integer string      Yes  Sparam given integer identifier Yes                   35    Chapter 4 Verilog A Reference                                                                                              Sport  connected integer identifier Yes  Srandom integer  integer  string   Yes  Srdist chi square   real  integer real   string   No  Srdist erlang real  integer real real   string   No  Srdist exponential   real  integer real   string   No  Srdist normal real  integer real real   string   No  Srdist poisson real  integer real   string   No  Srdist t real  integer real   string   No  Srdist uniform real  integer real real  string   No  Srealtime real   real   No   simparam real  string  real   Yes   stop none   integer   Yes   strobe none   real integer string      Yes  Stable model real
11.  will be initiated  Paths are relative to the current  working directory  Don t use  VA file names containing spaces     parameter  list is a list of parameter name separated by commas  There should be no  spaces in this list  Each parameter in this list will be defined as an instance parameter   See    Instance Parameters    on page 72 for details     goiters specifies the number of global optimiser iterations  The default is 3  A higher  number may improve the execution speed of the code at the expense of a longer  compilation time  In practice this will only have a noticeable effect on very large  verilog a files  Setting the value to zero will disable the global optimiser  This is likely  to slow execution speed a little  The global optimiser is an algorithm that cleans up  redundant statements in the    C    file     ctparams defines    Compile time parameters    and is a list of comma separated parameter  name value pairs in the form name value  Any parameters listed will be substituted with  the constant value defined during compilation as if it were entered as a literal constant in  the verilog a code  This feature is especially useful for items such as array sizes and  vectored port sizes  A considerably more efficient result will be produced if the values  of such items are known at compile time     warnlevel sets a filter for warning messages  If set to zero  no warnings will be  displayed  If set to 2  all warnings will be displayed  The default is 1 which will ca
12. A Compiler    Chapter 2 Using Verilog A Compiler       Using Verilog A with SIMetrix Schematics    SIMetrix has a simple feature that will create a schematic symbol for use with a Verilog   A definition  The feature invokes the Verilog A compiler using an option that tells it just  to execute the first part of the compilation process  This allows the script to learn some  information about the Verilog A file such as module and port names  The script will ask  you where you wish each pin to be located and after that will create a symbol and place  it on the schematic  The symbol will be decorated with all necessary properties to  interface the Verilog A model to the simulator     To use the script  create a Verilog A definition  then executethe schematic menu Verilog   A   Construct Verilog A Symbol  Navigate to the Verilog A file  extension  va  then  close  Select pin locations as requested  Image of symbol will appear for placement     The symbol can be found for future use using Place   From Symbol Library then  navigate to    Auto Created Symbols   gt  Verilog A Symbols        Defining Verilog A Files in Netlist    Use the simulator statement     LOAD  to specify the Verilog A source file  E g     LOAD resistor va    This will invoke the Verilog A compiler  va exe  which will create one common    C    file  and one    C    file per module statement within the Verilog A file  The    C    files will then  be compiled and linked using gcc to produce the final DLL which has t
13. Defining an Analog Function 69  4 6 2 Returning a Value from an Analog Function 69  5 3 2 Indirect Branch Assignments 69  6 7 5  Above Function 69  7 Hierarchical Structures 69  8 70  9 Scheduling Semantics 70  10 1 Environment Parameter Functions 70  10 2  random Function 70  10 2  dist_ Functions 70  10 4 Simulation Control System Tasks 70  10 7 Announcing Discontinuity 70    10 9 Limiting Functions 70    10 10 Hierarchical System Parameter Functions 70    11 1    default discipline 70  11 2 default transition 70  11 6    resetall 70  11 7 Pre defined Macros 71  12  13 71  SIMetrix Extensions 71  In an Ideal World    71  Analog Operator Syntax 71  Instance Parameters 72  Device Mapping 72  Tolerances 73  Analysis   Function 73   simparam   Function 74   fopen   Function 74  Verilog A Interaction with SIMetrix Features 74  Real Time Noise 74  Transient Snapshots 74    Pseudo Transient Analysis 75    Verilog A User Manual    Chapter 1 Introduction       What Is Verilog A     Verilog A is a language for defining analog models  it is suitable for defining  behavioural models with a high level of abstraction as well as highly detailed models for  semiconductor devices     Prior to the introduction of Verilog A and other similar languages  e g  VHDL AMS and  MAST   the definition of such models could only be achieved  if at all  using subcircuits  of controlled sources  arbitrary sources and various semiconductor devices  This method  is inflexible  clumsy and usually very ineffi
14. NS in the Simulator Reference Manual for details of MINBREAK     The transition analog operator should not be used for continuously changing input  values  use the slew or absdelay analog operators instead     62    Verilog A User Manual       Output       fall time     gt           rise time  Input Ji pa             d td  Ha pagg AA kag             Transition Analog Operator Waveforms    transition is an analog operator and is subject to Analog Operator Restrictions  see  page 64     See Also       absdelay    on page 49     slew    on page 60  white noise  real value   white noise  power    namej     white noise is only active in small signal noise analysis and real time noise analysis  in    other analysis modes it returns zero  It creates a noisy signal with a power of power and  a flat frequency distribution     name may be used to combine noise sources in the output report and vectors for small   signal noise analysis  name is ignored with real time noise analysis  Noise sources with  the same name in the same instance will be combined together     In real time noise analysis white  noise simply returns a random number whose  statistical distribution satisfies the characteistic of Gaussian noise  In small signal    analysis white_noise defines a noise source that may be propagated to any output node     See Also    63    Chapter 4 Verilog A Reference       flicker noise    on page 54    Analog Operator Restrictions    A number of functions are classed as analog operator
15. SIMETRIX    SPICE AND MIXED MODE SIMULATION    VERILOG A MANUAL    Contact   SIMetrix Technologies Ltd     78 Chapel Street    Thatcham  RG18 4QN  United Kingdom    Tel   44 1635 866395   Fax   44 1635 868322   Email  info simetrix co uk  Internet http   www simetrix co uk    TECHNOLOGIES    I siMetrix    Copyright   SIMetrix Technologies Ltd  1992 2010  SIMetrix Verilog A Manual 28 9 10    Table of Contents    Introduction    What Is Verilog A   Verilog A Language Reference Manual    Using Verilog A Compiler    Using Verilog A with SIMetrix Schematics  Defining Verilog A Files in Netlist  Messages    LOAD Full Syntax   Verilog A Cache   Permananent  SXDEV Installation    Writing Verilog A Code    Overview  Hello World   A Simple Device Model  Module Ports  Branch Contributions  Parameters  Disciplines  A Resistor  A Soft Limiter  Variables   finish  Functions  Local Parameters  Parameter Limits  Conditional Statements  A Capacitor  A Voltage Controlled Oscillator  Digital Elements   Overview  Digital Gate  cross   Monitored Event  transition   Analog Operator    O  O    10  10  11  11  12  13    14    14  14  16  17  17  18  18  18  20  21  22  22  22  22  22  23  23  24  25  26    Butterworth Filter    Arrays  For Loops    laplace_nd Function  RC Ladder   Loops  Vectored Nodes and genvars    Vectors of Nodes    Analog For Loops and genvars  Compile time Parameters    See Also    Verilog A Reference    Verilog A Functions    Sabstime  Sbound step  Sdebug  Sdiscontinuity  Sdi
16. alog for loops and genvars    3  Compile time parameters   This is a SIMetrix extension and not part of the Verilog   A specification     Vectors of Nodes    Verilog A allows nodes to be specified as vectors  This can be used to implement  devices that have multiple inputs or outputs  such as ADCs and DACs  as well as  devices like the above example which has multiple internal elements     The Verilog A specification allows the size of vectored nodes to be specified as a  parameter that can be assigned at run time  SIMetrix does allow this in some simple  cases but this would not be accepted in the above example  Usually  however  vectored  node sizes  n in the above example  are specified as a constant to be available at compile  time  This can be done in a number of ways    1  Asa pre processor constant such as       define n 16    32    Verilog A User Manual    this must then be accessed using the back tick character  i e   n    2  Asa constant Localparam parameter  These may not be set by the user and so are  fixed in value at compile time     3  Asa compile time parameter  See below for details     Vectors of nodes can be specified in the node discipline declaration  In the example  above  this is the line     electrical  0 n  inode      The nodes are accessed using square brackets enclosing a constant expression in the  same way that array variables are used  For example  inode 0  is the first node in the  vectored node inode while inode n  is the last     Analog For Lo
17. andom number  will be generated  The sequence of random numbers will thus be repeatable given the  same initial value for seed     Example     real seed        initial_step   seed   23      value    random  seed     In the above  the value of seed will be updated each time random is called    simparam  real value    simparam  string     default_value        Returns the value of a simulator parameter defined by string  Possible values of string  are described below  If an unknown string is supplied   simparam will return the value    of default_value if given  If no default_value value is given  a run time error will be  raised     46    Verilog A User Manual        gdev  Conductance added in junction GMIN stepping algorithm        gmin  Value of GMIN options parameter        simulatorSubversion    Minor version of SIMetrix simulator  E g  for version 6 00   result will be O  for 6 10 result will be 10 etc              simulatorVersion  Major version of SIMetrix simulator  For version 6 00 this  will be 6    sourceScaleF actor  Scale factor used for sources in source stepping algorithm  and pseudo transient analysis algorithm    tnom  Value of TNOM options parameter    ptaScaleFactor  Scale factor used for pseudo transient analysis algorithm    option name  Any name that may be used in a  OPTIONS statement    and which has a real value  Ssimparam strings supported by SIMetrix                The first six items in the above follow recommended names in the Verilog A LRM  The  re
18. aste from the PDF  OK  but be aware that in general copying and pasting ASCII text from PDFs can  result in strange problems  In particular  watch out for         characters  These aren t  always what they seem      Save to a file called hello_world va   Start SIMetrix if you have not already done so  Open an empty schematic sheet  Select menu Verilog A   Construct Verilog A Symbol   Navigate to the file you created in step 2 above   Select OK    Place symbol that is created  It   s just a box with no pins    CO  GA OY NU ee    Add a resistor connected to ground to the schematic  We need to do this as SIMetrix  will otherwise fail with a no ground error message    9  Setup a transient analysis with any stop time you like    10  Run simulation    The first time you run this  you will see messages relating to the compilation procedure   After that the message    Hello World     will be displayed in the command shell     If you get any error messages  check the code you entered  The error message should  point to the line where the problem occurred  Be aware that sometimes the line number  given may not be exact  The point where the parser detects that something is wrong may  occur one or two lines after the actual cause of the problem  For example  if you omitted  the         on the line containing the  strobe call  you would the error    Unexpected token     end       error reported for the following line or possibly even the line after that  The    end     token would not be 
19. ation above  is zero  the laplace    function must exist inside a closed feedback loop  With a zero denominator  the DC  gain is infinite  by putting the function inside a loop  the simulator can maintain the  input at zero providing a finite output  A singular matrix error will result otherwise     laplace_nd is an analog operator and is subject to Analog Operator Restrictions  see  page 64      See Also     laplace np    on page 56       laplace zd    on page 57     laplace zp    on page 57    laplace np    real value   laplace np expr  num coeffs  poles               expr Input expression  num coeffs Numerator coefficients  See laplace nd for details  poles Poles  See laplace zp for details    56    Verilog A User Manual    E    Tolerance parameter currently unused    laplace_np is an analog operator and is subject to Analog Operator Restrictions  see  page 64      See Also     laplace_nd    on page 55       laplace zd    on page 57     laplace zp    on page 57    laplace zd    real value   laplace zd expr  zeros  den coeffs               expr Input expression   zeros Zeros  See laplace_zp for details   den_coeffs Denominator coefficients  See laplace_nd for details  E    Tolerance parameter currently unused    laplace_zd is an analog operator and is subject to Analog Operator Restrictions  see  page 64      See Also       laplace_nd    on page 55     laplace_np    on page 56     laplace zp    on page 57    laplace zp    real value   laplace zp expr  zeros  poles    e     
20. been implemented  This defines the    parameter as an instance parameter  that is  its value can be set on the device line  See     Instance Parameters    on page 72     3 4 2 2 Domain Binding    Anything other than    domain continuous    will raise an error     3 4 2 3 Empty Disciplines    Implemented but non functional    66    Verilog A User Manual    3 4 2 4 Disciplines of Wires and Undeclared Nets  Not supported    3 4 2 7 User Defined Attributes    Accepted but non functional    3 4 3 1 Net Descriptions    Not implemented  This will lead to a syntax error if used     3 4 3 2 Net Discipline Initial  Nodeset  Values    Not implemented  This will lead to a syntax error if used     3 4 5 Implicit Nets    Not meaningful as hierarchical structures are not yet implemented     3 5 Real Net Declarations  Not supported in Verilog A    3 6 Default Discipline  Not supported in Verilog A    3 7 Discipline Precedence    Not meaningful as hierarchical structures are not yet implemented     3 8 Net compatibility   As hierarchical structures are not yet implemented  this is mostly not relevant    But this is partially implemented within the simulator  If you connect different  disciplines together you will get a warning  But the inherited disciplines will not be  compatible  only the same disciplines may be inter connected      and you only get a  warning not an error    3 9 Branches   Compliant for scalars only  Currently named vector branches are not supported     Unnamed branches ar
21. cient     Further  SIMetrix Verilog A is a compiled language  This means that the Verilog A code  is compiled to a binary executable program in the same way that built in device models  are implemented  This makes Verilog A models very fast     The SIMetrix implementation of Verilog A uses a compiler to translate the Verilog A  source into program code using the    C    language  This in turn is compiled into a DLL  which is then loaded into the SIMetrix memory image  Access to the verilog A  description is then made at the netlist level using models and instance lines     For Windows operation  you do not need to install a    C  compiler to use Verilog A   SIMetrix Verilog A is supplied with the open source    C    compiler gcc using the mingw  extensions  We have used a stripped down version of gcc that includes only the essential  files needed for this  For running on Linux  you need to make sure that the gcc compiler  is installed for the Verilog A system to work     The SIMetrix Verilog A compiler was developed by us  we do not license a third party   s  product  nor is it based on open source software  This means that we know it inside out  and will be able to offer the same high level of support that we have always offered with  all our products     Verilog A Language Reference Manual    The language reference manual may be obtained from http   www eda org verilog ams   htmlpages lit html  The SIMetrix implementation is based on version 2 2     Chapter 2 Using Verilog 
22. constant value  In the example it assigns 1 to   the variable k     test_expression Expression is evaluated at the start of each iteration  around the loop before statement  If the result of the  evaluation is non zero  statement will be executed  If not  the loop will be terminated    loop_assignment Assignment statement that is executed after statement   Typically this would be an assignment that increments or  decrements a loop counter variable In the above it  increments k by 1    laplace_nd Function    The laplace_nd function implements a Laplace transfer function  This is in the form     30    Verilog A User Manual    2 m  Ng FAN   SAN  S tt    EN  sS    H s    o    dy d  std  s      d   8    where dp  dj  do    d   are the denominator coefficients and ng  nj  No    n   are the    numerator coefficients and the order is m   The laplace nd function is in the form     laplace nd expr  num coeffs  den coeffs  e     Where   expr Input expression   num  coeffs Numerator coefficients  This can be entered as an array  variable or as an array initialiser  An array initialiser is a  sequence of comma separated values enclosed with          and    F  E g    1 0  2 3  3 4  4 5   The values do not need  to be constants    den_coeffs Denominator coefficients in the same format as the  numerator   see above  In the example this is provided as  the array den  The values in den are calculated in the for  loop    E    Tolerance parameter currently unused    If the constant term on the d
23. dule and gate inl  in2  out      electrical inl  in2  out      parameter real digThresh   2   digOut Low 0 0   digOutHigh   5 0   trise 10n   tfall 10n      analog  begin   main    integer digl  dig2  logicState         Detect inl threshold     cross V inl  digThresh  0  In    if  V inl 5digThresh   digl   1    else  digl   O        Detect in2 threshold     cross  V in2  digThresh  0  In    if  V in2   gt digThresh   dig2   1    else  dig2    logicState   digl  amp  amp  dig2   digOutHigh   digOutLow      25    Chapter 3 Writing Verilog A Code    V out   lt   transition  logicState   0 0  trise  tfall     end  endmodule    This example introduces two new concepts   1  The cross event    2  The transition analog operator    cross   Monitored Event    The cross event function is used to detect when an input signal crosses its logic  threshold  Consider the line        cross V inl  digThresh  0  In      This line both defines the event and also responds to the event when it is triggered  The  arguments define the event  while the statement that follows it is the action taken when  the event is triggered     The function has the following form   cross  expr  edge  time_tol  expr_tol    Only the first argument is compulsory     expr expression to test  The event is triggered when the  expression crosses zero     edge 0   1 or  1 to indicate edge   1 means the event will only  occur when expr is rising   1 means it will only occur  while falling and O means it will occur on either 
24. e  instance     parameter a 1      To define on  LOAD  add the parameter    instparamszparameter list    where  parameter  list is a comma separated list of parameter names     If a parameter is defined as an instance parameter  it will also be available as a model  parameter  If both are specified  the instance value will take precedence     Device Mapping    You may control how the new device is represented in SIMetrix using a device mapping   This does the same as the sxcfg file  Mappings are applied as a module attribute in the  form         Mappingsz   mapping defs         72    Verilog A User Manual    This should prefix the    module    keyword     mapping def is a semi colon delimited list of mapping definitions  Each mapping  definition is itself a comma delimited list of attibutes in the following order     model type name level number device letter default parameter  version    Where    model type name is the name used in the  MODEL statement   level is the LEVEL parameter value in the  MODEL statement   device letter is the device letter to use for this device   default parameter is a single parameter name and value  This is intended to be used to  define device polarity  E g     pnp 1    might define a PNP BJT  This is useful to allow the  definition of BJTs and MOS devices using conventional NPN PNP or NMOS PMOS  model type names    version value of VERSION paramter    For example  the HICUM device is defined with the following mapping      Mappings  hicum_211 0
25. e  the output logic level can change instantaneously but the output of a real  device would typically follow a specified rise or fall time  The transition analog operator  converts the discrete input value to a continuous output value using specified rise and  fall times  The function has the following form    transition expr  td  rise_time  fall_time  time_tol     expr Input expression    td Delay time  This is a transport or stored delay  That is  all  changes will be faithfully reproduced at the output after  the specified delay time  even if the input changes more  than once during the delay period  This is in contrast to  intertial delay which swallows activity that has a shorter  duration than the delay  Default 0    rise_time Rise time of output in response to change in input   fall time Fall time of output in response to change in input   time tol Ignored  The LRM does not explicitly state what this is  supposed to do and we see no purpose for a tolerance  parameter     27    Chapter 3 Writing Verilog A Code    If fall time is omitted and rise time is specified  the fall time will default to rise time   If neither is specified or are set to zero  a minimum but non zero time rise fall time is  used  This is set to the value of MINBREAK which is the minimum break point value   Refer  OPTIONS in the Simulator Reference Manual for details of MINBREAK     The transition analog operator should not be used for continuously changing input  values  use the slew or absdelay ana
26. e above can suffer a problem if left to run for a very large number of cycles  The  return value from the idt operator increases continuously and eventually the size of this  value will impact on the calculation precision available leading to inaccuracy  The  problem can be resolved using the idtmod operator  However  this language feature has  not yet been implemented in the SIMetrix Verilog A  We expect to offer this in the first  revision     Digital Elements   Overview    Verilog A can model digital devices as well as analog  This is useful in situations where  some simple logic function interfaces mostly with analog elements  An example is a  phase detector in a phase locked loop  At least one of its inputs would often come from    24    Verilog A User Manual    an analog source and its output would usually drive a low pass filter also implemented  with analog components  Some phase detector designs employ a digital state machine  that would usually suit a digital event driven simulator  But if it interfaces with analog  devices  interface bridges would need to be connected to the analog signals  This  complicates and slows down the simulation  Using Verilog A we can efficiently  implement the entire function in the analog domain     We have provided an example of a phase detector  see Examples phase detector     In this section we will show how to create some simple logic elements     Digital Gate   Here is a definition for an AND gate     include  disciplines vams   mo
27. e however fully supported     Discipline compatibility is checked  but it seems that the discipline for each node in a  branch must be identical  The spec requires them to be    compatible    which is not the    67    Chapter 5 Implementation   vs LRM    same thing     Minor issue  if a branch is unused then the discipline of each node will not be checked at  all and no error will be raised if they are incompatible  This is not defined in the  standard     4 1 6 Case Equality Operator  Not supported in Verilog A    4 1 13 Concatenations    Array initialisers are supported  Replication multiplier is not supported     4 2 3 Error Handling   Not correctly implemented    Its possible that this may never be implemented to the letter of the standard  While  attempting to iterate to convergence  it is not at all uncommon for maths functions to be    overflow or to receive invalid arguments  When this happens  SIMetrix reduces the step   whatever that step may be  and tries again  This algorithm is often successful     Complying with the most literal interpretation of this would be undesirable as it would  mean some simulations failing when they may have been perfectly solveable     4 4 1 Restrictions on Analog Operators    SIMetrix Verilog A is mostly compliant with this section with the exception detailed  below     Analog operators  such as ddt  transition etc  are not allowed in places where their  execution could be dependent on values that change during the course of a simulati
28. e used  and subsequent changes will be ignored  Otherwise  changes to tdelay will be used as long as they do not  exceed maxdelay     maxdelay Maximum delay permitted  If omitted changes to tdelay  will be ignored  See tdelay above     In DC analyses  tdelay is ignored and the return value of absdelay is expression  In AC  analysis  the signal defined by expression is phase shifted according to     output      input w  exp  jw tdelay     In transient analysis  the signal is delayed by an amount equal to the instantaneous value    49    Chapter 4 Verilog A Reference    of tdelay as long as it is positive and less than maxdelay  absdelay stores the past history  of expression up to maxdelay so that it can retrieve the requested delayed point  instantaneously     absdelay is an analog operator and is subject to Analog Operator Restrictions  see  page 64      See Also       slew    on page 60     transition    on page 62    ac stim    real value   ac stim   analysis name string     mag    phase            Provides a stimulus for AC analysis  essentially identical the AC spec for a standard  SPICE voltage source or current source     analysis name string Analysis name in which source is to be active  Currently  this must be set to  ac  or be omitted altogether     mag Magnitude of source  phase Phase of source in radians  acos    real value   acos  x       Returns inverse cosine in radians of x  Input range is     1     acosh    real value   acosh  x     Returns the inverse hyperb
29. eFactor      includes pseudo transient scale factor     tnom       Additional SIMetrix extensions        ptaScaleFactor      as    sourceScaleFactor    but functional in pseudo transient analysis  only  Default   1 0    In addition you can specify any option setting defined using  OPTIONS  E g   Ssimparam    reltol        will return the value of the RELTOL option     Sfopen   Function    Use the argument     lt listfile gt     to write to the list file  This is the file created by every  simulation with the extension  OUT     Verilog A Interaction with SIMetrix Features    Real Time Noise    Real time noise  while not unique to SIMetrix  remains a feature that can only be found  on a few simulators  Because of this  standards such as Verilog A do not account for it or  support it in any way  The Verilog A LRM simply says that transient noise should be  implemented by the Srandom function     The SIMetrix Verilog A compiler does fully support the real time noise feature and the  regular small signal noise analog operators such as white noise and flicker noise will   correctly create noise signals in transient analysis with real time noise enabled without  requiring any special support in the Verilog A code     Transient Snapshots    In general it is best to assume that transient snapshots will not work with Verilog A    74    Verilog A User Manual    devices  They will in fact work with some depending on what analog operators and or  system functions are used  We will address
30. ed advising that the design would be more  efficient if some variables were constant     Compile time Parameters    Compile time parameters are a SIMetrix extension and not part of the language  specification  Compile time parameters may be assigned in the  LOAD statement in the    33    Chapter 3 Writing Verilog A Code    netlist or they may be defined using an attribute in the Verilog A code  or both  This  concept is in its infancy and we hope to develop it further  The attribute in the code  this  isthe  4 type  compile time       prefixing the parameter keyword  declares  the parameter as compile time and provides a default value  The value may be  overridden in the  LOAD statement in the netlist     See Also       the DAC example at Examples DAC  This has a vectored module port with a size that  can be specified at run time via a model parameter     34    Verilog A User Manual    Chapter 4 Verilog A Reference       The official definition of the Verilog A language can be found in the Language  Reference Manual version 2 2 which may be obtained from here  http   www eda org   verilog ams htmlpages lit html  Ultimately we intend to write our own reference that  explains the language in a more concise and easy to read form than the official  reference  but this work is not complete yet     Here we present descriptions of all the functions that SIMetrix currently supports     Verilog A Functions                                                                   Name ie ae In
31. edge   Default 0 if omitted    time_tol Time tolerance for detection of zero crossing  Unless the  input is moving in an exact linear fashion  it is not  possible for the simulator to predict the precise location of  the crossing point  But it can make an estimate and then  cut or extend the time step to hit it within a defined  tolerance  time_tol defines the time tolerance for this  estimate  The event will be triggered when the difference  between the current time step and the estimated crossing  point is less than time_tol  If omitted or zero or negative   no timestep control will be applied and the event will be  triggered at the first natural time point after the crossing  point  See diagram below for an illustration of the  meaning of this parameter     26    Verilog A User Manual    expr  tol Similar to time tol but instead defines the tolerance on the  input expression  See below     Time    i Poss  points ER NG    I                 timeto      q   expr_tol  N  Estimated    crossing   Event triggered  point here if time_tol       or and expr_tol satisfied    Cross Event Function Behaviour    transition   Analog Operator    The transition function at the end is one of a class of functions called analog  operators  The ddt and idt functions seen earlier are also analog operators  The  transition analog operator is designed to handle signals that change in discrete steps  such as the output of logic devices and digital to analog converters  In the and gate  example abov
32. eference manual version 2 3 does in fact not impose the above  restrictions  It s possible that these restrictions are a consequence of errors in the  definition in the language and not actually intentional     Currently the Slimit function remains subject to the above limitation  But we plan to  change this in a futre revision     Instance Parameters    The Verlog A language does not distinguish between instance parameters and model  parameters  An instance parameter is one that can be defined on the device line on a per  instance basis whereas a model parameter is one defined in a  MODEL statement  The  most flexible implementation is one that allows both  with the instance parameter taking  precedence if both are specified by the user  However this method has a cost in terms of  increased memory usage per instance  While memory consumption may not seem to be  a big issue  it can impact on performance  The less memory used  the more likely that  the processor will find what it wants in the cache  For this reason it is desirable to  minimise the number of instance parameters     The SIMetrix Verilog A implementation provides two methods of defining instance  parameters  one in the verilog A source file and the other on the command line of va exe    which in turn can be passed from  LOAD     To define an instance parameter in the  VA file  prefix the parameter key word with the  special attribute    type    with a value of    instance     This is how it should look        typ
33. ement  for exp but with improved convergence  But note that limexp is an analog operator and  is therefore subject to Analog Operator Restrictions  see page 64    See Also     exp    on page 54  In    real value   In  x       Returns the natural logarithm of x  Range is 0 0 to 00     log    real value   log  x       Returns the logarithm to base 10 of x  Range is 0 0 to 00     max    real value   max  x  y      Returns x or y whichever is larger  Equivalent to  x gt y   x  y   min   real value   min  x  y       Returns x or y whichever is smaller  Equivalent to  x lt y   x  y      59    Chapter 4 Verilog A Reference    pow    real value   pow  x  y      Returns x     if x is less than zero  y must be an integer  If x 0  y must be greater than zero   sin  real value   sin  x     Returns the sine of x given in radians  Range  00 to co   sinh  real value   sinh  x       Returns the hyperbolic sine of x  Range is approx  709 to  709    slew    real value   slew  expression    slew_pos    slew_neg          Implements a slew rate limiter  slew pos is expected to be positive and slew_neg is  expected to be negative  If slew_neg is not specified or greater than or equal to zero  it  assumes a value of  slew_pos  If neither slew_pos or slew_neg is present  expression is  passed through to value unchanged     slew limits the positive and negative rate of change of its return value to slew_pos and  slew_neg respectively     slew is an analog operator and is subject to Analog Operator Re
34. enominator   dp in equation above  is zero  the laplace    function must exist inside a closed feedback loop  With a zero denominator  the DC  gain is infinite  by putting the function inside a loop  the simulator can maintain the  input at zero providing a finite output  A singular matrix error will result otherwise     RC Ladder   Loops  Vectored Nodes and genvars    Verilog A allows definitions to contain repeated elements defined using vectors of  nodes  Here we present an example that defines an RC network with any number of  elements        include  discipline h        Model for an n stage RC ladder network     module rc ladder inode 0   inode n        electrical  0 n  inode         The compile time attribute is a SIMetrix extension and is    31    Chapter 3 Writing Verilog A Code    not part of the Verilog standard  compile time parameters  must be defined at the time the module is compiled  Their  values can be specified on the  LOAD line in the netlist         using the  ctparams  parameter  E g  ctparams  n 8     If not specified on the  LOAD line  the default value  specified here will be used         type  compile_time    parameter integer n 16    parameter r lk    parameter c ln      genvar i      analog  begin    for  i 0   i lt  n 1   i i 1    begin  I inode i  inode itl    lt   V inode i  inode i 1    r   I inode it1    lt   ddt V inode i l   c      end    end    endmodule    This design introduces the following language features   1  Vectors of nodes    2  An
35. eq 2  M PI     bPrev   1 0     den 0    1 0     for  k 1   k lt order l   k k 1   begin  bPrev   scale cos  k 1 0   order       M_PI 0 5     sin  k 0 5  order  M_PI    bPrev    den k    bPrev       strobe   den coeff 5d   59   k  den k      end  end       Actual Butterworth filter  res   laplace_nd  V in ref    1 0   den     V out ref   lt   res    end  endmodule    See Examples Manual Butterworth filter    This design introduces these language features   1  Array variables    2  For loops    3  The lapalace_nd analog operator    29    Chapter 3 Writing Verilog A Code    Arrays    Verilog A supports arrays of both variables and parameters  In the example above we  use an array to store the denominator coefficients for the laplace nd analog operator   Array variables must be declared with their range of allowed indexes using this syntax     type array name low index high index       Where    type real or integer  array_name name of array   low_index Minimum index allowed  high_index Maximum index allowed    low_index and high_index determine the number of elements in the array to be  high_index low_index 1     For Loops    For loops use a syntax similar to the    C    language  This is as follows     for  initial_assignment   test_expression   loop_assignment    statement  initial_assignment Assignment statement  in the form variable   expression     that is executed just once on entry to the loop  Typically  this would be an assignment that assigns a loop counter  variable a 
36. er of examples  Each example  introduces a new concept or language feature  This is not a definitive reference of the  language but we hope to demonstrate the most commonly used features    The table below lists the examples used in this manual along with the path of the files  where you can find a read to run schematic and Verilog A definition file                                         Example File Location  Hello World  Examples Verilog A Manual Hello world  A Simple Device Model Examples Verilog A Manual Gain block  A Resistor Example Verilog A Manual Resistor  A Soft Limiter Example Verilog A Manual Soft limiter  A Capacitor Example Verilog A Manual Capacitor  A Voltage Controlled Example Verilog A Manual Vco  Oscillator  Digital Gate Example Verilog A Manual Gates  Butterworth Filter Example Verilog A Manual Butterworth filter  RC Ladder   Loops  Vectored Example Verilog A Manual RC ladder  Nodes and genvars       Hello World     It has become customary to instroduce any computer language with a    Hello world     program  That is a program that simply prints    Hello World      While Verilog A was not  designed to perform this type of task  it is nevertheless possible to write such a program   Here is an example     module hello_world      analog  begin      initial step   Sstrobe   Hello World       14    Verilog A User Manual    end  endmodule    You can try this using the following procedure     1  Open a test editor and enter the lines above   This will copy and p
37. expected if the         was missing but this is on the next line     Although our hello world program does not do much  it does introduce a number of  Verilog A concepts     1  Modules  All devices that can be instantiated as models and instances are defined as  modules  In the above example the module has the name hello_world  This name  is used in the associated  MODEL statement in the SIMetrix netlist to access this  module     15    Chapter 3 Writing Verilog A Code    2  The analog block denoted by the keyword analog  This is where the main body of  the Verilog A definition is placed    3  Initial step event denoted by   initial step   The statement following this will  be executed only in the first step of the simulation  that is  the dc operating point  phase  You might like to see what happens if you remove this line  You can do this  easily by commenting it out    which can be done with to forward slashes like this         initial step     4  Sstrobe  This is known as a system task in the Verilog A LRM  language reference  manual   Sstrobe outputs a message to the command shell  It can also output values  in various format and behaves in a similar way to the    C    printf function  We will see  more of this later     A Simple Device Model    We will now show how to make a simple gain block  Here is the Verilog A design        include  disciplines vams   module gain_block in  out       electrical in  out    parameter real gain 1 0      analog  V out   lt   V in  gain 
38. ey can be declared outside the analog block  as in the example  above  or they can be declared inside a named begin   end block  For example    begin   main  real vin      end    If declared this way  the variable may only be used within the begin   end block in  which it was declared     21    Chapter 3 Writing Verilog A Code    Sfinish    The Sfinish system task aborts the simulation unconditionally     Functions    Verilog A has a range of mathematical functions built in  In the above example we have  used the exp function  See    Verilog A Functions    on page 35 for a complete list     Local Parameters    A local parameter is one that cannot be changed by the user via the  MODEL statement  or any other means  Local parameters are a way of defining constant vaues as  unlike  variables  they cannot be assigned except in their declaration  In our example we  declared the bana local parameter as     localparam real band    vhigh vlow     soft    We could just as simply have defined a variable to do this  However  by using a local  parameter we know it can t be subsequently modified  This aids readibility and also  allows easier optimisation by the compiler     Parameter Limits    Parameters can be given maximum and minimum limits  This is done using the from  keyword  In the above example     soft 0 1 from  0 1 0     defines the limits for soft from 0 to 1 0 exclusive  This means that any value greater  than O and less than 1 0 will be accepted but the values 0 and 1 0 will 
39. first natural time point after the crossing  point  See diagram below for an illustration of the  meaning of this parameter     expr_tol Similar to time tol but instead defines the tolerance on the  input expression  See below     Time    i t   points STEER S Ae       1  time  0     lt       N expr_tol                N  Estimated    crossing s Event triggered  point here if time_tol       or and expr_tol satisfied    Cross Event Function Behaviour    cross Stores state information in the same way as an analog operator  It is therefore  subject to Analog Operator Restrictions  see page 64      See Also       timer    on page 61     transition    on page 62    ddt  real value   ddt  expression        Returns the time derivative of expression  exp ression  t    In DC analyses  ddt returns zero  In AC analysis  the function is defined by the relation     output      input    jo    53    Chapter 4 Verilog A Reference    ddt is an analog operator and is subject to Analog Operator Restrictions  see page 64    See Also     idt    on page 55    ddx    real value   ddx  expression  unknown variable       Performs symbolic differentiation on expression with respect to unknown variable   unknown variable must be defined in terms of an access function in one of the  following forms     potential access identifier  net or port scalar expression    OR  flow access identifer  branch identifier      A potential access  identifier is defined in the discipline declarations and is usually    V  
40. he extension   sxdev  These files are all placed in the directory     APPDATAPATH  SIMetrix600 vacache where   APPDATAPATH     is your  application data directory     Having compiled the va file   LOAD will load the  sxdev file into the SIMetrix memory  image  It will then map the code within into the simulator   s model table making the new  device ready for use    To use the new device or devices  defined with Verilog A module statements  you must  specify a  MODEL statement  These must be placed after the LOAD statement  The  format of the  MODEL statement should be      MODEL modelname va module name parameters    10    Verilog A User Manual    Where modelname is the model name referred to on the instance  see below   va   module name is the name of the module in the Verilog A source file and parameters are  parameters defined using the Verilog A parameter keyword     To create instances of the new device create an instance line  or schematic symbol with  appropriate properties  that begins with one of the letters    N        P        W        U    or    Y     You  can use other letters as long as the number of terminals is compatible with the original  use of that letter  For example  you can use the letter    M    as long as the device has four  terminals   as a MOS device would have  But you must use one of    N        P     WD     U    or     Y    for devices with more than 4 terminals or only a single terminal     Q    will work for  three or four terminals  but you 
41. he resistance parameter has been given value range limits to prevent  resistance value of zero or below  A resistance of zero would lead to a divide by zero  error     Instead of blocking resistors with a value of zero  we could instead implement a zero  resistance using a zero voltage contribution  This is how        include  disciplines vams   module va_resistor p n       parameter real resistance   1000 0    electrical p  n     analog  begin  if  resistance  0 0   I p n   lt   V p n  resistance    else  Vipypn   lt   0 0    end    endmodule  Note the conditional statement starting if  resistance  0 0   Notice also  that    the analog block is now enclosed with the keywords begin and end  These are not  actually necessary in this case  but are necessary where there is more than one statement    19    Chapter 3 Writing Verilog A Code    in the analog block     A Soft Limiter    This is a definition for a soft limiter device  This will pass the input signal through  unchanged up to some limit after which it will follow a decaying exponential in the  form     1   exp    v vlim     The same in reverse occurs for the lower limit  Here is the full definition        include  disciplines vams   module soft limiter in  out       electrical in  out    parameter real vlow  1 0   vhigh 1 0   soft 0 1 from  0 1 0       localparam real band    vhigh vlow     soft   Vlow 1   vlow band   vhigh 1   vhigh band      real vin      analog  begin      initial step   if  vhigh lt vlow   begin  Ss
42. ime point  perhaps set by another device  The time_tol  argument controls the tolerance of the event time  The simulator will always schedule  the event so that it is within time tol of the requested time  If time tol is not specified  the event will be scheduled after the requested time but not more than the amount  specified by the MINBREAK simulaion parameter     See Also       cross    on page 52    61    Chapter 4 Verilog A Reference    transition    real value   transition expr    td    rise time    fall time    time tol          The transition analog operator converts the discrete input value to a continuous output  value using specified rise and fall times     Its arguments are     expr Input expression    td Delay time  This is a transport or stored delay  That is  all  changes will be faithfully reproduced at the output after  the specified delay time  even if the input changes more  than once during the delay period  This is in contrast to  intertial delay which swallows activity that has a shorter  duration than the delay  Default 0    rise time Rise time of output in response to change in input  fall time Fall time of output in response to change in input  time tol Currently ignored     If fall time is omitted and rise time is specified  the fall time will default to rise time   If neither is specified or are set to zero  a minimum but non zero time rise fall time is  used  This is set to the value of MINBREAK which is the minimum break point value   Refer  OPTIO
43. in the same  way as arbitrary source devices  The above  for example  is equivalent to a SIMetrix  netlist line like this     Bl out 0 v   V in    gain  Branch contributions  however  differ from arbitrary sources in that they are additive   Successive branch contributions with the same left hand side add to each other  This    applies to both voltage and current sources  For example     V out   lt   V in  gain    V out   lt   1 0      is the same as   V out   lt   V in  gain   1 0      The V   function in the above is known as an access function  Access functions may    17    Chapter 3 Writing Verilog A Code    have one or two arguments each of which must refer to a port or internal node  If two  arguments are provided  V   accesses the potential between the two nodes  If only a  single node is supplied  it accesses the potential between that node and ground     The access function I   access the current flowing between its two nodes  As with the  voltage access function  if only a single node is provided  the second node is implicitly  ground     The access functions V   and I   are not defined as language keywords but are in fact  defined by the electrical discipline contained within the disciplines  vams file     Parameters    parameter real gain 1 0    defines a parameter and gives it a default value of 1 0  This value can be edited at the  netlist level  If you used a generated symbol or our pre built example  double click the  device U1  then enter   gain 5  Now rerun 
44. integral of expression     initial_condition if supplied  sets the value of the function for DC analyses including the  dc operating point that precedes other analyses     If initial condition is not supplied  idt must exist inside a closed feedback loop  With no  initial condition the DC gain of idt is infinite  by putting the function inside a loop  the  simulator can maintain the input at zero providing a finite output  A singular matrix  error will result otherwise     idt is an analog operator and is subject to Analog Operator Restrictions  see page 64    See Also     ddt    on page 53  laplace_nd  real value   laplace_nd expr  num coeffs  den_coeffs               55    Chapter 4 Verilog A Reference    Where   expr Input expression   num coeffs Numerator coefficients  This can be entered as an array  variable or as an array initialiser  An array initialiser is a  sequence of comma separated values enclosed with          and          E g    1 0  2 3  3 4  4 5   The values do not need  to be constants    den coeffs Denominator coefficients in the same format as the  numerator   see above    E Tolerance parameter currently unused    The laplace_nd analog operator implements a Laplace transfer function  This is in the  form     2 m  Ng EN  SAN  SHAN  S  H s    See a  dy d  std  s      d    8  where dp  dj  do    dm are the denominator coefficients and np  ny  n2    Nm are the    numerator coefficients and the order is m     If the constant term on the denominator   dp in equ
45. lation temperature in Kelvin      vt    real value    vt     temperature_expression          Returns the thermal voltage at temperature_expression  If temperature_expression is not  supplied  the value at the current simulation temperature will be returned     The thermal voltage is defined as  K T q    Where  K is boltzmann   s constant  T is temperature  defined by temperature_expression   and q is thge charge on an electron  The values used for K and q are those that are used  for other simulator models and are the best values known at the time the original SPICE  program was developed  Since that time the accepted values for K and q have been  altered slightly     The values used are   K 1 3806226e 23  q 1 6021918e 19    Currently accepted values   K 1 3806504e 23    48    Verilog A User Manual    q 1 60217646e 19    Swrite    Swrite  list of arguments      Does not return a value    Swrite is identical to the Sdisplay function except that it does not add a new line  character at the end of the text  A new line may be explicitly inserted using the     n     sequence     See Also       Sfwrite    on page 44      display    on page 39  abs    real value   abs  x       Returns the absolute value of x     absdelay    real value   absdelay  expression  tdelay     maxdelay       Applies a transport delay to an input signal     expression Input signal to delay    tdelay Delay in seconds  If maxdelay is not supplied  only the  value of tdelay at the start of the simulation will b
46. lementation follow the standard as closely as possible so that anyone who writes  Verilog A code will be able to use it with another implementation     While that is our idealistic intention  reality never allows ideals  Verilog A has quite a  few little limitations that we would not want to impose on our users  Some of these we  have already addressed and made non standard extensions to do so  These are detailed    below     We will endeavour in the long run to make such extensions in a manner that would allow  a source file to work with other Verilog A simulators without modification     Analog Operator Syntax    According to the syntax specification  analog operators  e g  ddt    limexpQ    white_noise    may only be used in a standalone manner and may not be embedded in  expressions  For example  this is allowed    V nl  n2   lt   ddt C I nl n2       but this isn   t    V nl  n2   lt   C ddt I nl n2        But you would be allowed to do this     dd   ddt I nl n2      V nl  n2   lt   C   dd     This limitation doesn   t make any sense  It might make sense if any variable that an    analog operator was assigned to was required to have a discipline defined  Then  the we  could make sense of what tolerances to use for ddt   operations for example  But such a    71    Chapter 5 Implementation   vs LRM    requirement is not present  indeed there is no method of assigning a discipline to a  variable  So tolerance for ddt   is somewhat hit and miss anyway     The later language r
47. lled oscillator        include  disciplines vams     include  constants vams     module vco in  out     parameter real amplitude   1 0   centre frequency   1K   gain   1K 5     parameter integer steps_per_cycle 20      localparam real omegac   2 0      M PI     centre frequency   omega gain   2 0   MPI   gain      23    Chapter 3 Writing Verilog A Code    electrical in  out      analog  begin   main    real vin  instantaneousFreq      vin   V in     V out   lt   amplitude sin  idt  vin omega_gaintomegac 0 0           Use Sbound step system task to limit time step      This is to ensure that sine wave is rendered with      adequate detail    instantaneousFreq   centre frequency   gain   vin   Sbound step  1 0   instantaneousFreq   steps per cycle       end  endmodule    This can be found in Examples Manual Vco    This model uses the idt analog operator to integrate frequency to obtain phase  The  frequency is calculated from omegac which is the constant term and vinYomega gain  which the voltage controlled term     A problem with sinusoidal signals is that in order to obtain adequate resolution  the time  step must be limited to a controlled fraction of the cycle time  In the above the parameter  steps per cycle is used to define a minimum number of steps per cycle  This is  implemented using the Sbound step system task  This tells the simulator the  maximum time step it can use for the next time point  It can use a smaller step if needed  but must not use a larger step     Th
48. log operators instead        A    Output    fall gue                ise time  Input La pok saa     d                Transition Analog Operator Waveforms    Butterworth Filter    Here we present a butterworth filter with arbitrary order  SIMetrix already has  something like this built in  but we show a Verilog A version to demonstrate arrays   looping constructs and the Laplace analog operators     The design allows the user to specify the order of the filter using a model parameter  The  filter itself is implemented using the analog operator laplace nd which provides a  Laplace transfer function defined by its numerator and denominator polynomial  coefficients  To calculate the coefficients for the specified order  we build an array for  the denominator coefficients using a for loop  The array only needs to be calculated once  so we put this calculation in response to an initial_step event   Actually it will be  recalculated on each dc operating point iteration which is not as efficient as it could be   This is an area that we hope to address in a future revision         include  disciplines vams      include  constants vams     28    Verilog A User Manual    module laplace butter in ref out       real res     electrical in  ref  out    parameter freq 1 0    parameter integer order 5      real scale  bPrev        Denominator array size order l  real den order 0      integer k      analog  begin       Calculate Butterworth coefficients     initial_step   begin   scale   1 0 fr
49. mainder are special to SIMetrix     Sstop   stop   7       The function does not return a value  Pauses simulation after completion of current step  and leaves the simulator in the same state as if the user pressed the pause button     The argument n currently has no effect   See Also     Sfinish    on page 42   strobe   strobe  list of arguments      Does not return a value  Identical to  display function   See Also     Sfstrobe    on page 43        display    on page 39    47    Chapter 4 Verilog A Reference    Stable model    real value   Stable model  table inputs  table data source   table control string       We will supply full documentation for this function in the final release  In the meantime   please refer to section 10 12 of the Verilog AMS Language Reference Manual version  2 2  This can be obtained from http   www eda org verilog ams htmlpages lit html   SIMetrix implements the LRM specification in full     Stable model is subject to the same restrictions as analog operators according to the  Verilog A version 2 2 LRM  See    Analog Operator Restrictions    on page 64   This  restriction has been removed from the version 2 3 standard and indeed there is no  fundamental reason for the restriction as the Stable model function does not need to  store state information  Currently  SIMetrix complies with LRM 2 2   i e the restrictions  apply   but we plan to change this with a future release      temperature    real value    temperature      Returns the current simu
50. not be allowed   You can also define inclusive limits using a square bracket instead of a round  parenthesis  E g in the following 1 0 is allowed     soft 0 1 from  0 1 0   Conditional Statements  Conditional statements are in the form   if  conditional expression   statement      else  statement      statement may be a single statement such as a branch contribution or it may be a  collection of statements enclosed by begin and end     22    Verilog A User Manual    A Capacitor    To implement a capacitor we need a time derivative function  In Verilog A this is  achieved using the ddt analog operator  A capacitor can be defined using the branch  contribution statement     I p n   lt   capacitance   ddt  V p n        Like the resistor  this defines the current voltage relationship that the simulator must  maintain on the nodes p and n  However  this definition has time dependence     Here is the complete definition for a capacitor      include  disciplines vams     module va_capacitor p n       parameter real capacitance   ln    electrical p  n      analog  I p n   lt   capacitance   ddt V p n        endmodule    See Examples Manual Capacitor  Note there is another definition for a capacitor with an  initial condition parameter   capacitor_with_ic va  This uses the time integration  operator idt which allows the specification of an initial condition     A Voltage Controlled Oscillator    Verilog A may be used to create signal sources  Here we show how to make a voltage  contro
51. of the standard does include the syntax for module definitions and this is of    course fully supported  This is covered by the opening paragraphs of section 7 1  The  rest of the section is not implemented     69    Chapter 5 Implementation   vs LRM    8    Not implemented in Verilog A    9 Scheduling Semantics    Most of this section is concerned with Verilog AMS which is the mixed signal version  and so is not relevant     10 1 Environment Parameter Functions    Srealtime is not supported  All others are compliant     10 2 Srandom Function    Supported for first argument only     type string    argument is not supported     10 2 Sdist Functions  Not supported    10 4 Simulation Control System Tasks    Compliant except argument to functions are ignored     10 7 Announcing Discontinuity    Accepted but doesn t actually do anything    10 9 Limiting Functions    Compliant using built in    pnjlim     User functions not implemented     10 10 Hierarchical System Parameter Functions    Smfactor implemented  Others are not    11 1    default discipline    Not implemented    11 2 default transition    Not implemented    11 6    resetall    Not implemented    70    Verilog A User Manual    11 7 Pre defined Macros    Not implemented    12  13    Not implemented    SIMetrix Extensions    In an Ideal World           any standard would be so carefully designed and thought out that nobody would need  to make non standard extensions  It is our intention to make the SIMetrix Verilog A  imp
52. olic cosine of x  Range is 1 0 to 0     analysis    integer value   analysis  analysis list       Returns non zero if the current analysis matches any of the analysis names in the  argument list  analysis_list is a list of strings as defined in the following table     50    Verilog A User Manual        static  Any analysis that solves a DC operating point  This includes the  operating point analyses carried before other analyses such as  transient  It also includes DC sweep                       tran  Transient analysis  Includes the transient analysis used for  pseudo transient analysis    ac  AC analysis    dc  DC sweep    noise  Noise analysis not including real time noise    tf  Transfer fumction analysis    pz  Pole zero analysis    sens  Sensitivity analysis    ic  The dc operating point analysis that precedes a transient analysis        smallsig    Any small signal analysis  AC  noise and TF        rin  Real time noise analysis                    pta Pseudo transient analysis       asin    real value   asin  x       Returns the inverse sine in radians of x  Range is     1 0     asinh    real value   asinh  x       Returns the inverse hyperbolic sine of x  Range is   00 to  00     atan    real value   atan  x     Returns the inverse tangent in radians of x  Range is   00 to  00     atan2    real value   atan2  x  y       Returns the inverse tangent in radians of x y  The function will return a meaningful value  when y is zero     51    Chapter 4 Verilog A Reference    a
53. on   This is because analog operators store state information which could become invalid   SIMetrix does not always implement this restriction correctly and there are situation  where it will allow you to use an analog operator but shouldn t     4 4 4 Time derivative Operator    Compliant except tolerance is currently ignored     4 4 5 Time integral operator    idt expr    compliant  idt expr ic    compliant    Others not implemented     68    Verilog A User Manual    4 4 6 Circular Intergral Operators    Not implemented     4 4 13 Z transform filters    Not implemented     4 5 1 Analysis    Compliant except for    nodeset       4 5 2 DC analysis    Compliant except for    nodeset       4 5 4 3 Noise table    Not implemented    4 6 1 Defining an Analog Function    Compliant except cannot use local parameters    4 6 2 Returning a Value from an Analog Function    Partially compliant  Can use return value for output  Output via passed argument is not  supported     5 3 2 Indirect Branch Assignments    Not implemented    6 7 5  Above Function    Not implemented    7 Hierarchical Structures    In general  hierarchical structures are not supported by the SIMetrix Verilog A  implementation and this is the most siginicant feature omitted at this time  However   much of the functionality provided by this feature may be achieved via the netlist  so this  should not impact on the usefulness of the compiler too much  We do intend to  implement this at the first revision     This section 
54. ops and genvars    We saw for loops in the butterworth filter example  Analog for loops are syntactically  identical but use a special type of variable called a genvar instead of a normal variable   Analog for loops are the only type of loop where you can iterate through vectored nodes   They are also the only type of loop where you can use analog operators     genvars are inherited from the Verilog A version 1 0 concept called generate statements   Generate statements define a method of replicating a statement any number of times  while increasing or decreasing a controlling variable   the generate variable or genvar   In computer science this technique is often called loop unrolling  Generate statements  are now considered obsolete and have been replaced by analog for loops but the  functionality is similar     The Verilog A language specification does not stipulate that analog for loops should be  unrolled but it does impose a number of restrictions on the use of genvars to make  unrolling possible as long as all constant values are available at compile time  Unrolling  loops that refer to vectored nodes is vastly more efficient than evaluation at run time     SIMetrix will unroll analog for loops if it can  If it can   t  because one or more values in  the for loop could not be evaluated at compile time  it will still attempt to implement the  design but this process may fail in which case an error message will be displayed  If it  succeeds  a level 2 warning will be rais
55. pecified  for it in the instance netlist line  It will return true  non zero  if a node name is supplied  on the netlist line but is not connected to any other component in the netlist  For  example  consider a model for a four terminal BJTwith nodes    C        B        E    and    S     where    S    is the substrate connection     Q1 C B E S bjtmodelname   In the above the substrate connection is the node S  In this case  port_connected S   would return true regardless of whether or not S was connected to anything else  Now  consider the three terminal case     Q1 C B E bjtmodelname    In this case the substrate connection has been omitted from the netlist line and   port_connected will return false  zero       random    integer value    random    seed         Returns a random number  This has three modes of operation according what if anything  is supplied for seed     Mode 1  no seed     random will return a new random number on each call with the system choosing the  seed when random is used for the first time     45    Chapter 4 Verilog A Reference    Example   value   Srandom    Mode 2  constant seed    seed may be either a literal constant or a conatant expression dependent only on literal  constants and parameters  In this mode  random will return a fixed random value which  will not update     Example    parameter seed 23     value   Srandom seed     Mode 3  initialised integer variable seed    In this mode the seed variable will be updated on each call and a new r
56. rguments      Does not return a value  As Sdebug  but writes to a file or files defined by file descriptor   See Also     Sdebug    on page 38     Sfopen    on page 42     Sdisplay    on page 39     Sfdisplay    on page 42  Sfdisplay  Sfdisplay  file descriptor  list of arguments      Does not return a value   As Sdisplay  but writes to a file or files defined by file descriptor     See Also       Sdisplay    on page 39     Sfopen    on page 42    Sfinish  Sfinish   n    Does not return a value     Instructs simulator to abort  Currently the argument is ignored      fmonitor     fmonitor  file descriptor  list of arguments      Does not return a value     As Smonitor  but writes to a file or files defined by file descriptor    Sfopen    integer file descriptor    fopen  filename        42    Verilog A User Manual    Returns an integer representing a multi channel file descriptor  The descriptor can be  used as an argument to Sfdebug  Sfdisplay  Sfmonitor  Sfstrobe and Sfwrite to write  output to a file     There are 31 possible channels each represented by a single bit in the 32 bit returned  value  The top  most significant bit  is reserved  The bottom  least siginificant  is used  for standard output   i e  displays to the command shell  Each new call to Sfopen will  assign the next channel and set the relevant bit    By or   ing together the results from multiple calls to  fopen  it is possible to write to  more than one file at a time     SIMetrix has a special extension 
57. s  These functions store state  information  That is  their return value depends on previous history and not just on the  current value of its arguments  Because of this  analog operators are subject to some  restrictions on where they may be used  These restrictions are as follows     1  Analog operators may not be used inside a conditional statement  if or case  if the  conditional expression controlling that statement could change during the course of  a transient analysis  For example  the following is not permitted    if  V n1  gt 0   I out   lt   ddt cap V out        In the above V  n1  50 could change in a transient analysis if the voltage on node n1  rises above or below zero  This means that dat would only get executed some of the  time and so its state history would not always be correct     The following is permitted  paramter integer enable cap   0      if  enable cap   I out   lt   ddt cap V out        this is OK because enable_cap is a parameter and will have a fixed value during  the course of a transient analysis  So either ddt will always be executed or it will  never be executed  Both scenarios will work correctly     2  Analog operators are not permitted in repeat or while loops nor are they  permitted in for loops that are not analog for loops     Analog operators are permitted in analog for loops  These are for loops controlled by a  genvar controlling variable  This is explained in    Analog For Loops and genvars    on  page 33     The analog operator re
58. should avoid using it as it is full of amiguities as a result  of SPICE history     When you start a new simulation  any sxdev files loaded in the previous run will be  unloaded and the model table entries removed     Messages    When running a simulation  you will see a number of messages in the command shell   These are output by the VA compiler  the MAKE utility and  if you are unlucky  the    C   compiler     Errors or warning output by the Verilog A compiler will be displayed during this  process These will be in the form     xxx ERROR           verilog a filename     linenum   error message   If the problem is with the syntax  the message will say     SYNTAX ERROR       NOTE  Identifiers that you use in your Verilog A code  e g  variables  parameters   ports etc  may be prefixed with an underscore when referenced in any warning or error    message     When you run a  VA file for the sescond and subsequent time without editing it  you will  not see any messages from the Verilog A compiler      LOAD Full Syntax     LOAD file  instparamszparameter  list   nicenames 011   goiters goiters    ctparams crparams   suffix suffix   warn warnlevel     file can specify either a Verilog A fileor a  SXDEV file  If the extension is  SXDEV  no  compilation will be performed and the specified file will be loaded directly  The    11    Chapter 2 Using Verilog A Compiler    remaining options described above will not be recognised in this case  Otherwise the  build sequence described above
59. shows the format codes available     39    Chapter 4 Verilog A Reference        h or  H    hexadecimal format        d or  D    decimal format        0 or  O    octal format        b or  B    binary format        c or  C  Yom or  M     s Or  S    ASCII character  E g a value of 84 would display an uppercase    T       display hierarchical name of instance  This does not use one of  the subsequent arguments    literal string  Expects a matching string argument        e Or YE    Real number format  See Real Number Formats below                Af Or YF Real number format  See Real Number Formats below  Hg or  G Real number format  See Real Number Formats below  Yor Or  R Real number format  See Real Number Formats below             Real Number Formats    Real numbers have their own more complex format codes  These are in the form        flag   width    precision  type    where   flag    width    precision    type    29 6    Characters                     O     space or                   means left align the result within given width  see  width            means always prefix a sign even if positive      O    means prefix with leading zeros     forces a decimal point to be always output even if not  required    Specifies the minimum number of characters that will be  displayed  padding with spaces or zeros if needed    For e and f formats  see below  specifies the number of  digits after the decimal point that will be printed  If g or r  format is specified  specifies the maximum
60. splay  Sfclose  Sfdebug  Sfdisplay   finish   fmonitor   fopen   fstrobe   fwrite   mfactor   monitor   param_given   port_connected   random   simparam   stop    strobe   table_model   temperature   vt    write   abs   absdelay  ac_stim   acos    acosh  analysis  asin   asinh   atan   atan2  atanh   ceil   cos   cosh  cross   dat   ddx   exp  flicker_noise  floor   hypot   idt  laplace_nd  laplace_np  laplace_zd  laplace_zp  last_crossing  limexp   In   log   max   min   pow   sin   sinh   slew   sqrt   tan   tanh   timer  transition  white_noise    Analog Operator Restrictions    Implementation   vs LRM    Overview 66    SIMetrix Verilog A vs LRM 2 2 66  2 6 Strings 66  2 8 1 66  3 2 2 Parameters   Value Range Specification 66  3 2 3 Parameter Units and Descriptions 66  3 4 2 2 Domain Binding 66  3 4 2 3 Empty Disciplines 66  3 4 2 4 Disciplines of Wires and Undeclared Nets 67  3 4 2 7 User Defined Attributes 67  3 4 3 1 Net Descriptions 67  3 4 3 2 Net Discipline Initial  Nodeset  Values 67  3 4 5 Implicit Nets 67  3 5 Real Net Declarations 67  3 6 Default Discipline 67  3 7 Discipline Precedence 67  3 8 Net compatibility 67  3 9 Branches 67  4 1 6 Case Equality Operator 68  4 1 13 Concatenations 68  4 2 3 Error Handling 68  4 4 1 Restrictions on Analog Operators 68  4 4 4 Time derivative Operator 68  4 4 5 Time integral operator 68  4 4 6 Circular Intergral Operators 69  4 4 13 Z transform filters 69  4 5 1 Analysis 69  4 5 2 DC analysis 69  4 5 4 3 Noise table 69  4 6 1 
61. strictions  see page 64    See Also       absdelay    on page 49     transition    on page 62    sqrt  real value   sqrt  x     Returns the square root of x  Range is 0 to co  Although valid  x 0 should be avoided and    if possible code included to prevent x 0  This is because the first derivative of sqrt at  zero is infinite and convergence at this value can be problematic     60    Verilog A User Manual    tan    real value   tan  x     Returns the tangent of x given in radians  Range is  0 to co     tanh    real value   tanh  x     Returns the hyperbolic tangent of x  Range is  00 to 00     timer    timer  time    period    time tol    timer is an evant function and may only be used in an event statement in the form       timer        statement      statement is executed when the event is triggered     timer sets a future event to occur at a specified time either just once or repeating at a  specified period     The event is first scheduled at time  If period is specified and is greater then zero   subsequent events will also be scheduled at time   n period where n is a positive  integer     Usually the specified event will be scheduled at exactly the time specified  However  the  analog simulator will not allow time points to be forced too close together as this can  lead to numerical problems as well as unnecessarily long simulation times  For this  reason  the simulator may schedule the event slightly later than specified if the time  point is to close to an existing t
62. strictions apply to the following functions     table_model  see page 48   But see note in documentation for function   absdelay  see page 49    cross  see page 52    ddt  see page 53    idt  see page 55     64    Verilog A User Manual    laplace nd  see page 55   laplace np  see page 56   laplace zd  see page 57   laplace zp  see page 57   last crossing  see page 58   limexp  see page 59    slew  see page 60   transition  see page 62     65    Chapter 5 Implementation   vs LRM    Chapter 5 Implementation   vs LRM       Overview    Here we describe how SIMetrix Verilog A compares with the stadard as defined in  Language Reference Manual 2 2  Full details are below  SIMetrix Verilog A vs LRM  2 2  For SIMetrix extensions  see    SIMetrix Extensions    on page 71    SIMetrix Verilog A vs LRM 2 2    In the following we have highlighted areas where the SIMetrix Verilog A compiler is  not compliant with the LRM 2 2 standard     2 6 Strings    String variables are not supported  This is compliant with the Annex C    Analog  Language Subset       2 8 1    desc and units attributes may be included but will not be functional     3 2 2 Parameters   Value Range Specification    Only the first from specification will be functional  Subsequent exclude specifications  will be accepted by the compiler but will have no effect     3 2 3 Parameter Units and Descriptions  Syntax for    desc    and    units    is recognised but non functional   Non standard SIMetrix attribute    instance    has 
63. t using the   mfactor parameter or using a subcircuit multiplier M  If both are used  the final scale  factor will be the product of these  Refer to the LRM for more details     The LRM currently stipulates that compilers should raise an error if  mfactor is used  inappropriately  This is not currently implemented and  mfactor may be used for any    purpose      monitor    monitor  list of arguments      Does not return a value   monitor behaves in a similar manner to  display except that it only outputs a result  when there is a change  In other words  the behaviour is the same as  display except that  successive repeated messages will not be output     See Also       Sfmonitor    on page 42     Sdisplay    on page 39    44    Verilog A User Manual    Sparam given   integer value   Sparam given  parameter name      parameter  name must be a parameter defined using the parameter keyword  Returns a  non zero number if parameter name has been specified in a  MODEL statement or on  the instance line where relevant   Sport connected   integer value   Sport connected  port name   index expression        Returns a non zero value if the specified port name is connected externally  If the port  is vectored  then index expression defining the element within the vector must also be    specified  No error will be raised if the index supplied is out of range  the function will  simply return false  zero      Currently  this function will only deem a port to be unconnected if no node is s
64. tanh    real value   atanh  x     Returns the inverse hyperbolic tangent of x  Range is     1 0     ceil    real value   ceil  x       Returns the next integer value greater than x   See Also       floor    on page 55    cos    real value   cos  x       Returns the cosine of x expressed in radians  Range is   00 to  00    cosh    real value   cosh  x     Returns the hyperbolic cosine of x  Range is approx  709 to  709     cross    cross  expression   edge   time_tol   expr_to        cross is an event function and may only be used in event expressions     expression expression to test  The event is triggered when the  expression crosses zero     edge 0   1 or  1 to indicate edge   1 means the event will only  occur when expr is rising   1 means it will only occur  while falling and O means it will occur on either edge   Default 0 if omitted    time_tol Time tolerance for detection of zero crossing  Unless the  input is moving in an exact linear fashion  it is not  possible for the simulator to predict the precise location of  the crossing point  But it can make an estimate and then  cut or extend the time step to hit it within a defined  tolerance  time_tol defines the time tolerance for this    52    Verilog A User Manual    estimate  The event will be triggered when the difference  between the current time step and the estimated crossing  point is less than time_tol  If omitted or zero or negative   no timestep control will be applied and the event will be  triggered at the 
65. the schematic  Notice the output amplitude increase to 5V peak   Disciplines  Finally  you will notice two other lines not in the hello world example    electrical in  out    defines the discipline for the module ports in this case    electrical     Verilog A supports  other disciplines such as thermal  mechanical and rotational allowing simulation of  physical processes other than electrical and electronic  The definitions of these other  disciplines are defined in the disciplines vams file which is included using the line        include  disciplines vams     Nearly all Verilog A definitions include this line at the top of the file  We excluded it  from the hello world example as that did not need it     A Resistor    In this example we define a simple resistor  A resistor is a device whose current is  proportional to the voltage difference between its terminals  This is defined in Verilog A  using a branch contribution as follows     18    Verilog A User Manual    I p n   lt   V p n  resistance      This defines the current voltage relationship that the simulator must maintain on the  nodes p and n  I  p  n  represents the current flowing from port p to port n and V  p  n   represents the potential difference measured between nodes p and n     Here is the full definition      include  disciplines vams   module va_resistor p n       parameter real resistance   1000 0 from  0 0 inf     electrical p  n     analog  I p n   lt   V p n  resistance      endmodule    In the above t
66. to this function providing access to the list file  Use the  filename     lt listfile gt     and the descriptor returned will access it  The following code for  example will create a file descriptor that will provide writes to both the list file and a  user file     fd    fopen    lt listfile gt        fd   fd   Sfopen   a text file txt      Further  by or   ing with 1 the file descriptor will also write to the command shell   The file descriptor should be closed with Sfclose   See Also       Sfclose    on page 41     Sfdisplay    on page 42    Sfstrobe  Sfstrobe  file descriptor  list of arguments        Does not return a value     As Sstrobe  but writes to a file or files defined by file descriptor  Note that the Sstrobe  and Sdisplay functions are identical  For detailed documentation see Sdisplay     See Also     Sstrobe    on page 47       Sdisplay    on page 39     Sfopen    on page 42    43    Chapter 4 Verilog A Reference    Sfwrite    Stwrite  file descriptor  list of arguments      Does not return a value     As Swrite  but writes to a file or files defined by file descriptor  Note that the Swrite  function is identical to Sdisplay except that it does add a new line character  For detailed  documentation see Sdisplay     See Also     Swrite    on page 49       Sdisplay    on page 39     Sfopen    on page 42    Smfactor    real value    mfactor     mfactor does not take any arguments     Returns the scaling factor applied to the instance  The scaling factor may be se
67. trobe     Lower limit must be less than higher limit    Sfinish    end    vin   Vin       if  vin gt vhigh_1    V out   lt   vhigh_1 band   1 0 exp    vin vhigh_1   band      else if  vin lt vlow_1    V out   lt   vlow_l band   1 0 exp  vin vlow_1  band      else   V out   lt   vin      end    20    Verilog A User Manual    endmodule  See Examples Manual Soft limiter example  The above example introduces the following new concepts     1  Variables  We use vin to hold the value of v  in    In this example we have done this  simply to make the code a little more readable  But variables can store any value or  expression and have a much wider use    The Sfinish system task   The exp function    Local parameters using the Localparam keyword    te aS    Parameter value range limits using the from keyword   Also used in the resistor  above     The soft limit example also uses a conditional statements using if and else which we  first saw with the resistor example above     Variables    Variables  such as vin in the example must be declared first  In the above example this  declaration is the line     real vin      This declares the variable    real     This is    real    in the computing sense meaning that the  value is stored using floating point arithmetic and can take non integer values  The  alternative declaration is integer which means the variable stores whole numbers   Variable declarations  like parameter declarations must be placed within the module    endmodule block  Th
68. use  most warnings to be displayed but will omit those that are less serious     nicenames 0I1 is an advanced feature for debugging purposes  It tells the compiler to  use meaningful names in the    C    file if possible  Otherwise it will used short names   There is a small risk of a name clash in the    C    file if this option is switched on     Verilog A Cache    SIMetrix will reuse existing Verilog A binary files without recompiling if the source  files have not changed  It determines whether or not the file has changed by calculating  an MDS checksum on the source files and comparing this with a value stored in the   sxdev file  While this method is slower than the more conventional method of checking  file dates  it is more robust and reliable     This cache mechanism can save significant time if the VA definition is large  The hicum  model  for example  takes about 6 seconds to compile     You can clear the cache at any time using the schematic menu Verilog A   Clear Cache   This will delete all files in the cache directory     12    Verilog A User Manual    Permananent  SXDEV Installation    The  SXDEV files may be relocated to the plugins devices directory in which case they  become a built in device  Currently  you should not expect binary compatibility between  versions  A Verilog A license is required to load a  sxdev file     13    Chapter 3 Writing Verilog A Code    Chapter 3 Writing Verilog A Code       Overview    We will introduce Verilog A by showing a numb
69. values do not need to be constants     Tolerance parameter currently unused    laplace_zp is an analog operator and is subject to Analog Operator Restrictions  see    page 64    See Also     laplace nd    on page 55       laplace np    on page 56     laplace zd    on page 57    last crossing    real value   last crossing  expression  direction        last crossing returns the time in seconds when expression last crossed zero  First order   interpolation is used to estimate the time of the crossing  direction controls the direction  of the crossing  If  1 then the most recent positive transition is returned  If  1  the most  recent negative transition and if zero the most recent in either direction is returned     58    Verilog A User Manual    last crossing returns a negative number if expression has not crossed zero since the start  of the simulation  SIMetrix Verilog A last crossing implementation also returns a  negative number for DC analyses but this is not defined in the standard     last crossing is an analog operator and is subject to Analog Operator Restrictions  see  page 64      limexp   real value   limexp  x     Returns the exponential of x  limexp limits its change in output from iteration to iteration  in order to improve convergence  In situations where its return value is not the true  exponential of x it will force further iterations  The iteration will only be accepted when  the result is the true value of exp x   Thus  limexp can be seen as a direct replac
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
壁寄せスタンド 取扱説明書  Batch-oriented MPEG generation with GMV in background mode  Manual de uso y técnica  Fiche Intervenant  Le lien s`ouvre dans une nouvelle fenêtreInformations techniques    Copyright © All rights reserved. 
   Failed to retrieve file