Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
xst.pdf
Скачиваний:
141
Добавлен:
11.06.2015
Размер:
5.64 Mб
Скачать

Chapter 3: XST FPGA Optimization

R

Limitations of Flip-Flop Retiming

Flip-flop retiming has the following limitations:

Flip-flop retiming is not applied to flip-flops that have the IOB=TRUE property.

Flip-flops are not moved forward if the flip-flop or the output signal has the “Keep (KEEP)” property.

Flip-flops are not moved backward if the input signal has the “Keep (KEEP)” property.

Instantiated flip-flops are moved only if the Optimize Instantiated Primitives constraint or command line option is set to yes.

Flip-Flops are moved across instantiated primitives only if the Optimize Instantiated Primitives command line option or constraint is set to yes.

Flip-flops with both a set and a reset are not moved.

Controlling Flip-Flop Retiming

Use the following constraints to control flip-flop retiming:

“Register Balancing (REGISTER_BALANCING)”

“Move First Stage (MOVE_FIRST_STAGE)”

“Move Last Stage (MOVE_LAST_STAGE)”

Partitions

XST supports Partitions in parallel with“Incremental Synthesis.” Partitions are similar to Incremental Synthesis with one significant difference. Partitions not only rerun synthesis in an incremental fashion, but place and route runs also preserve unchanged sections of the design.

Caution! Do not use Incremental Synthesis and Partitions concurrently. XST rejects the design if, at the same time: (1) Incremental_Synthesis and Resynthesize constraints are used in the design; and (2) Partitions are defined in the repository.

For more information on Partitions, see the ISE Help.

Incremental Synthesis

This section discusses Incremental Synthesis, and includes:

“About Incremental Synthesis”

“Incremental Synthesis (INCREMENTAL_SYNTHESIS)”

“Grouping Through Incremental Synthesis Diagram”

“Resynthesize (RESYNTHESIZE)”

About Incremental Synthesis

Note: Incremental Synthesis affects synthesis only, not place and route.

Incremental Synthesis allows you to resynthesize only the modified portions of the design, rather than resynthesizing the entire design.

270

www.xilinx.com

XST User Guide

 

 

10.1

R

Incremental Synthesis

The two main categories of incremental synthesis are:

Block Level

In Block Level, the synthesis tool resynthesizes the entire block if at least one modification was made inside this block.

Gate or LUT Level

In Gate or LUT Level, the synthesis tool tries to identify the exact changes made in the design, and generates the final netlist with minimal changes.

XST supports block level incremental synthesis with some limitations.

Incremental Synthesis is implemented using two constraints:

“Incremental Synthesis (INCREMENTAL_SYNTHESIS)”

“Resynthesize (RESYNTHESIZE)”

The introduction of “Partitions” changes some aspects of the existing Incremental

Synthesis:

The underscore (_) hierarchy separator is not supported if the design is partitioned on several blocks using the“Incremental Synthesis (INCREMENTAL_SYNTHESIS)” constraint. If the underscore (_) hierarchy separator is specified, XST issues an error.

The names of generated NGC files for each logic block are based on the instance names, even if the block is instantiated only once.

Caution! Do not use Incremental Synthesis and “Partitions” concurrently. XST will reject the design if, at the same time: (1) Incremental_Synthesis and Resynthesize constraints are used in the design; and (2) Partitions are defined in the repository.

Incremental Synthesis (INCREMENTAL_SYNTHESIS)

Use “Incremental Synthesis (INCREMENTAL_SYNTHESIS)” to control the decomposition of the design on several logic groups.

If the “Incremental Synthesis (INCREMENTAL_SYNTHESIS)” constraint is applied to a specific block, this block with all its descendents is considered as one logic group, until the next “Incremental Synthesis (INCREMENTAL_SYNTHESIS)” constraint is found. During synthesis, XST generates a single NGC file for the logic group.

You can apply the “Incremental Synthesis (INCREMENTAL_SYNTHESIS)” constraint to a block that is instantiated more than once.

If a single block is changed, then the entire logic group is resynthesized, and a new NGC file is generated.

Figure 3-1, “Grouping Through Incremental Synthesis,” shows how blocks are grouped by the “Incremental Synthesis (INCREMENTAL_SYNTHESIS)” constraint. Consider the following:

LEVA, LEVA_1, LEVA_2, my_add, my_sub as one logic group

LEVB, my_and, my_or and my_sub as another logic group

TOP is considered separately as a single logic group

XST User Guide

www.xilinx.com

271

10.1

Chapter 3: XST FPGA Optimization

R

Grouping Through Incremental Synthesis Diagram

TOP

LEVA incremental_synthesis=true

LEVB incremental_synthesis=true

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LEVA_1

 

LEVA_2

 

 

 

my_and

 

my_or

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

my_add

 

my_sub

 

 

 

X9858

Figure 3-1: Grouping Through Incremental Synthesis

The name of the NGC file is based on the:

Block name

Full hierarchical instance name of the logic block

Table 3-3: NGC File Name Example

Logic Block

Full Hierarchical

Corresponding NGC file

Instance Name

 

 

 

 

 

My_Block

instA/instB/instC

instA_instB_instC#My

 

 

_Block.ngc

 

 

 

Resynthesize (RESYNTHESIZE)

This section discusses “Resynthesize (RESYNTHESIZE)” and includes:

“About Resynthesize (RESYNTHESIZE”

“Resynthesize (RESYNTHESIZE) Examples”

About Resynthesize (RESYNTHESIZE

XST automatically recognizes which blocks were changed, and resynthesizes only those that were changed. This detection is done at the file level. If an HDL file contains two blocks, both blocks are considered modified. If these two blocks belong to the same logic group, there is no impact on the overall synthesis time. If the HDL file contains two blocks that belong to different logic groups, both logic groups are considered changed and are resynthesized. Xilinx recommends that you keep different blocks in a single HDL file only if they belong to the same logic group.

272

www.xilinx.com

XST User Guide

 

 

10.1

R

Incremental Synthesis

Use “Resynthesize (RESYNTHESIZE)” to force resynthesis of the blocks that were not changed.

XST runs HDL synthesis on the entire design. However, during low level optimization XST re-optimizes modified blocks only.

Resynthesize (RESYNTHESIZE) Examples

This section gives the following “Resynthesize (RESYNTHESIZE)” examples:

“Resynthesize (RESYNTHESIZE) Example One (Three NGC Files)”

“Resynthesize (RESYNTHESIZE) Example Two (Changes to Block LEVA_1)”

“Resynthesize (RESYNTHESIZE) Example Three (No Changes)”

“RESYNTHESIZE Example Four (Change One Timing Constraint)”

The coding examples in this section are accurate as of the date of publication. Download updates from ftp://ftp.xilinx.com/pub/documentation/misc/examples_v9.zip.

Resynthesize (RESYNTHESIZE) Example One (Three NGC Files)

In this example, XST generates three NGC files as shown in the following log file segment.

...

================================================================

*

* Final Report

*

================================================================

Final Results

 

Top Level Output File Name

: c:\users\incr_synt\new.ngc

Output

File Name

: c:\users\incr_synt\leva.ngc

Output

File Name

: c:\users\incr_synt\levb.ngc

================================================================

...

Resynthesize (RESYNTHESIZE) Example Two (Changes to Block LEVA_1)

If you made changes to block LEVA_1, XST automatically resynthesizes the entire logic group, including LEVA, LEVA_1, LEVA_2 and my_add, my_sub as shown in the following log file segment.

...

================================================================

*

* Low Level Synthesis

*

================================================================

Final Results

 

Incremental synthesis

Unit <my_and> is up to date ...

Incremental synthesis

Unit <my_and> is up to date ...

Incremental synthesis

Unit <my_and> is up to date ...

Incremental synthesis

Unit <my_and> is up to date ...

Optimizing unit <my_sub> ...

 

Optimizing unit <my_add> ...

 

XST User Guide

www.xilinx.com

273

10.1

Chapter 3: XST FPGA Optimization

R

Optimizing unit <leva_1> ...

Optimizing unit <leva_2> ...

Optimizing unit <leva> ...

================================================================

...

Resynthesize (RESYNTHESIZE) Example Three (No Changes)

If you made no changes to the design, during Low Level synthesis, XST reports that all blocks are up to date and the previously generated NGC files are kept unchanged, as shown in the following log file segment.

...

================================================================

*

* Low Level Synthesis

*

================================================================

Incremental synthesis: Unit <my_and> is up to date ...

Incremental synthesis: Unit <my_or> is up to date ...

Incremental synthesis: Unit <my_sub> is up to date ...

Incremental synthesis: Unit <my_add> is up to date ...

Incremental synthesis: Unit <levb> is up to date ...

Incremental synthesis: Unit <leva_1> is up to date ...

Incremental synthesis: Unit <leva_2> is up to date ...

Incremental synthesis: Unit <leva> is up to date ...

Incremental synthesis: Unit <top> is up to date ...

================================================================

...

RESYNTHESIZE Example Four (Change One Timing Constraint)

If you changed one timing constraint, XST cannot detect this modification. To force XST to resynthesize the required blocks, use the “Resynthesize (RESYNTHESIZE)” constraint. For example, if LEVA must be resynthesized, apply the “Resynthesize (RESYNTHESIZE)” constraint to this block. All blocks included in the <leva> logic group are re-optimized and new NGC files are generated as shown in the following log file segment.

...

================================================================

*

* Low Level Synthesis

*

================================================================

Incremental synthesis: Unit <my_and> is up to date ...

Incremental synthesis: Unit <my_or> is up to date ...

Incremental synthesis: Unit <levb> is up to date ...

Incremental synthesis: Unit <top> is up to date ...

...

Optimizing unit <my_sub> ...

Optimizing unit <my_add> ...

Optimizing unit <leva_1> ...

Optimizing unit <leva_2> ...

Optimizing unit <leva> ...

================================================================

274

www.xilinx.com

XST User Guide

 

 

10.1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]