Supported Verilog Features
The following features of Verilog-A are supported in Nexxim (not currently supported on Ubuntu Linux).
- Operators: all except replication operator ‘{{}}’
- All built-in mathematical functions
- Basic functions—pow, sqrt, etc.
- Trigonometric functions
- Hyperbolic and inverse hyperbolic functions
- Natures: ‘voltage’
- Disciplines: ‘voltage’, ‘electrical’
- Current/Voltage access functions
- Analog nodes and branches
- Parameters
- ‘real’ and ‘integer’
- Scalar parameters
- Vector parameters with constant array initializations
- Value range specification —‘from’ and ‘exclude’, use of ‘inf’
- Variables
- ‘real’ and ‘integer’
- scalar and vector
- Genvars
- Vectors
- Ports declared as vectors
- Vector variables
- Vector nodes
- Vector branches
- Bit-selects of vector variable/node/branch/parameter
- Index of the bit is a loop or generated index-variable
- Index of the bit is a parameter
- Analog contributions, to assign currents or voltages
- A branch with a voltage contribution in one evaluation and a current contribution in another.
- Analog sequential blocks containing analog statements
- Behavioral statements
- Procedural assignment
- Control statements (‘if-else’, ‘case’)
- Instantiations
- VerilogA instantiations
- Spectre device instantiations
- User-defined functions
- Analog operators
- Time derivative (‘ddt’)
- Derivative operator (‘ddx’)
- ‘transition’ operator
- ‘last_crossing’ function
- Laplace filters (laplace_zp, laplace_nd)
- Limited exponentiation (‘limexp’)
- Absolute delay operator (‘absdelay’)
- Slew filter (‘slew’)
- Analog events
- Global events
- ‘initial_step’, ‘final_step’
- ‘timer’, ‘cross’
- Noise analysis
- white noise
- flicker noise
- Analysis-dependent functionality using ‘analysis’ function
- AC stimulus (‘ac_stim’)
- Compiler directives
- 'include directive
- 'define directive to define constants
- System functions
- $temperature
- $vt
- $abstime
- $realtime
- Table based interpolation and lookup function—$table_model (interpolation data either in data file or in VerilogA file).
- System tasks
- Simulation control ($finish, $stop)
- Analog kernel control ($bound, $step, $discontinuity)
- Display tasks ($display, $write, $strobe, $monitor, $debug)
- $table_model
Supported keywords, functions, and system tasks
|
$abstime |
asinh |
if |
|
$bound_step |
atan |
inf |
|
$debug |
atan2 |
initial_step |
|
$discontinuity |
atanh |
inout |
|
$display |
begin |
input |
|
$finish |
branch |
integer |
|
$function |
case |
laplace_nd |
|
$monitor |
ceil |
laplace_zp |
|
$realtime |
cos |
last_crossing |
|
$stop |
cosh |
limexp |
|
$strobe |
cross |
ln |
|
$table_model |
ddt |
log |
|
$temperature |
ddx |
max |
|
$vt |
default |
min |
|
$write |
else |
module |
|
‘define |
end |
or |
|
‘else |
endcase |
output |
|
‘elseif |
endfunction |
parameter |
|
‘endif |
endmodule |
pow |
|
‘ifdef |
exclude |
real |
|
‘ifndef |
exp |
sin |
|
‘include |
final_step |
sinh |
|
‘undef |
flicker_noise |
slew |
|
abs |
floor |
sqrt |
|
absdelay |
|
tan |
|
ac_stim |
from |
tanh |
|
acos |
function |
timer |
|
acosh |
genvar |
transition |
|
analog |
hypot |
white_noise |
|
analysis |
generate |
|
|
asin |
ground |
|
Keywords supported with workarounds
Parsing for these keywords is skipped.
|
abstol |
discrete |
nature |
|
access |
domain |
idt_nature |
|
continuous |
enddiscipline |
potential |
|
ddt_nature |
endnature |
units |
|
discipline |
flow |
|
Spectre Compatibility
Nexxim VerilogA is compatible with Spectre.
The directive ahdl_include for specifying the hdl file is supported.
HSPICE Compatibility
Nexxim VerilogA is compatible with HSPICE.
The directive ahdl_include for specifying the hdl file is supported.
The option hdlpath for specifying the location of the hdl files is supported.
The environment variable HSP_HDL_PATH for specifying the location of the hdl files is supported.
Hdl files can be specified with or without the extension.
Parameter names to Verilog instances are case-insensitive.
NOTE: For, while, and repeat loops are NOT supported.