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

Chapter 5: XST Design Constraints

R

(* ram_style = "{auto|block|distributed|pipe_distributed|block_power1|block_power2}" *)

The default is auto.

RAM Style XCF Syntax Example One

MODEL "entity_name" ram_style={auto|block|distributed|pipe_distributed|block_power1|block_ power2};

RAM Style XCF Syntax Example Two

BEGIN MODEL "entity_name"

NET "signal_name" ram_style={auto|block|distributed|pipe_distributed|block_power1|b lock_power2};

END;

RAM Style XST Command Line Syntax Example

Define RAM Style globally with the -ram_style command line option of the run command:

-ram_style {auto|block|distributed}

The default is auto.

The pipe_distributed value is not accessible through the command line.

RAM Style Project Navigator Syntax Example

Define RAM Style globally in Project Navigator > Process Properties > HDL Options > RAM Style.

Reduce Control Sets (REDUCE_CONTROL_SETS)

Reduce Control Sets (REDUCE_CONTROL_SETS) allows you to reduce the number of control sets and, as a consequence, reduce the design area. Reducing the control set number should improve the packing process in map, and therefore reduce the number of used slices even if the number of LUTs is increased.

Reduce Control Sets supports two values:

auto

XST optimizes automatically, and reduces the existing control sets in the design.

no

XST performs no control set optimization.

Reduce Control Sets Architecture Support

Reduce Control Sets applies to FPGA Virtex-5 devices only. Reduce Control Sets does not apply to CPLD devices.

Reduce Control Sets Applicable Elements

Reduce Control Sets applies globally.

404

www.xilinx.com

XST User Guide

 

 

10.1

R

XST FPGA Constraints (Non-Timing)

Reduce Control Sets Propagation Rules

Not applicable

Reduce Control Sets Syntax Examples

Following are syntax examples using Reduce Control Sets with particular tools or methods. If a tool or method is not listed, Reduce Control Sets may not be used with it.

Reduce Control Sets XST Command Line Syntax Example

Define Reduce Control Sets globally with the -reduce_control_sets command line option of the run command:

-reduce_control_sets {auto|no}

The default is no.

Reduce Control Sets Project Navigator Syntax Example

Define Reduce Control Sets globally in Project Navigator > Process Properties > Xilinx-

Specific Options > Reduce Control Sets.

Register Balancing (REGISTER_BALANCING)

Register Balancing (REGISTER_BALANCING) enables flip-flop retiming. The main goal of register balancing is to move flip-flops and latches across logic to increase clock frequency.

The two categories of Register Balancing are:

“Forward Register Balancing”

“Backward Register Balancing”

Forward Register Balancing

Forward Register Balancing moves a set of flip-flops at the inputs of a LUT to a single flipflop at its output.

A

FF

 

LUT1

 

LUT2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

FF

A

 

LUT1

 

FF

 

LUT2

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X9563

Figure 5-3: Forward Register Balancing

XST User Guide

www.xilinx.com

405

10.1

Chapter 5: XST Design Constraints

R

When replacing several flip-flops with one, select the name based on the name of the LUT across which the flip-flops are moving as shown in the following:

LutName_FRBId

Backward Register Balancing

Backward Register Balancing moves a flip-flop at the output of a LUT to a set of flip-flops at its inputs.

A

LUT2

LUT1

B

FF

A

FF

 

LUT1

 

LUT2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

FF

X9566

Figure 5-4: Backward Register Balancing

As a consequence the number of flip-flops in the design can be increased or decreased.

The new flip-flop has the same name as the original flip-flop with an indexed suffix as shown in the following:

OriginalFFName_BRBId

Register Balancing Values

Register Balancing values are:

yes

Both forward and backward retiming are allowed.

no (default)

Neither forward nor backward retiming is allowed.

forward

Only forward retiming is allowed

backward

Only backward retiming is allowed.

true (XCF only)

false (XCF only)

406

www.xilinx.com

XST User Guide

10.1

R

XST FPGA Constraints (Non-Timing)

Additional Constraints That Affect Register Balancing

Two additional constraints control register balancing:

“Move First Stage (MOVE_FIRST_STAGE)”

“Move Last Stage (MOVE_LAST_STAGE)”

Several other constraints also influence register balancing:

“Keep Hierarchy (KEEP_HIERARCHY)”

If the hierarchy is preserved, flip-flops are moved only inside the block boundaries.

If the hierarchy is flattened, flip-flops may leave the block boundaries.

“Pack I/O Registers Into IOBs (IOB)”

If IOB=TRUE, register balancing is not applied to the flip-flops having this property.

“Optimize Instantiated Primitives (OPTIMIZE_PRIMITIVES)”

Instantiated flip-flops are moved only if OPTIMIZE_PRIMITIVES=YES.

Flip-flops are moved across instantiated primitives only if OPTIMIZE_PRIMITIVES=YES.

“Keep (KEEP)”

If applied to the output flip-flop signal, the flip-flop is not moved forward.

LUT

FF

LUT

 

 

 

 

KEEP

X9565

Figure 5-5: Applied to the Output Flip-Flop Signal

If applied to the input flip-flop signal, the flip-flop is not moved backward.

LUT

FF

LUT

 

 

KEEP

 

 

X9562

Figure 5-6: Applied to the Input Flip-Flop Signal

If applied to both the input and output of the flip-flop, it is equivalent to

REGISTER_BALANCING=no.

XST User Guide

www.xilinx.com

407

10.1

Chapter 5: XST Design Constraints

R

Register Balancing Architecture Support

Register Balancing applies to all FPGA devices. Register Balancing does not apply to CPLD devices.

Register Balancing Applicable Elements

Register Balancing can be applied:

Globally to the entire design using the command line or Project Navigator

To an entity or module

To a signal corresponding to the flip-flop description (RTL)

To a flip-flop instance

To the Primary Clock Signal

In this case the register balancing is performed only for flip-flops synchronized by this clock.

Register Balancing Propagation Rules

Register Balancing applies to the entity, module, or signal to which it is attached.

Register Balancing Syntax Examples

Following are syntax examples using Register Balancing with particular tools or methods. If a tool or method is not listed, Register Balancing may not be used with it.

Register Balancing VHDL Syntax Example

Before using Register Balancing, declare it with the following syntax:

attribute register_balancing: string;

After declaring Register Balancing, specify the VHDL constraint:

attribute register_balancing of {signal_name|entity_name}:

{signal|entity} is "{yes|no|foward|backward}";

Register Balancing Verilog Syntax Example

Place Register Balancing immediately before the module or signal declaration:

(* register_balancing = "{yes|no|foward|backward}" *)

The default is no.

Register Balancing XCF Syntax Example One

MODEL "entity_name" register_balancing={yes|no|true|false|forward|backward};

Register Balancing XCF Syntax Example Two

BEGIN MODEL "entity_name"

NET "primary_clock_signal" register_balancing={yes|no|true|false|forward|backward};

END;

408

www.xilinx.com

XST User Guide

 

 

10.1

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