Supported Verilog Features

The following features of Verilog-A are supported in Nexxim (not currently supported on Ubuntu Linux).

  1. Operators: all except replication operator ‘{{}}’
  2. All built-in mathematical functions
  1. Basic functions—pow, sqrt, etc.
  2. Trigonometric functions
  3. Hyperbolic and inverse hyperbolic functions
  1. Natures: ‘voltage’
  2. Disciplines: ‘voltage’, ‘electrical’
  3. Current/Voltage access functions
  4. Analog nodes and branches
  5. Parameters
  1. ‘real’ and ‘integer’
  2. Scalar parameters
  3. Vector parameters with constant array initializations
  4. Value range specification —‘from’ and ‘exclude’, use of ‘inf’
  1. Variables
  1. ‘real’ and ‘integer’
  2. scalar and vector
  1. Genvars
  2. Vectors
  1. Ports declared as vectors
  2. Vector variables
  3. Vector nodes
  4. Vector branches
  5. Bit-selects of vector variable/node/branch/parameter
  1. Analog contributions, to assign currents or voltages
  1. A branch with a voltage contribution in one evaluation and a current contribution in another.
  1. Analog sequential blocks containing analog statements
  2. Behavioral statements
  1. Procedural assignment
  2. Control statements (‘if-else’, ‘case’)
  1. Instantiations
  1. VerilogA instantiations
  2. Spectre device instantiations
  1. User-defined functions
  2. Analog operators
  1. Time derivative (‘ddt’)
  2. Derivative operator (‘ddx’)
  3. ‘transition’ operator
  4. ‘last_crossing’ function
  5. Laplace filters (laplace_zp, laplace_nd)
  6. Limited exponentiation (‘limexp’)
  7. Absolute delay operator (‘absdelay’)
  8. Slew filter (‘slew’)
  1. Analog events
  1. Global events
  1. Noise analysis
  1. white noise
  2. flicker noise
  1. Analysis-dependent functionality using ‘analysis’ function
  1. AC stimulus (‘ac_stim’)
  1. Compiler directives
  1. 'include directive
  2. 'define directive to define constants
  1. System functions
  1. $temperature
  2. $vt
  3. $abstime
  4. $realtime
  5. Table based interpolation and lookup function—$table_model (interpolation data either in data file or in VerilogA file).
  1. System tasks
  1. Simulation control ($finish, $stop)
  2. Analog kernel control ($bound, $step, $discontinuity)
  3. Display tasks ($display, $write, $strobe, $monitor, $debug)
  4. $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.