- •Preface
- •About This Manual
- •Other Information Sources
- •Syntax Conventions
- •Text Command Syntax
- •About the Graphical User Interface
- •Using Menus
- •Using Forms
- •HDL Synthesis Overview
- •HDL Synthesis Flow
- •Read Technology Libraries
- •Read Design Data
- •Build Generic Design
- •Save Generic Netlist
- •Synthesizing Mixed VHDL/Verilog Designs
- •Querying the HDL Design Pool
- •Using get_hdl_top_level Command
- •Using get_hdl_hierarchy Command
- •Using get_hdl_type Command
- •Building Generic Netlists from HDL
- •Multiple Top-Level Designs
- •Building Parameterized Designs
- •Verilog Modeling Styles
- •Modeling Combinational Logic
- •Register Inferencing
- •Latch Inference
- •Flip-Flop Inference
- •case Statements
- •Incomplete case Statement
- •Complete case Statement
- •Use of casex and casez Statements
- •for Statement
- •Synthesis Directives
- •Code Selection Directives
- •Architecture Selection Directive
- •case Statement Directives
- •Module Template Directive
- •Function and Task Mapping Directives
- •Set and Reset Synthesis Directives
- •Verilog Preprocessor Directives
- •Compiler Directives
- •The ‘for Compiler Directive
- •The ‘if Compiler Directive
- •The ‘eval Compiler Directive
- •The ‘{} Compiler Directive
- •Command Line Options
- •VPP Flag Attribute
- •Verilog-Related Commands and Globals
- •VHDL Modeling Style
- •Modeling Combinational Logic
- •Register Inferencing
- •Latch Inference
- •Flip-Flop Inferencing
- •Specifying Clock Edges
- •case Statement
- •Incomplete case Statement
- •Complete case Statement
- •for loop
- •Synthesis Directives
- •Code Selection Directives
- •Architecture Selection Directive
- •case Statement Directive
- •Enumeration Encoding Directive
- •Entity Template Directive
- •Function and Procedure Mapping Directives
- •Signed Type Directive
- •Resolution Function Directives
- •Type Conversion Directives
- •Set and Reset Synthesis Directives
- •Reading VHDL Designs
- •Using Arithmetic Packages From Other Vendors
- •Switching between VHDL’87 / VHDL’93
- •Reusing Previously Analyzed Entities
- •Modifying Case of VHDL Names
- •Writing VHDL Netlists
- •Selecting Bit-Level Representation
- •Selecting Between VHDL’87 and VHDL’93
- •Referring to VHDL Packages in Netlists
- •Writing Component Declarations
- •Hierarchical VHDL Designs
- •Component Instantiations and Bindings
- •Restrictions on Entities with Multiple Architectures
- •Precedence Rules for Architecture Selection
- •VHDL-Related Commands and Globals
- •Finite State Machine Overview
- •BuildGates Synthesis and Finite State Machines
- •Extracting the State Transition Table for the FSM
- •Viewing the State Transition Table for the FSM
- •FSM Optimization Features
- •Unreachable State Removal
- •State Assignment or Re-Encoding
- •State Minimization
- •Terminal State Check
- •Verilog and VHDL FSM Directives
- •Verilog FSM Directives
- •VHDL FSM Directives
- •FSM Coding Styles
- •Using the -reachable Option
- •Avoiding a Simulation Mismatch
- •EDIF Interface
- •Reading EDIF Designs
- •Writing EDIF Designs
- •Representing Power and Ground in EDIF
- •Net Representation for Power and Ground
- •Port Representation for Power and Ground
- •Instance Representation for Power and Ground
- •Verilog Constructs
- •Fully Supported Constructs
- •Declarations
- •Operators and Expressions
- •Partially Supported Constructs
- •Ignored Constructs
- •Unsupported Constructs
- •Summary of Verilog Constructs
- •VHDL Constructs
- •Notes on Supported Constructs
Envisia HDL Modeling Reference
Verilog Constructs
rtranif0
rtranif1
pullup
pulldown
Hierarchically referenced identifiers
Procedural Statements
The following procedural statements are not supported:
initial procedural block
deassign
force
release
fork
join
table
endtable
primitive
endprimitive -> (event triggers)
assign (procedural and procedural continuous assignments)
Module Instances
The following module instances are not supported:
defparam
Summary of Verilog Constructs
Table A-2 provides a quick cross-reference of level of support for all Verilog HDL constructs.
The support is indicated as fully supported (Full), partially supported (Partial), ignored
September 2000 |
126 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
(Ignored), and not supported (No). Wherever possible, the restrictions are listed to describe the partial nature of the support for each language construct.
Table A-2 Verilog Constructs
Group |
Construct |
Support |
|
|
|
Basic |
Identifiers |
Full |
|
escaped identifiers |
Full |
|
sized constants (b,o,d,h) |
Full |
|
unsized constants |
Full |
|
signed constants (s) |
Full |
|
string constants |
No |
|
real constants |
No |
|
use of z, ? in constants |
Full |
|
use of x in constants |
Full |
|
module, endmodule |
Full |
|
macromodule |
Full |
|
hierarchical references |
No |
|
//comment |
Full |
|
/*comment*/ |
Full |
|
System tasks |
Ignored |
|
System functions |
Partial |
Data types |
wire, wand, wor, tri, triand, trior |
Full |
|
tri0, tri1 |
No |
|
supply0, supply1 |
Full |
|
trireg, small, medium, large |
No |
|
reg, integer |
Full |
|
real |
No |
|
time |
No |
|
event |
No |
September 2000 |
127 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
Table A-2 Verilog Constructs, continued
Group |
Construct |
Support |
|
|
|
|
parameter |
Full |
|
scalared, vectored |
Ignored |
|
input, output, inout |
Full |
|
memory |
Full |
Drive Strengths |
supply0, supply1 |
Ignored |
|
strong0, strong1 |
Ignored |
|
pull0, pull1 |
Ignored |
|
large0, large1 |
Ignored |
|
weak0, weak1 |
Ignored |
|
medium0, medium1 |
Ignored |
|
small0, small1 |
Ignored |
|
highz0, highz1 |
Ignored |
Module instances |
connect port by name, order |
Full |
|
override parameter by order |
Full |
|
defparam |
No |
|
constants connected to ports |
Full |
|
unconnected ports |
Full |
|
expressions connected to ports |
Full |
|
delay on built-in gates |
Ignored |
Built-in primitives |
and, or, nand, nor, xor, xnor |
Full |
|
not, notif0, notif1 |
Full |
|
buf, bufif0, bufif1 |
Full |
|
tran |
Full |
|
tranif0, tranif1, rtran, rtranif0, rtranif1 |
No |
|
pmos, nmos, cmos, rpmos, rnmos, rcmos |
No |
|
pullup, pulldown |
No |
UDPs |
primitive, endprimitive |
No |
September 2000 |
128 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
Table A-2 Verilog Constructs, continued
Group |
Construct |
Support |
|
|
|
|
table, endtable |
No |
Operators and expressions |
+, - (binary and unary) |
Full |
|
/, % |
Partial |
|
* |
Full |
|
~ |
Full |
|
bitwise &, |, ^, ~^, ^~ |
Full |
|
reduction &, |, ^, ~&, ~|, ~^, ^~ |
Full |
|
!, &&, || |
Full |
|
==, !=, <, <=, >, >= |
Full |
|
===, !== |
No |
|
<<, >> |
Full |
|
{}, {n{}} |
Full |
|
?: |
Full |
|
function call |
Full |
Event control |
delay/wait (#) |
Ignored |
|
@ |
Partial |
|
event or |
Full |
|
posedge, negedge |
Partial |
|
wait |
Ignored |
|
intra-assignment event control |
Ignored |
|
event trigger (->) |
No |
Bit and part selects |
constant bit-select, part-select of vectors in |
Full |
|
cases of constant MSB and LSB specifiers |
|
|
variable bit-select on left-hand side of an |
Full |
|
assignment |
|
Continuous assignments |
net/wire declaration |
Full |
|
using assign |
Full |
September 2000 |
129 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
Table A-2 Verilog Constructs, continued
Group |
Construct |
Support |
|
|
|
|
use of delay |
Ignored |
Procedural blocks |
initial |
No |
|
always (exactly one @ required) |
Partial |
Procedural statements |
; |
Full |
|
begin-end |
Full |
|
if, else |
Full |
|
a.for (constant bounds, only + and - operation |
Partial |
|
on index) |
|
awhile
arepeat
aforever
case, casex, casez, endcase, default disable
fork-join task enable
Partial
Full
Partial
Full
Partial
No
Full
|
a. A loop is unrolled to a maximum count specified in hdl_max_loop limit |
|
Procedural assignments |
blocking (=) assignments |
Full |
|
non-blocking (<=) assignments |
Full |
|
procedural continuous assignments (assign) |
No |
|
deassign |
No |
|
force, release |
No |
Functions and tasks |
function, endfunction |
Full |
|
task, endtask |
Full |
Named blocks |
named block creation |
Full |
|
local variable declaration |
Full |
Specify block |
specify, endspecify |
Ignored |
September 2000 |
130 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
Table A-2 Verilog Constructs, continued
Group |
Construct |
Support |
|
|
|
|
specparam |
Ignored |
|
module path delays |
Ignored |
Compiler directives |
`define |
Full |
|
`resetall |
Full |
|
`ifdef, `else, `endif |
Full |
|
`include |
Full |
VPP directives |
`if |
Full |
|
`for |
Full |
|
`eval |
Full |
|
`{} |
Full |
|
|
|
September 2000 |
131 |
Product Version 4.0 |
Envisia HDL Modeling Reference
Verilog Constructs
September 2000 |
132 |
Product Version 4.0 |