01.07.2013 Views

Xilinx Constraints Guide

Xilinx Constraints Guide

Xilinx Constraints Guide

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Example One<br />

Chapter 4: <strong>Xilinx</strong> <strong>Constraints</strong><br />

Place the memory in the SLICE_X1Y1. SLICE_X1Y1 is in the lower left corner of the<br />

device. You can apply a single-SLICE constraint such as this only to a 16 x 1 or 32 x 1<br />

memory.<br />

Schematic LOC=SLICE_X1Y1<br />

UCF INST “/top-7/rq” LOC=SLICE_X1Y1;<br />

Example Two<br />

Place the memory in either SLICE_X2Y4 or SLICE_X7Y9.<br />

Schematic LOC=SLICE_X2Y4, SLICE_X7Y9<br />

UCF INST “/top-7/rq” LOC=SLICE_X2Y4,<br />

SLICE_X7Y9;<br />

Example Three<br />

Do not place the memory in column of slices whose X coordinate is 5. You can use the<br />

wildcard (*) character in place of either the X or Y coordinate value in the SLICE name to<br />

specify an entire row (Y*) or column (X*) of slices.<br />

Schematic PROHIBIT SLICE_X5Y*<br />

UCF CONFIG PROHIBIT=SLICE_X5Y*;<br />

Block RAM (RAMBs) Constraint Examples<br />

This section applies to FPGA devices<br />

Block RAM constraints can be assigned from the schematic or through the UCF file.<br />

From the schematic, attach the LOC constraints to the block RAM symbol. The<br />

constraints are then passed into the netlist file. After mapping they are read by PAR.<br />

For more information on attaching LOC constraints, see the application user guide.<br />

Alternatively, in the constraints file a memory is identified by a unique instance name.<br />

Spartan-3 and Higher Devices<br />

An FPGA block RAM has a different XY grid specification than a slice or multiplier. It is<br />

specified using RAMB16_Xm Yn where the X and Y coordinate values correspond to<br />

the block RAM grid array. A block RAM located at RAMB16_X0Y1 is not located at the<br />

same site as a flip-flop located at SLICE_X0Y1.<br />

For example, assume you have a device with two columns of block RAM, each column<br />

containing two blocks, where one column is on the right side of the chip and the other is<br />

on the left. The block RAM located in the lower left corner is RAMB16_X0Y0. Because<br />

there are only two columns of block RAM, the block located in the upper right corner<br />

is RAMB16_X1Y1.<br />

Schematic LOC=RAMB16_X0Y0 (for all FPGA devices<br />

except Virtex-5 devices)<br />

LOC=RAMB36_X0Y0 (for Virtex-5 devices)<br />

UCF INST “/top-7/rq” LOC=RAMB16_X0Y0;<br />

Slice Constraint Examples<br />

This section applies to all FPGA devices These are currently the only architectures that<br />

use the slice-based XY grid designations.<br />

<strong>Constraints</strong> <strong>Guide</strong><br />

UG625 (v. 13.2) July 6, 2011 www.xilinx.com 167

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!