Verilog 2001 Ref Guide
Verilog 2001 Ref Guide
by
Stuart Sutherland
Sutherland
HD
L
w w w. s u t h e r l a n d - h d l . co m
by
Stuart Sutherland
published by
Sutherland
HD
L
Sutherland HDL, Inc.
22805 SW 92nd Place
Tualatin, OR 97062
(503) 692-0898
www.sutherland-hdl.com
ISBN: 1-930368-03-8
Table of Contents
3.0 Concurrency
The following Verilog HDL constructs are independent processes that are
evaluated concurrently in simulation time:
• module instances
• primitive instances
• continuous assignments
• procedural blocks
4.3 Comments
// begins a single line comment, terminated by a newline.
/* begins a multi-line block comment, terminated by a */.
4.4 Attributes
(* begins an attribute, terminated by a *).
• An attribute specifies special properties of a Verilog object or statement, for
use by specific software tools, such as synthesis. Attributes were added in
Verilog-2001.
• An attribute can appear as a prefix to a declaration, module items, statements,
or port connections.
• An attribute can appear as a suffix to an operator or a call to a function.
• An attribute may be assigned a value. If no value is specified, the default
value is 1.
• Multiple attributes can be specified as a comma-separated list.
• There are no standard attributes in the Verilog-2001 standard; Software tools
or other standards will define attributes as needed.
Attribute Example
(* full_case, parallel_case *) case (state)
...
endcase
assign sum = a + (* CLA=1 *) b;
† indicates new reserved words that were added in the Verilog-2001 standard.
© Sutherland HDL, Inc. 5
Examples Notes
adder legal identifier name
XOR uppercase identifier is unique from xor keyword
\reset- an escaped identifier (must be followed by a white space)
Examples Notes
0.5 must have value on both sides of decimal point
3e4 3 times 104 (30000)
5.8E-3 5.8 times 10-3 (0.0058)
© Sutherland HDL, Inc. 7
• size (optional) is the number of bits in the number. Unsized integers default to
at least 32-bits.
• ’base represents the radix and sign property of the value. The base and sign
characters are not case sensitive (e.g. ’b and ’B are equivalent).
• Module items may appear in any order, but port, data_type or parameter
declarations must come before the declared name is referenced.
• Module functionality may be represented as:
• Behavioral or RTL — modeled with procedural blocks or continuous
assignment statements.
• Structural — a netlist of module instances or primitive instances.
• A mix of behavioral and structural.
© Sutherland HDL, Inc. 9
Variable data types are used for programming storage in procedural blocks.
• Variables store logic values only, they do not store logic strength.
• A variable data type must be used when the signal is on the left-hand side
of a procedural assignment.
• Variables were called “registers” in older versions of the Verilog standard.
• variable_type is one of the following:
• signed (optional) may only be used with reg variables, and indicates that
values are interpreted as 2’s complement signed values. If either a port or the
reg connected to the port is declared as signed, then both are signed. Signed
reg variables were added in Verilog-2001.
• [range] (optional) may only be used with reg variables, and is a range from
[msb :lsb] (most-significant-bit to least-significant-bit).
• If no range is specified, then reg variables are 1-bit wide.
• The msb and lsb must be a literal number, a constant, an expression, or a
call to a constant function.
• Either little-endian convention (the lsb is the smallest bit number) or big-
endian convention (the lsb is the largest bit number) may be used.
• The maximum reg size may be limited, but will be at least 65,536 (216)
bits. Most software tools have a limit of 1 million bits.
• [array] is [first_address : last_address][first_address : last_address]...
• Any number of array dimensions may be declared. Variable arrays of more
than one dimension were added in Verilog-2001.
• first_address and last_address must be a literal number, a constant, an
expression, or a call to a constant function.
• Either ascending or descending address order may be used.
• The maximum array size for each dimension may be limited, but is at least
16,777,216 (224). Most software tools have unlimited array sizes.
• A one-dimensional array of reg variables with is referred to as a memory.
• initial_value (optional) sets the initial value of the variable.
• The value is set in simulation time 0, the same as if the variable had been
assigned a value in an initial procedure.
• If not initialized, the default value for reg, integer and time variables is X,
and the initial value for real and realtime variables is 0.0.
• Specifying the initial value as part of the variable declaration was added in
Verilog-2000
14 Verilog HDL Quick Reference Guide
Declaration syntax:
parameter signed [range] constant_name = value, ... ;
parameter constant_type constant_name = value, ... ;
localparam signed [range] constant_name = value,...;
localparam constant_type constant_name = value, ... ;
specparam constant_name = value, ... ;
event event_name, ... ;
• Port order connections list the signals in the same order as the port list in the
module definition. Unconnected ports are designated by two commas with no
signal listed.
• Port name connections list both the port name and signal connected to it, in
any order.
• instance_name (required) is used to make multiple instances of the same
module unique from one another.
• instance_array_range (optional) instantiates multiple modules, each instance
is connected to different bits of a vector.
• The range is specified as [left_hand_index : right_hand_index].
• If the bit width of a module port in the array is the same as the width of the
signal connected to it, the full signal is connected to each instance of the
module.
• If the bit width of a module port is different than the width of the signal
connected to it, each module port instance is connected to a part select of
the signal, with the right-most instance index connected to the right-most
part of the vector, and progressing towards the left.
• There must be the correct number of bits in each signal to connect to all
instances (the signal size and port size must be multiples).
• Instance arrays were added in Verilog-1995, but many software tools did
not support them until Verilog-2001.
• Multiple instances of a module can also be created using a generate block
(see section 9.0).
• parameter values within a module may be redefined for each instance of the
module. Only parameter declarations may be redefined; localparam and
specparam constants cannot be redefined.
• Explicit redefinition uses a defparam statement with the parameter’s
hierarchical name.
• In-line implicit redefinition uses the # token as part of the module
instantiation. Parameter values are redefined in the same order in which
they are declared within the module.
• In-line explicit redefinition uses the # token as part of the module
instantiation. Parameter values may be redefined in any order. In-line
explicit parameter redefinition was added in Verilog-2001.
18 Verilog HDL Quick Reference Guide
Generate blocks provide control over the creation of many types of module
items. A generate block must be defined within a module, and is used to
generate code within that module. Generate blocks were added in Verilog-2001.
• genvar is an integer variable which must be a positive value. They may only
be used within a generate block. Genvar variables only have a value during
elaboration, and do not exist during simulation. Genvar variables must be
declared within the module where the genvar is used. They may be declared
either inside or outside of a generate block.
• generate_items are:
genvar_name = constant_expression;
net_declaration
variable_declaration
module_instance
primitive_instance
continuous_assignment
procedural_block
task_definition
function_definition
if (constant_expression)
generate_item or generate_item_group
if (constant_expression)
generate_item or generate_item_group
else
generate_item or generate_item_group
case (constant_expression)
genvar_value : generate_item or generate_item_group
genvar_value : generate_item or generate_item_group
...
default: generate_item or generate_item_group
endcase
for (genvar_name = constant_expression; constant_expression;
genvar_name = constant_expression)
generate_item or generate_item_group
• generate_item_group is:
begin: generate_block_name
generate_item
generate_item
...
end
22 Verilog HDL Quick Reference Guide
/* If the input bus widths are 8-bits or less, generate an instance of a carry-
look-ahead multiplier. If the input bus widths are greater than 8-bits,
generate an instance of a wallace-tree multiplier */
generate
if ((a_width < 8) || (b_width < 8))
CLA_mult #(a_width, b_width) m (a, b, prod);
else
WALLACE_mult #(a_width, b_width) m (a, b, prod);
endgenerate
endmodule
genvar i;
generate
for (i=0; i<SIZE; i=i+1)
begin: bit
assign bin[i] = ^gray[SIZE-1:i];
end
endgenerate
endmodule
© Sutherland HDL, Inc. 23
type_of_block @(sensitivity_list)
statement_group :group_name
local_variable_declarations
time_control procedural_statements
end_of_statement_group
Continuous assignments drive net types with the result of an expression. The
result is automatically updated anytime a value on the right-hand side changes.
• Explicit continuous assignments use the assign keyword to continuously
assign a value to a net.
• The net can be explicitly declared in a separate statement (see section 6.1).
• A net will be inferred if an undeclared name appears on the left side of the
assignment, and the name is declared as a port of the module containing the
continuous assignment. The net vector size will be the size of the port.
• New in Verilog-2001: A 1-bit net will be inferred if an undeclared name
appears on the left side of the assignment, and the name is not a port of the
module containing the continuous assignment.
• Implicit continuous assignments combine the net declaration and continuous
assignment into one statement, omitting the assign keyword.
• net_type may be any of the net data types except trireg.
• strength (optional) may only be specified when the continuous assignment is
combined with a net declaration. The default strength is (strong1, strong0).
• delay (optional) follows the same syntax as primitive delays (refer to section
8.0). The default delay is zero.
• expression may include any data type, any operator, and calls to functions.
• Continuous assignments model combinational logic. Each time a signal
changes on the right-hand side, the right-hand side is re-evaluated, and the
result is assigned to the net on the left-hand side.
• Continuous assignments are declared outside of procedural blocks. They
automatically become active at time zero, and are evaluated concurrently with
procedural blocks, module instances, and primitive instances.
12.0 Operators
Bitwise Operators
~ ~m invert each bit of m
& m & n AND each bit of m with each bit of n
| m | n OR each bit of m with each bit of n
^ m ^ n exclusive-OR each bit of m with n
~^ or ^~ m ~^ n exclusive-NOR each bit of m with n
<< m << n shift m left n-times and fill with zeros
>> m >> n shift m right n-times and fill with zeros
Unary Reduction Operators
& &m AND all bits in m together (1-bit result)
~& ~&m NAND all bits in m together (1-bit result)
| |m OR all bits in m together (1-bit result)
~| ~|m NOR all bits in m together (1-bit result)
^ ^m exclusive-OR all bits in m (1-bit result)
~^ or ^~ ~^m exclusive-NOR all bits in m (1-bit result)
Logical Operators
! !m is m not true? (1-bit True/False result)
&& m && n are both m and n true? (1-bit True/False result)
|| m || n are either m or n true? (1-bit True/False result)
Equality and Relational Operators (return X if an operand has X or Z)
== m == n is m equal to n? (1-bit True/False result)
!= m != n is m not equal to n? (1-bit True/False result)
< m < n is m less than n? (1-bit True/False result)
> m > n is m greater than n? (1-bit True/False result)
<= m <= n is m less than or equal to n? (1-bit True/False result)
>= m >= n is m greater than or equal to n? (1-bit True/False result)
Identity Operators (compare logic values 0, 1, X, and Z)
=== m === n is m identical to n? (1-bit True/False results)
!== m !== n is m not identical to n? (1-bit True/False result)
Miscellaneous Operators
?: sel?m:n conditional operator; if sel is true, return m: else return n
{} {m,n} concatenate m to n, creating a larger vector
{{}} {n{ }} replicate inner concatenation n-times
–> -> m trigger an event on an event data type
30 Verilog HDL Quick Reference Guide
Arithmetic Operators
+ m + n add n to m
– m - n subtract n from m
– -m negate m (2’s complement)
* m * n multiply m by n
/ m / n divide m by n
% m % n modulus of m / n
** m ** n m to the power n (new in Verilog-2001)
<<< m <<< n shift m left n-times, filling with 0 (new in Verilog-2001)
>>> m >>> n shift m right n-times; fill with value of sign bit if
expression is signed, otherwise fill with 0 (Verilog-2001)
Example of a Task
//TASK DEFINITION (must be declared within a module)
task read_mem (input [15:0] address,
output [31:0] data );
begin
read_request = 1;
wait (read_grant) addr_bus = address;
data = data_bus;
#5 addr_bus = 16'bz; read_request = 0;
end
endtask
//TASK CALL
always @(posedge clock)
read_mem(PC, IR);
32 Verilog HDL Quick Reference Guide
Functions:
• Must be declared within a module, and are local to that module.
• Return the value assigned to the function name.
• May be called any place an expression value can be used.
• Must have at least one input; may not have outputs or inouts.
• May not contain time controls or non-blocking assignments.
automatic (optional) allocates storage space for each function call, allowing
recursive function calls. Automatic functions were added in Verilog-2001.
range_or_type (optional) is the function return type or input type. The default is
a 1-bit reg. range_or_type can be:
• signed [msb :lsb]
• reg signed [msb :lsb]
• integer, time, real or realtime
signed (optional) indicates that the return value or input values are interpreted
as 2’s complement signed values. Signed functions were added in Verilog-2001.
Example of a Function
function automatic [63:0] factorial (input reg [31:0] n);
if (n<=1) factorial = 1;
else factorial = n * factorial(n-1); //recursive call
endfunction
if ( factorial(data) <= LIMIT ) //function call
specify
specparam_declarations (see 6.3)
simple_pin-to-pin_path_delay
edge-sensitive_pin-to-pin_path_delay
state-dependent_pin-to-pin_path_delay
timing_constraint_checks
endspecify
showcancelled list_of_path_outputs;
Indicates that a negative pulse, where the trailing edge of the pulse occurs
before the leading edge, will not propagate to the output. This is the default
behavior, and matches Verilog-1995.
noshowcancelled list_of_path_outputs;
Indicates that negative pulses propagate to the output as a logic X.
User Defined Primitives define new primitives, which are used exactly the same
as built-in primitives.
ANSI-C Style Port List (added in Verilog-2001)
primitive primitive_name
( output reg = logic_value terminal_declaration,
input terminal_declarations );
table
table_entry;
table_entry;
endtable
endprimitive
Old Style Port List
primitive primitive_name (output, input, input, ... );
output terminal_declaration;
input terminal_declarations;
reg output_terminal;
initial output_terminal = logic_value;
table
table_entry;
table_entry;
endtable
endprimitive
• Only one signal may have an edge transition specified for each table entry.
• If an edge transition is specified for one input, the UDP becomes sensitive to
transitions on all inputs. Therefore, all other inputs must have table entries to
cover transitions, or when the transition occurs the UDP will output an X.
• Level sensitive entries have precedence over edge sensitive table entries.
16.2 UDP Table Symbols
Truth Table
Definition
Symbol
0 logic 0 on input or output
1 logic 1 on input or output
x or X unknown on input or output
– no change on output (sequential UDPs only)
? don't care if an input is 0, 1, or X
b or B don't care if and input is 0 or 1
(vw) input transition from logic v to logic w
e.g.: (01) represents a transition from 0 to 1
r or R rising input transition: same as (01)
f or F falling input transition: same as (10)
p or P positive input transition: (01), (0X) or (X1)
n or N negative input transition: (10), (1X) or (X0)
* Any possible input transition: same as (??)
UDP Examples
primitive mux (y, a, b, sel); //COMBINATIONAL UDP
output y;
input sel, a, b;
table //Table order for inputs
// a b sel : y //matches primitive statement
0 ? 0 : 0; //select a; don’t care on b
1 ? 0 : 1; //select a; don’t care on b
? 0 1 : 0; //select b; don’t care on a
? 1 1 : 1; //select b; don’t care on a
endtable
endprimitive
primitive dff //SEQUENTIAL UDP
(output reg q = 0,
input clk, rst, d );
table
// d clk rst:state:q
? ? 0 : ? :0; //low true reset
0 R 1 : ? :0; //clock in a 0
1 R 1 : ? :1: //clock in a 1
? N 1 : ? :-; //ignore negedge of clk
* ? 1 : ? :-; //ignore all edges on d
? ? P : ? :-; //ignore posedge of rst
0 (0X) 1 : 0 :-; //reduce pessimism
1 (0X) 1 : 1 :-; //reduce pessimism
endtable
endprimitive
38 Verilog HDL Quick Reference Guide
$fclose(mcd_or_fd);
Closes a disk file that was opened by $fopen.
$fmonitor(mcd_or_fd, “text with format specifiers”, signal, signal,...);
$fdisplay(mcd_or_fd, “text with format specifiers”, signal, signal,...);
$fwrite(mcd_or_fd, “text with format specifiers”, signal, signal,...);
$fstrobe(mcd_or_fd, “text with format specifiers”, signal, signal,...);
Variations of the text display tasks that write to files.
$time
$stime
$realtime
Returns the current simulation time as a 64-bit vector, a 32-bit integer or a
real number, respectively.
$timeformat(unit, precision, “suffix”, min_field_width);
Controls the format used by the %t text format specifier.
• unit is the base that time is to be displayed in, where:
0 = 1sec -4 = 100us -7 = 100ns -10 = 100ps -13 = 100fs
-1 = 100ms -5 = 10us -8 = 10ns -11 = 10ps -14 = 10fs
-2 = 10ms -6 = 1us -9 = 1ns -12 = 1ps -15 = 1fs
-3 = 1ms
• precision is the number of decimal points to display.
• suffix is a string appended to the time, such as “ ns”.
• min_field_width is the minimum number of characters to display.
Example: $timeformat (-9, 2, “ns”, 10);
$printtimescale(module_hierarchical_name);
Prints the time scale of the specified module, or the scope from which it is
called if no module is specified.
signed_value = $signed(unsigned_value)
unsigned_value = $unsigned(signed_value)
Converts a value to or from a signed value; affects math operations and sign
extension. These system functions were added in Verilog-2001.
$swrite(reg_variable, format, arguments, format, arguments,...);
$swriteb(reg_variable, format, arguments, format, arguments,...);
$swriteo(reg_variable, format, arguments, format, arguments,...);
$swrited(reg_variable, format, arguments, format, arguments,...);
$sformat(reg_variable, format, arguments);
Similar to $write, except that the string is written to the reg variable instead of
to a file. These system tasks and functions were added in Verilog-2001.
code = $sscanf(str, format, arguments);
Similar to $fscanf, but reads values from a string. Added in Verilog-2001.
$readmemb(“file_name”, variable_array, start_address, end_address);
$readmemh(“file_name”, variable_array, start_address, end_address);
Loads the contents of a file into a memory array. The file must be an ASCII
file with values represented in binary ($readmemb) or hex ($readmemh).
Start and end address are optional.
64-bit_reg_variable = $realtobits(real_variable);
real_variable = $bitstoreal(64-bit_reg_variable);
Converts double-precision real variables to and from 64 bit reg vectors, so
that the real value can be passed through 64-bit ports.
integer = $test$plusargs(“invocation_option”)
integer = $value$plusargs(“invocation_option=format”, variable)
Tests the invocation command line for the invocation option. The option
must begin with a + on the command line, but the + is not included in the
string. If found, the routines return a non-zero value. $value$plusargs
converts any text following the string up to a white space to the format
specified, and puts the value into the second argument. Allowable formats
are %b, %o, %d, %h, %e, %f, %g and %s.
© Sutherland HDL, Inc. 41
Compiler directives provide a method for software tool vendors to control how
their tool will interpret Verilog HDL models.
• Compiler directives begin with the grave accent character ( ` ).
• Compiler directives are not Verilog HDL statements; there is no semi-colon at
the end of compiler directives.
• Compiler directives are not bound by modules or by files. When a tool
encounters a compiler directive, the directive remains in effect until another
compiler directive either modifies it or turns it off.
`resetall
Resets all compiler directives that have a default back to their default.
Directives that have no default are not affected.
`timescale time_unit base / precision base
Specifies the time units and precision for delays:
• time_unit is the amount of time a delay of 1 represents. The time unit must
be 1, 10, or 100
• base is the time base for each unit, ranging from seconds to femtoseconds,
and must be: s ms us ns ps or fs
• precision and base represent how many decimal points of precision to use
relative to the time units.
Example: `timescale 1 ns / 10 ps
Indicates delays are in 1 nanosecond units with
2 decimal points of precision (10 ps is .01 ns).
Note: There is no default timescale in Verilog; delays are simply relative
numbers until a timescale directive declares the units and base the numbers
represent.
`define macro_name text_string
`define macro_name (arguments) text_string (arguments)
Text substitution macro. Allows a text string to be defined as a macro name.
• text_string will be substituted in place of the macro_name where ever the
macro name is used.
• text_string is terminated by a carriage return—the string must be on one
line.
• arguments are evaluated before text is substituted.
• The macro_name must also be preceded by the grave accent mark ( ` )
each time the macro name is used.
• Comments may be used—they are not substituted into the place of the
macro name.
Examples:
`define cycle 20 //clock period
always #(`cycle/2) clk = ~clk;
`define NAND(dval) nand #(dval)
`NAND(3) i1 (y,a,b);
`NAND(3:4:5) i2 (o,c,d);
`undef macro_name
Removes the definition of a macro name.
42 Verilog HDL Quick Reference Guide
`ifdef macro_name
`ifndef macro_name
verilog_source_code
`else
verilog_source_code
`elsif
verilog_source_code
`endif
Conditional compilation. Allows Verilog source code to be optionally
included, based on whether or not macro_name has been defined using the
`define compiler directive or the +define+ invocation option. The
‘ifndef and ‘elsif directives were added in Verilog-2001.
Example:
`ifdef RTL
wire y = a & b;
`else
and #1 (y,a,b);
`endif
`include “file_name”
File inclusion. The contents of another Verilog HDL source file is inserted
where the `include directive appears.
`celldefine
`endcelldefine
Flags the Verilog source code between the two directives as a cell. Some
tools, such as a delay calculator for an ASIC, need to distinguish between a
module that represents an ASIC cell and other modules in the design.
`default_nettype net_data_type
`default_nettype none
Changes the net data type to be used for implicit net declarations. Any of the
net data types may be specified. By default, the implicit net data type is wire.
If none is specified, then implicit net declarations are disabled, and all nets
must be explicitly declared (specifying none was added in Verilog-2001).
`unconnected_drive pull1
`unconnected_drive pull0
`nounconnected_drive
Determines what logic value will be applied to unconnected module inputs.
The default is `nounconnected_drive, meaning unconnected inputs and
nets float at high impedance.
`uselib file=<file> dir=<directory> libext=<extension>
Specifies the Verilog source library file or directory in which the compiler
should search for the definitions of modules or UDPs instantiated in a design.
A `uselib directive with no arguments removes any preceding library
search directives. Note: This directive is not part of the IEEE 1364 Verilog
standard, but is implemented in most Verilog simulators.
Example:
`uselib file=/models/rtl_lib
ALU i1 (y1,a,b,op); //RTL model
`uselib dir=/models/gate_lib libext=.v
ALU i2 (y2,a,b,op); //Gate model
`uselib //turn off `uselib searching
© Sutherland HDL, Inc. 43
19.0 Configurations
config config_name;
design lib_name.cell_name;
default liblist list_of_library_names;
cell lib_name.cell_name liblist list_of_library_names;
cell lib_name.cell_name use lib_name.cell_name:config_name;
instance hierarchy_name liblist list_of_library_names;
instance hierarchy_name use lib_name.cell_name:config_name;
endconfig
• cell specifies a specific set of libraries in which to search for the source
code for that module or primitive name, instead of the libraries and order
specified in the default statement.
• lib_name. (optional) specifies which symbolic library contains the cell.
• cell_name (required) is the name of a module or primitive.
• instance specifies a specific set of libraries in which to search for the
source code for that specific module or primitive instance, instead of the
libraries and/or order specified in the default statement.
• hierarchy_name is the full hierarchy path name of an instance of a module
or primitive. The hierarchy path must start with the name specified in the
design statement.
• use (optional) specifies the location for a specific cell or instance of a cell,
instead of searching a for the cell in the default libraries.
• lib_name. (optional) specifies which symbolic library contains the cell.
• :config_name (optional) specifies that a different configuration block
should be used for the specified instance or cell. The design statement in
that configuration specifies the actual binding information.
A separate file is used to map symbolic libraries to the physical file locations.
• The library map file contains library statements, include statements and
Verilog-style comments.
• The map file is not Verilog source code.
• If the source files are moved, only the map file needs to be modified; The
Verilog source code and configuration blocks do not need to be changed.
• lib_name defines the symbolic library name which will be reference in
configuration blocks.
• list_of_file_paths is a comma-separated list of operating system paths to one
or more directories or specific files.
• A path which ends in / includes all files in the specified directory
(identical to a path which ends with /*).
• A path which does not begin with / is relative to the directory in which the
current library map file is located.
• Special symbols can be used in the path:
Notes:
Index 48
Symbols | ..................................................... 28
! .....................................................28 || .................................................... 28
!= ...................................................28 ~ .................................................... 28
!== .................................................28 ~& ................................................. 28
# ..............................................16, 23 ~^ .................................................. 28
$ (system tasks/functions) .............37 ~| ................................................... 28
$ (timing checks) ..........................34 ‘ (compiler directives) .................. 40
% (modulus operator) ...................29
A
% (text format codes) ....................37
always ........................................... 22
& ...................................................28
and .......................................... 18, 28
&& ................................................28
arrays of instances .............. 4, 16, 19
(* .....................................................3
arrays of nets .......................... 11, 15
* ....................................................29
arrays of variables .................. 12, 15
*) .....................................................3
assign ............................................ 24
** ..................................................29
attributes ......................................... 4
*/ .....................................................3
automatic ................................ 30, 31
*> ..................................................32
+ ..............................................29, 32 B
- ...............................................29, 32 base ................................................. 6
-> ...................................................28 begin ............................................. 22
-incdir ............................................43 binary radix ............................... 6, 37
/ .....................................................29 blocking assignment ..................... 24
/* .....................................................3 buf ................................................. 18
// ......................................................3 bufif0 ............................................ 18
< ....................................................28 bufif1 ............................................ 18
<< ..................................................28 C
<<< ................................................29 case ............................................... 25
<= ............................................24, 28 casex ............................................. 25
= ....................................................24 casez ............................................. 25
== ..................................................28 cell .......................................... 41, 42
=== ................................................28 cmos .............................................. 18
=> ..................................................32 comments ........................................ 3
> ....................................................28 compiler directives ....................... 40
>= ..................................................28 concurrency .................................... 3
>> ..................................................28 config ............................................ 42
>>> ................................................29 configuration blocks ..................... 42
? .......................................................6 constant functions ......................... 31
?: ....................................................28 continuous assignment ................. 27
@ ...................................................23
D
@* .................................................23
data type declarations ................... 10
\ (escaped identifiers) ......................4
data types ................................ 10, 12
^ .....................................................28
deassign ........................................ 24
^~ ..................................................28
decimal radix ............................ 6, 37
{ } ..................................................28
default ........................................... 42
{{ }} ..............................................28
defparam ....................................... 16
49 Index
Verilog® HDL
Quick Reference Guide
based on the Verilog-2001 standard
(IEEE Std 1364-2001)
published by
Sutherland
HD
L
Sutherland HDL, Incorporated
22805 SW 92nd Place
Tualatin, OR 97062
(503) 692-0898
www.sutherland-hdl.com
Sutherland HDL also sells the Verilog PLI Quick Reference Guide,
covering the Verilog Programming Language Interface.