
- •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
HDL Synthesis Overview
The instance I1 of FOO in entity TOP_VHDL is linked with the Verilog module foo (since foo and FOO are identical from a case-insensitive point of view). The instance, inst1 of FOO, in module TOP_VERILOG is not linked to foo (since a Verilog instantiation requires an exact name match).
Querying the HDL Design Pool
Design data is often organized into tens or even hundreds of HDL files. It is very useful to investigate the design hierarchy right after the HDL files are read into BuildGates synthesis, without first generating a generic netlist using do_build_generic.
BuildGates synthesis provides several commands that allow you to query the entire pool of HDL designs that have been read in using read_vhdl or read_verilog. Queries provide various useful information, including: determining which subtrees in the design hierarchy need to be synthesized and generating Makefile-like scripts for managing the design’s generic build and optimization steps.
To illustrate these commands (which are defined in the following sections), consider the following VHDL design that consists of three modules: TOP, BOT, and BOTG. Assume that the design below is in a VHDL file called design.vhd that has been read in using the read_vhdl command:
ac_shell> read_vhdl design.vhd
Entity BOTG is
generic (WIDTH : natural := 1);
port (O: out bit_vector(WIDTH-1 downto 0)); end;
Architecture A of BOTG is begin
O <= (others => ’1’); end;
Entity BOT is
port (O: out integer); end;
Architecture A of BOT is begin
O <= 25; end;
September 2000 |
18 |
Product Version 4.0 |

Envisia HDL Modeling Reference
HDL Synthesis Overview
Entity TOP is
port (O8: out bit_vector(7 downto 0); O1: out integer);
end;
Architecture A of TOP is begin
I1 : entity work.BOT port map (O1);
I8 : entity work.BOTG generic map (8) port map (O8); end;
Using get_hdl_top_level Command
The get_hdl_top_level command displays a list containing the names of all top level designs (designs that are not instantiated by any other design). From the example above, the command:
ac_shell> get_hdl_top_level
yields the following output.
TOP
Using get_hdl_hierarchy Command
The get_hdl_hierarchy command displays the design hierarchy. For each design, the command lists the names of the designs that are instantiated within and whether or not the instantiations are parameterized (using parameters in Verilog or generics in VHDL).
From the VHDL example above, the command:
ac_shell> get_hdl_hierarchy
yields the following output.
{TOP {{BOT n} {BOTG p}}} {BOT {}} {BOTG {}}
The output indicates that TOP instantiates both BOT (n represents a non-parameterized instantiation) and BOTG (p indicates a parameterized instantiation, since design BOTG contains generics). BOT and BOTG do not instantiate any other designs.
To obtain the hierarchy for a specific design, specify the module, for example:
ac_shell> get_hdl_hierarchy TOP
yields the following output.
{TOP {{BOT n} {BOTG p}}}
September 2000 |
19 |
Product Version 4.0 |