Title: XST Synthesis
 1XST Synthesis
  2Objectives
-  After completing this module, you will be able 
 to
- List the synthesis options for XST. 
- Describe how to insert code from the Language 
 Template.
- Specify various methods for entering constraints.
3Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 2 XST Synthesis 
4Xilinx Design Process
- Step1 Design 
- Two design entry methods HDL(Verilog or VHDL) or 
 schematic drawings
- Step 2 Synthesize to create Netlist 
- Translates V, VHD, SCH files into an industry 
 standard format EDIF file
- Step 3 Implement design (netlist) 
- Translate, Map, Place  Route 
- Step 4 Configure FPGA 
- Download BIT file into FPGA 
HDL code
Schematic
Synthesize
Netlist
Implement
BIT File 
 5XST Features
- RAM inferencing 
- Schematic viewer 
- Error navigation 
- Timing-driven synthesis 
- Fanout control 
- Note Mixed language designs are not supported
6Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- Log Reports 
- Summary 
- Lab 3 XST Synthesis 
7XST Synthesis in Project Navigator
- Module/entity selected in Sources window treated 
 as top
- XST-specific processes 
- Synthesize 
- View Synthesis Report 
- Analyze Hierarchy 
- Check Syntax 
- XST-specific properties 
- Synthesis Options 
- HDL Options 
- Xilinx Specific Options
AM2910 as top-level 
 8Device Support
XST provides technology specific optimization for
- FPGAs 
- Virtex 
- Virtex-E 
- Virtex-II 
- Virtex-II Pro 
- Spartan-II 
- Spartan-IIE
- CPLDs 
- XC9500 
- XC9500XL 
- XC9500XV 
- CoolRunner 
- CoolRunner-II
9XST Flow
VHDL
Verilog 
Constraints
Synthesis Technology Specific Optimization
 To Implementation Tools 
 Synthesis Report File
.LOG
.NGC 
 10Main Synthesis Steps
HDL
HDL ParsingIdentification of language syntax 
errors
HDL SynthesisMacro recognition, FSM 
extraction,resource sharing
Low Level OptimizationMacro implementation, 
timing optimization,LUT mapping, register 
replication
.NGC
.LOG 
 11Macro Inference
- Macro inference consists of two main steps 
- Recognition (HDL synthesis level) XST tries to 
 recognize as many macros as possible
- Implementation (low level optimization) XST 
 makes technology dependent choices
- Improve design performance and decrease area 
- Preserve the macro as a macro? 
- Merge the macro with surrounded logic? 
- Choices depends on the macro type and size 
- If XST decides to preserve the macro, you must 
 decide the way the macro is to be implemented
12Macro Inference
Supported Macros
Sequential
Combinatorial
Special Cases
-  Arithmetic 
-  Adders 
-  Subtractors 
-  Adder/subtractors 
-  Comparators 
-  Multipliers 
-  Dividers 
-  Multiplexers 
-  Decoders 
-  Priority encoders 
-  Logical shifters 
-  Three states
-  Registers 
-  Latches 
-  Counters 
-  Accumulators 
-  Shift registers 
-  RAMs 
-  ROMS 
-  FSMs 
-  Reg. multipliers 
13FSM Recognition
- XST is able to recognize state machines 
 independent of the modeling style used
- For example, you may have several processes (one, 
 two, or three) in your description, depending on
 how you consider and decompose
- Notes 
- XST can handle/recognize synchronous state 
 machines
- Currently, XST requires FSM with initialization 
 signals, which can be asynchronous or synchronous
14FSM Optimization
- Optimization is based on 
- State assignment 
- Flip-flop (FF) type selection 
- State assignment - XST supports 
- One-Hot - speed optimization 
- Compact - area optimization (Xilinx proprietary) 
- Gray - minimizes hazards and glitches 
- Also Johnson, Sequential, User Defined 
- User Encoding - XST will use the original 
 encoding specified in the HDL file
- If you use enumerated type for your state 
 registers, you can use the enum_encoding
 constraint to assign a specific binary value to
 each state
15ISE GUI
- Synthesis options 
- Global synthesis and optimization goal and effort 
- HDL options 
- Family-specific inference and optimization 
 options
- Xilinx Specific options 
- Specific low-level implementation and 
 optimization algorithms
16XST Synthesis Options
- Set global synthesis, optimization goal, and 
 effort
- Optimization Goal (speed/area) 
- Optimization Effort (normal/high) 
- Synthesis Constraints File 
- Any text file 
- Use Synthesis Constraints File 
- Global Optimization Goal 
- Generate RTL Schematic 
- Write Timing Constraints 
- Verilog 2001
17XST HDL Options
- Set family-specific inference and optimization 
 options
- FSM Encoding Algorithm 
- RAM/ROM/Multiplexer Extraction 
- RAM/Multiplexer Style 
- Decoder/Priority Encoder Extraction 
- Shift Register/Logical Shifter Extraction 
- XOR Collapsing 
- Resource Sharing 
- Complex Clock Enable Extraction 
18XST Xilinx-Specific Options
- Set specific low-level implementation and 
 optimization algorithms
- Add I/O Buffers 
- Maximum Fanout 
- Equivalent Register Removal 
- Register Balancing 
- Move First/Last Flip-Flop Stage 
- Slice Packing 
- Pack I/O Registers into IOBs
19Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
20Language Templates
- Two methods to open templates 
- Language Icon 
- Edit -gt Language Templates 
- Language Templates provide common templates for 
 designs
- Component instantiation 
- Language templates 
- Synthesis templates
21Language Templates
- To use template, be sure that an HDL source file 
 is already opened
- Place cursor at the location for the code to be 
 entered
- In the Language Template GUI, right-click on the 
 template you wish to use
- Select Use in 
- Be sure the appropriate file name is listed
22HDL Libraries
- Create VHDL Library using New Source Wizard 
- HDL Libraries Displayed in Libraries Tab of 
 Sources Window
23Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
24What are Constraints?
- Writing constraints is a method of communicating 
 your design and performance objectives to the
 synthesis tools and implementation tools
25Xilinx Design Process
- Step1 Design 
- Two design entry methods HDL(Verilog or VHDL) or 
 schematic drawings
- Step 2 Synthesize to create Netlist 
- Translates V, VHD, SCH files into an industry 
 standard format EDIF file
- Step 3 Implement design (netlist) 
- Translate, Map, Place  Route 
- Step 4 Configure FPGA 
- Download BIT file into FPGA 
HDL code
Schematic
Synthesize
Synthesis CONSTRAINTS
Netlist
Implementation CONSTRAINTS
Implement
BIT File 
 26XST Constraints
- XST will accept synthesis constraints through the 
 
 Xilinx Constraints File (XCF)
- Do not confuse this with the User Constraints 
 File (UCF), which contains implementation
 constraints for the Xilinx tools
- When using an XCF file, specify the file in the 
 Synthesis Options tab
27XST Constraints
- To quickly enable or disable the use of a 
 constraint file by XST, you can check or uncheck
 the Use Synthesis Constraint File menu
-uc
-iuc 
 28Constraint Types
- Constraints in the XCF file can be divided into 
 two groups
- Timing 
- Non-timing 
- For all non-timing constraints, the MODEL or 
 BEGIN MODEL...END constructs must be used
- This is true for pure XST constraints, such as 
 FSM_EXTRACT or RAM_STYLE, as well as for
 implementation constraints, such as RLOC or KEEP
- For timing constraints, such as PERIOD, OFFSET, 
 TNM_NET, TIMEGRP, TIG, FROM-TO, etc., XST
 supports native UCF syntax, including the use of
 wildcards and hierarchical names
- Do not use these constraints inside the BEGIN 
 MODEL... END construct because XST will issue an
 error
29XCF - MODEL
- To apply a constraint to the entire entity or 
 module, use the following syntax
-  MODEL entity_name constraint_name  
 constraint_value
- Note If a constraint is applied to an entity or 
 module, the constraint
-  will be applied to each instance of 
 the entity/module
- To apply constraints to specific instances or 
 signals within an entity or module, use the INST
 or NET keywords
-  BEGIN MODEL entity_name 
-  INST instance_name constraint_name  
 constraint_value
-  NET signal_name constraint_name  
 constraint_value
-  END
30Sample FPGA Constraints/Attributes
- allclocknets 
- period 
- max_delay 
- mux_style 
- ram_style 
- maxfanout 
- register_duplication 
- keep_hierarchy 
- For more information on attribute syntax, consult 
 the XST Users Guide
31Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraint Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
32Design Constraints
- If XST decides to push flip-flops to IOBs, then 
 the following cases are taken into account
- Flip -flops controlling OBUFTs will be replicated 
33Design Constraints
- Flip-flops having feedback will be replicated
A
RES
CLK
A
CLK
RES
IOBTRUE 
 34Design Constraints
- If the output flip-flop belongs to a shift 
 register and represents its last stage, then it
 will be pushed to an IOB
- Note XST will not reduce the number of stages in 
 SRL and infer additional flip-flops in order to
 improve the clock-to-out of the slice
- Example If the user has described a 16-bit shift 
 register, then
RESULT Generated by XST
SLICE 
IOBTRUE
SLICE 
SI
SRL 14 bit
RES
IOBTRUE
reg
reg
SI
SRL 15 bit
RES
reg
CLK
CLK 
 35Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
36How XST Identifies Critical Paths During Timing 
Optimization
- Notes 
- Other synthesis tools apply frequency 
 specification to all four regions
- ALLCLOCKNETS (the default constraint for timing 
 optimization) in XST represents only
 clock-to-clock regions
- MAX_DELAY is the constraint incorporating all 
 four regions.
37How XST Identifies Critical Paths During Timing 
Optimization
- The identification of a critical path depends on 
 the timing constraints and is based on the slack
 calculation
- The value of the slack depends on the way the 
 constraints are applied
- As soon as all of the slacks are identified, XST 
 will choose the smallest (most negative) one in
 order to identify the Critical Region
- Let us consider the following example 
38How XST Identifies Critical Paths During Timing 
Optimization
- Suppose we have two clocks (clk1, clk2) in the 
 design. Before timing optimization their periods
 are estimated as
- clk1  30 ns 
- clk2  25 ns 
- If no value is supplied with the ALLCLOCKNETS 
 constraint, XST will calculate the slack assuming
 the goal delay is 0 ns
- clk1  -30 ns 
- clk2  -25 ns 
- As a consequence, clk1 will be considered the 
 critical one and XST will try to optimize this
 clock first
39How XST identifies Critical Paths During Timing 
Optimization
- Suppose a PERIOD constraint defines individual 
 timing requirement for each clock 25 ns for
 clk1, 15 ns for clk2. In this case the slack will
 be
- clk1  -5 ns 
- clk2  -10 ns 
- As a result, clk2 will be considered the critical 
 one, and XST will try to optimize this clock
 first
- The ultimate goal, in both cases, is to increase 
 the slack of all paths within the Critical
 Region. However, the final results of
 optimization are directly affected by the types
 and values of the constraints applied
40Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
41Understanding the Log File 
- The log file can be divided into three main parts
HDL Compilation
HDL Analysis
Table of synthesis options
HDL Synthesis
Messages generated duringsynthesis
Low LevelSynthesis
Final report
General Statistic Table
Timing Report 
 42Log File Organization
TABLE OF CONTENTS 1) Synthesis Options Summary 
 2) HDL Compilation 3) HDL Analysis 4) HDL 
Synthesis 4.1) HDL Synthesis Report 5) Low 
Level Synthesis 6) Final Report 6.1) 
Device utilization summary 6.2) TIMING 
REPORT . . .   
 HDL Compilation   
 Compiling vhdl 
file constant.vhd in Library my_lib. . . 
.   
 HDL Synthesis  
 Synthesizing Unit 
ltled_decgt. . . . 
 43Messages During Synthesis
- The structure of this part directly reflects the 
 main steps of the synthesis
-  Lists files used during 
-  synthesis
-  Syntax check Warnings 
-  and Errors
HDL Compilation
HDL Analysis
...
-  Information on extracted 
-  macros and FSMs for 
-  each hierarchical block 
-  Summary Table on  extracted macros for the 
 entire design
-  Encoding style chosen for each FSM
Messages generatedduring synthesis
HDL Synthesis
Low LevelSynthesis
...
-  Information on register 
-  replication and removal
44Final Report
...
Messages generated during synthesis
GeneralStatistic Table
Final Report
Timing Report (FPGA only) 
 45Timing Report
- XST is trying to keep its post-synthesis timing 
 report close to the report generated by TRACE
- Moreover, we have added a new table at the 
 beginning of the report summarizing clock
 information of the design
- List of all clocks in the design 
- How each clock is bufferized 
- How many loads each clock has
46Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis 
47Summary
- XST is provided with v5.2i ISE software 
- XST provides various options for synthesizing 
 designs
- Language Templates allow you to re-use commonly 
 used code
- Several methods for entering constraints
48Outline
- Introduction 
- XST Synthesis 
- Templates and Libraries 
- XST Constraints Entry 
- Design Constraints 
- Timing Constraints 
- XST Report File 
- Summary 
- Lab 3 XST Synthesis
49Lab 3 XST Synthesis
- Synthesize a verilog design using XST 
- View the report file 
- Take a snapshot 
- Change synthesis options 
- Add constraints to design 
- View timing results