virtex-6 fpga configurable logic block user guide

Upload: nam-nguyen

Post on 04-Apr-2018

247 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    1/50

  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    2/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com UG364 (v1.2) February 3, 2012

    Notice of DisclaimerThe information disclosed to you hereunder (the Materials) is provided solely for the selection and use of Xilinx products. To the maximumextent permitted by applicable law: (1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALLWARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OFMERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whetherin contract or tor t, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arisingunder, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, orconsequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any actionbrought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to productspecifications. You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent. Cer tain products aresubject to the terms and conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm ; IP cores may besubject to warranty and support terms contained in a license issued to you by Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in CriticalApplications: http://www.xilinx.com/warranty.htm#critapps .

    20092012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein aretrademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.

    Revision HistoryThe following table shows the revision history for this document.

    Date Version Revision

    06/24/09 1.0 Initial Xilinx release.

    09/16/09 1.1 Add Virtex-6 HXT devices to Table 2 . Updated discussions at Look-Up Table (LUT),page 11 , and Static Read Operation, page 29 . CLB labeling change in figures throughoutdocument ( Figure 6 through Figure 13 , Figure 15 , Figure 17 , Figure 27 throughFigure 29 ), including clarifying the T DS/T DH functions, descriptions, and notes in

    Table 7, page 39 and Table 8, page 42 .02/03/12 1.2 In Enable WE/WED , updated second sentence to say that an inactive write enable

    prevents writing to memory cells. In Inverting Clock Pins , updated second sentence topositive edge of the clock.

    http://www.xilinx.com/http://www.xilinx.com/warranty.htmhttp://www.xilinx.com/warranty.htm#critappshttp://www.xilinx.com/warranty.htm#critappshttp://www.xilinx.com/warranty.htmhttp://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    3/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 3UG364 (v1.2) February 3, 2012

    Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    Preface: About This GuideAdditional Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Additional Support Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    Virtex-6 FPGA CLBCLB Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    Slice Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8CLB / Slice Timing Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    General Slice Timing Model and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Slice Distributed RAM Timing Model and Parameters (Available in SLICEM only) 38Slice SRL Timing Model and Parameters (Available in SLICEM only) . . . . . . . . . . . . 41Slice Carry-Chain Timing Model and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    CLB Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Distributed RAM Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Shift Registers (SRLs) Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Other Shift Register Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Multiplexer Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Carry Chain Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    Table of Contents

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    4/50

    4 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    5/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 5UG364 (v1.2) February 3, 2012

    Preface

    About This Guide

    This guide serves as a technical reference describing the Virtex-6 FPGA configurablelogic blocks (CLBs). Usually, the logic synthesis software assigns the CLB resourceswithout system designer intervention. It can be advantageous for the designer tounderstand certain CLB details, including the varying capabilities of the look-up tables(LUTs), the physical direction of the carry propagation, the number and distribution of theavailable flip-flops, and the availability of the very efficient shift registers. This guidedescribes these and other features of the CLB in detail.

    Additional DocumentationThe following documents are also available for download athttp://www.xilinx.com/support/documentation/virtex-6.htm .

    Virtex-6 Family OverviewThe features and product selection of the Virtex-6 family are outlined in this overview.

    Virtex-6 FPGA Data Sheet: DC and Switching CharacteristicsThis data sheet contains the DC and Switching Characteristic specifications for theVirtex-6 family.

    Virtex-6 FPGA Packaging and Pinout SpecificationsThis specification includes the tables for device/package combinations and maximumI/Os, pin definitions, pinout tables, pinout diagrams, mechanical drawings, andthermal specifications.

    Virtex-6 FPGA Configuration GuideThis all-encompassing configuration guide includes chapters on configurationinterfaces (serial and SelectMAP), bitstream encryption, boundary-scan and JTAGconfiguration, reconfiguration techniques, and readback through the SelectMAP and

    JTAG interfaces.

    Virtex-6 FPGA Clocking Resources User GuideThis guide describes the clocking resources available in all Virtex-6 devices, includingthe MMCM and PLLs.

    Virtex-6 FPGA Memory Resources User GuideThe functionality of the block RAM and FIFO are described in this user guide.

    Virtex-6 FPGA SelectIO Resources User GuideThis guide describes the SelectIO resources available in all Virtex-6 devices.

    http://www.xilinx.com/http://www.xilinx.com/support/documentation/virtex-6.htmhttp://www.xilinx.com/support/documentation/virtex-6.htmhttp://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    6/50

    6 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    Preface: About This Guide

    Virtex-6 FPGA GTH Transceivers User GuideThis guide describes the GTH transceivers available in all Virtex-6 HXT FPGAs exceptthe XC6VHX250T and the XC6VHX380T in the FF1154 package..

    Virtex-6 FPGA GTX Transceivers User GuideThis guide describes the GTX transceivers available in all Virtex-6 FPGAs except the

    XC6VLX760. Virtex-6 FPGA Embedded Tri-Mode Ethernet MAC User Guide

    This guide describes the dedicated Tri-Mode Ethernet Media Access Controlleravailable in all Virtex-6 FPGAs except the XC6VLX760.

    Virtex-6 FPGA DSP48E1 Slice User GuideThis guide describes the architecture of the DSP48E1 slice in Virtex-6 FPGAs andprovides configuration examples.

    Virtex-6 FPGA System Monitor User GuideThe System Monitor functionality available in all Virtex-6 devices is outlined in thisguide.

    Virtex-6 FPGA PCB Design GuideThis guide provides information on PCB design for Virtex-6 devices, with a focus onstrategies for making design decisions at the PCB and interface level.

    Additional Support ResourcesTo search the database of silicon and software questions and answers or to create atechnical support case in WebCase, see the Xilinx website at:

    http://www.xilinx.com/support .

    http://www.xilinx.com/http://www.xilinx.com/supporthttp://www.xilinx.com/supporthttp://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    7/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 7UG364 (v1.2) February 3, 2012

    Virtex-6 FPGA CLB

    CLB OverviewThe Configurable Logic Blocks (CLBs) are the main logic resources for implementingsequential as well as combinatorial circuits. Each CLB element is connected to a switchmatrix for access to the general routing matrix (shown in Figure 1 ). A CLB elementcontains a pair of slices. These two slices do not have direct connections to each other, andeach slice is organized as a column. Each slice in a column has an independent carry chain.

    For each CLB, slices in the bottom of the CLB are labeled as SLICE(0), and slices in the topof the CLB are labeled as SLICE(1).

    The Xilinx tools designate slices with the following definitions. An X followed by anumber identifies the position of each slice in a pair as well as the column position of theslice. The X number counts slices starting from the bottom in sequence 0, 1 (the first CLBcolumn); 2, 3 (the second CLB column); etc. A Y followed by a number identifies a row of slices. The number remains the same within a CLB, but counts up in sequence from oneCLB row to the next CLB row, starting from the bottom. Figure 2 shows four CLBs locatedin the bottom-left corner of the die.

    X-RefTarget - Figure 1

    Figure 1: Arrangement of Slices within the CLB

    S witchMa trix

    S lice(1)

    COUTCOUT

    CINCIN

    S lice(0)

    CLB

    u g3 64_01_040209

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    8/50

    8 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    Slice DescriptionEvery slice contains four logic-function generators (or look-up tables), eight storageelements, wide-function multiplexers, and carry logic. These elements are used by all slicesto provide logic, arithmetic, and ROM functions. In addition to this, some slices supporttwo additional functions: storing data using distributed RAM and shifting data with 32-bitregisters. Slices that support these additional functions are called SLICEM; others are

    called SLICEL. SLICEM (shown in Figure 3 ) represents a superset of elements andconnections found in all slices. SLICEL is shown in Figure 4 .

    Each CLB can contain zero or one SLICEM. Every other CLB column contains a SLICEMs.In addition, the two CLB columns to the left of the DSP48E columns both contain a SLICELand a SLICEM.

    X-RefTarget - Figure 2

    Figure 2: Row and Column Relationship between CLBs and Slices

    S liceX1Y1

    COUTCOUT

    CINCIN

    S liceX0Y1

    CLB

    u g3 64_02_040209

    S liceX1Y0

    COUTCOUT

    S liceX0Y0

    CLB

    S liceX3 Y1

    COUTCOUT

    CINCIN

    S liceX2Y1

    CLB

    S liceX3 Y0

    COUTCOUT

    S liceX2Y0

    CLB

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    9/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 9UG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 3

    Figure 3: Diagram of SLICEM

    A6:A1

    D

    COUT

    D

    DX

    C

    CX

    B

    BX

    A

    AX

    O6

    DI2

    O5

    DI1

    MC3 1WEN

    CK

    DI1

    MC3 1WEN

    CK

    DI1MC3 1WEN

    CK

    DI1

    MC3 1WEN

    CK

    u g3 64_0 3 _040209

    DX DMUX

    D

    DQ

    C

    CQ

    CMUX

    B

    BQ

    BMUX

    A

    AQ

    AMUX

    Re s et Type

    D

    FF/LATINIT1INIT0S RHIS RLO

    S R

    CECK

    FF/LATINIT1INIT0S RHIS RLO

    FF/LATINIT1

    INIT0S RHIS RLO

    FF/LATINIT1INIT0S RHIS RLO

    D

    S R

    CECK

    D

    S R

    CECK

    D

    S R

    Q

    CECK

    CIN

    0/1

    WEN

    CK

    S ync/A s ync

    FF/LAT

    A6:A1

    O6O5

    C6:1

    CX

    D6:1

    DI

    A6:A1

    O6O5

    B6:1

    BX

    A6:A1W6:W1

    W6:W1

    W6:W1

    W6:W1

    O6O5

    A6:1

    AX

    S RCE

    CLK

    CEQ

    CK S R

    Q

    Q

    Q

    S RHIS RLOINIT1INIT0

    D

    CEQ

    CK S R

    S RHIS RLOINIT1INIT0

    D

    CE QCK S R

    S RHIS RLOINIT1INIT0

    D

    CE QCK S R

    S RHIS RLOINIT1INIT0

    DI2

    DI2

    DI2

    CI

    BI

    AI

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    10/50

    10 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 4

    Figure 4: Diagram of SLICEL

    A6:A1

    DCOUT

    D

    DX

    C

    CX

    B

    BX

    A

    AX

    O6O5

    u g3 64_04_040209

    DXDMUX

    D

    DQ

    C

    CQ

    CMUX

    B

    BQ

    BMUX

    A

    AQ

    AMUX

    Re s et Type

    D

    FF/LATINIT1INIT0S RHIS RLO

    S R

    CECK

    FF/LATINIT1INIT0S RHIS RLO

    FF/LATINIT1INIT0S RHIS RLO

    FF/LATINIT1INIT0S RHIS RLO

    D

    S R

    CECK

    D

    S R

    CE

    CK

    D

    S R

    Q

    CECK

    CIN

    0/1

    S ync/A s ync

    FF/LAT

    A6:A1

    O6

    O5

    C6:1

    CX

    D6:1

    A6:A1

    O6O5

    B6:1

    BX

    A6:A1

    O6O5

    A6:1

    AX

    S RCE

    CLK

    CEQ

    CK S R

    Q

    Q

    Q

    S RHIS RLOINIT1INIT0

    D

    CEQ

    CK S R

    S RHIS RLOINIT1INIT0

    D

    CE QCK S R

    S RHIS RLOINIT1INIT0

    D

    CE QCK S R

    S RHIS RLOINIT1INIT0

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    11/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 11UG364 (v1.2) February 3, 2012

    CLB Overview

    CLB/Slice Configurations

    Table 1 summarizes the logic resources in one CLB. Each CLB or slice can be implementedin one of the configurations listed. Table 2 shows the available resources in all CLBs.

    Look-Up Table (LUT)

    The function generators in Virtex-6 FPGAs are implemented as six-input look-up tables(LUTs). There are six independent inputs (A inputs - A1 to A6) and two independentoutputs (O5 and O6) for each of the four function generators in a slice (A, B, C, and D). Thefunction generators can implement any arbitrarily defined six-input Boolean function.Each function generator can also implement two arbitrarily defined five-input Boolean

    functions, as long as these two functions share common inputs. Only the O6 output of thefunction generator is used when a six-input function is implemented. Both O5 and O6 areused for each of the five-input function generators implemented. In this case, A6 is drivenHigh by the software. The propagation delay through a LUT is independent of the functionimplemented, or whether one six-input or two five-input generators are implemented.Signals from the function generators can exit the slice (through A, B, C, D output for O6 orAMUX, BMUX, CMUX, DMUX output for O5), enter the XOR dedicated gate from an O6output (see Fast Lookahead Carry Logic ), enter the carry-logic chain from an O5 output(see Fast Lookahead Carry Logic ), enter the select line of the carry-logic multiplexer from

    Table 1: Logic Resources in One CLB

    Slices LUTs Flip-FlopsArithmetic andCarry Chains Distributed RAM (1) Shift Registers (1)

    2 8 16 2 256 bits 128 bits

    Notes:1. SLICEM only, SLICEL does not have distributed RAM or shift registers.

    Table 2: Virtex-6 FPGA Logic Resources Available in All CLBs

    Device TotalSlices SLICELs SLICEMsNumber of

    6-Input LUTsMaximum

    Distributed RAM (Kb)Shift

    Register (Kb)Number ofFlip-Flops

    XC6VLX75T 11,640 7,460 4,180 46,560 1,045 522.5 93,120

    XC6VLX130T 20,000 13,040 6,960 80,000 1,740 870 160,000

    XC6VLX195T 31,200 19,040 12,160 124,800 3,140 1,570 249,600

    XC6VLX240T 37,680 23,080 14,600 150,720 3,770 1,885 301,440

    XC6VLX365T 56,880 40,360 16,520 227,520 4,130 2,065 455,040

    XC6VLX550T 85,920 61,120 24,800 343,680 6,200 3,100 687,360

    XC6VLX760 118,560 85,440 33,120 474,240 8,280 4,140 948,480

    XC6VSX315T 49,200 28,840 20,360 196,800 5,090 2,545 393,600

    XC6VSX475T 74,400 48,840 30,560 297,600 7,640 3,820 595,200

    XC6VHX250T 39,360 27,200 12,160 157,440 3,040 1,520 314,880

    XC6VHX255T 39,600 27,400 12,200 158,400 3,050 1,525 316,800

    XC6VHX380T 59,760 41,520 18,240 239,040 4,570 2,285 478,080

    XC6VHX565T 88,560 63,080 25,480 354,240 6,370 3,185 708,480

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    12/50

    12 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    O6 output (see Fast Lookahead Carry Logic ), feed the D input of the storage element, or goto F7AMUX/F7BMUX from O6 output.

    In addition to the basic LUTs, slices contain three multiplexers (F7AMUX, F7BMUX, andF8MUX). These multiplexers are used to combine up to four function generators to provideany function of seven or eight inputs in a slice. F7AMUX and F7BMUX are used togenerate seven input functions from LUTs A and B, or C and D, while F8MUX is used tocombine all LUTs to generate eight input functions. Functions with more than eight inputscan be implemented using multiple slices. There are no direct connections between slicesto form function generators greater than eight inputs within a CLB.

    Storage Elements

    As in previous Virtex architectures, there are four (original) storage elements in a slice thatcan be configured as either edge-triggered D-type flip-flops or level-sensitive latches. TheD input can be driven directly by a LUT output via AFFMUX, BFFMUX, CFFMUX orDFFMUX, or by the BYPASS slice inputs bypassing the function generators via AX, BX, CX,or DX input. When configured as a latch, the latch is transparent when the CLK is Low.

    In Virtex-6 devices, there are now four additional storage elements that can only be

    configured as edge-triggered D-type flip-flops. The D input can be driven by the O5 outputof the LUT or the BYPASS slice inputs via AX, BX, CX, or DX input. When the original 4storage elements are configured as latches, these 4 additional storage elements can not beused.

    The control signals clock (CLK), clock enable (CE), and set/reset (SR) are common to allstorage elements in one slice. When one flip-flop in a slice has SR or CE enabled, the otherflip-flops used in the slice will also have SR or CE enabled by the common signal. Only theCLK signal has independent polarity. Any inverter placed on the clock signal isautomatically absorbed. The CE and SR signals are active High. All flip-flop and latchprimitives have CE and non-CE versions.

    The SR signal forces the storage element into the state specified by the attribute SRHIGH orSRLOW. SRHIGH forces a logic High at the storage element output when SR is asserted,

    while SRLOW forces a logic Low at the storage element output (see Table 3).

    Figure 5 shows both the register only and the register/latch configuration in a slice.

    Table 3: Truth Table when using SRLOW and SRHIGH

    SR SRVAL Function

    0 SRLOW (default) No Logic Change

    1 SRLOW (default) 0

    0 SRHIGH No Logic Change

    1 SRHIGH 1

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    13/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 13UG364 (v1.2) February 3, 2012

    CLB Overview

    SRHIGH and SRLOW can be set individually for each storage element in a slice. The choiceof synchronous (SYNC) or asynchronous (ASYNC) set/reset (SRTYPE) cannot be setindividually for each storage element in a slice.

    The initial state after configuration or global initial state is defined by separate INIT0 andINIT1 attributes. By default, setting the SRLOW attribute sets INIT0, and setting theSRHIGH attribute sets INIT1. Virtex-6 devices can set INIT0 and INIT1 independent of SRHIGH and SRLOW.

    The configuration options for the set and reset functionality of a register or the four storage

    elements capable of functioning as a latch are as follows: No set or reset Synchronous set Synchronous reset Asynchronous set (preset) Asynchronous reset (clear)

    X-RefTarget - Figure 5

    Figure 5: Two Versions of Configuration in a Slice: 4 Registers Only and 4 Register/Latch

    u g3 64_05_040209

    DX

    CX

    BX

    CE

    AX

    DQ

    CQ

    BQ

    AQ

    D

    FFLATCHINIT1INIT0S RHIGHS RLOWS R

    DFF/LATCHLUT D O u tpu t

    LUT C O u tpu t

    CECK

    D

    FFLATCHINIT1INIT0S RHIGHS RLOWS R

    CECK

    D

    FFLATCHINIT1INIT0S RHIGHS RLOWS R

    CECK

    D

    FFLATCHINIT1INIT0S RHIGHS RLOWS R

    Q

    CECK

    Q

    Q

    Q

    S R

    LUT B O u tpu t

    LUT A O u tpu t AFF/LATCH

    BFF/LATCH

    CFF/LATCH

    CLK

    Re s et TypeS ync

    As ync

    DX

    CX

    BX

    CE

    AX

    DQ

    CQ

    BQ

    AQ

    D

    S R

    DFFLUT D O5 O u tpu t

    LUT C O5 O u tpu t

    CECK

    INIT1INIT0S RHIGHS RLOW

    INIT1INIT0S RHIGHS RLOW

    INIT1INIT0S RHIGHS RLOW

    INIT1INIT0S RHIGHS RLOW

    D

    S R

    CECK

    D

    S R

    CECK

    D

    S R

    Q

    CECK

    Q

    Q

    Q

    S R

    LUT B O5 O u tpu t

    LUT A O5 O u tpu t AFF

    BFF

    CFF

    CLK

    Re s et TypeS ync

    As ync

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    14/50

    14 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    Distributed RAM and Memory (Available in SLICEM only)

    Multiple LUTs in a SLICEM can be combined in various ways to store larger amount of data.

    The function generators (LUTs) in SLICEMs can be implemented as a synchronous RAMresource called a distributed RAM element. RAM elements are configurable within a

    SLICEM to implement the following: Single-Port 32 x 1-bit RAM Dual-Port 32 x 1-bit RAM Quad-Port 32 x 2-bit RAM Simple Dual-Port 32 x 6-bit RAM Single-Port 64 x 1-bit RAM Dual-Port 64 x 1-bit RAM Quad-Port 64 x 1-bit RAM Simple Dual-Port 64 x 3-bit RAM Single-Port 128 x 1-bit RAM Dual-Port 128 x 1-bit RAM Single-Port 256 x 1-bit RAM

    Distributed RAM modules are synchronous (write) resources. A synchronous read can beimplemented with a storage element or a flip-flop in the same slice. By placing this flip-flop,the distributed RAM performance is improved by decreasing the delay into the clock-to-out value of the flip-flop. However, an additional clock latency is added. The distributed elements share thesame clock input. For a write operation, the Write Enable (WE) input, driven by either theCE or WE pin of a SLICEM, must be set High.

    Table 4 shows the number of LUTs (four per slice) occupied by each distributed RAMconfiguration.

    Table 4: Distributed RAM ConfigurationRAM Number of LUTs

    32 x 1S 1

    32 x 1D 2

    32 x 2Q(2) 4

    32 x 6SDP(2) 4

    64 x 1S 1

    64 x 1D 2

    64 x 1Q(3) 4

    64 x 3SDP(3) 4

    128 x 1S 2

    128 x 1D 4

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    15/50

  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    16/50

    16 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 6

    Figure 6: Distributed RAM (RAM32X2Q)

    u g3 64_06_080609

    DI1 DOD[0]

    DOC[0]

    DOD[1]

    DOC[1]

    DOB[0]

    DOB[1]

    DOA[0]

    DOA[1]

    DI2DID[1]DID[0]

    ADDRD[4:0]

    ADDRC[4:0]

    ADDRB[4:0]

    ADDRA[4:0]

    WCLKWED

    (CLK)(WE)

    5

    5

    DPRAM 3 2

    RAM 3 2X2Q

    A[6:1]WA[6:1]CLKWE

    O6

    O5

    DI1DI2

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    DI1DI2

    DI2

    B[5:1]

    C[5:1]

    D[5:1](AX/BX/CX/DX)

    (DI)

    A[5:1]

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    O5

    O5

    O5

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    17/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 17UG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 7

    Figure 7: Distributed RAM (RAM32X6SDP)

    u g3 64_07_080609

    DI1

    O[2]

    O[1]

    O[4]

    O[3 ]

    O[6]

    O[5]

    DI2

    u nus edu nus ed

    WADDR[5:1]

    WADDR[6] = 1

    RADDR[5:1]RADDR[6] = 1

    DATA[1]DATA[2]

    DATA[ 3 ]DATA[4]

    DATA[5]DATA[6]

    WCLKWED

    (CLK)(WE)

    5

    5

    DPRAM 3 2

    RAM 3 2X6 S DP

    A[6:1]WA[6:1]CLKWE

    DI1DI2

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    DI1DI2

    DI2

    B[5:1]

    C[5:1]

    D[5:1]

    A[5:1]

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    55

    DPRAM 3 2

    A[6:1]WA[6:1]CLKWE

    O6

    O5

    O5

    O5

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    18/50

    18 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    If four single-port 64 x 1-bit modules are built, the four RAM64X1S primitives can occupya SLICEM, as long as they share the same clock, write enable, and shared read and writeport address inputs. This configuration equates to 64 x 4-bit single-port distributed RAM.

    If two dual-port 64 x 1-bit modules are built, the two RAM64X1D primitives can occupy aSLICEM, as long as they share the same clock, write enable, and shared read and write portaddress inputs. This configuration equates to 64 x 2-bit dual-port distributed RAM.

    X-RefTarget - Figure 8

    Figure 8: Distributed RAM (RAM64X1S)

    X-RefTarget - Figure 9

    Figure 9: Distributed RAM (RAM64X1D)

    u g3 64_08_080609

    Ou tpu t

    Regi s tered

    Ou tpu t(Option a l)

    DI1

    D Q

    (DI)D

    A[5:0]

    WCLKWE

    (D[6:1])

    (CLK)(WE/CE)

    6

    S PRAM64

    RAM64X1 S

    A[6:1]WA[6:1]CLKWE

    O6O

    6

    u g3 64_09_080609

    DI1(DI)

    D

    A[5:0]

    WCLKWE

    (D[6:1])

    (CLK)(WE/CE)

    66

    DPRAM64

    RAM64X1D

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    DPRA[5:0](C[6:1]) 6

    6

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    Regi s teredOu tpu t

    (Option a l)

    D Q

    S PO

    Regi s teredOu tpu t

    (Option a l)

    D Q

    DPO

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    19/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 19UG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 10

    Figure 10: Distributed RAM (RAM64X1Q)

    u g3 64_10_080609

    DI1DID

    ADDRD

    ADDRC

    ADDRB

    ADDRA

    WCLKWE

    (CLK)(WE)

    DPRAM64

    RAM64X1Q

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    (B[6:1])

    (C[6:1])

    (D[6:1])

    (DI)

    (A[6:1])

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    Regi s teredOu tpu t

    DOD

    DOC

    DOB

    DOA

    (Option a l)

    D Q

    Regi s teredOu tpu t

    (Option a l)

    D Q

    Regi s teredOu tpu t

    (Option a l)

    D Q

    Regi s teredOu tpu t

    (Option a l)

    D Q

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    20/50

    20 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    Implementation of distributed RAM configurations with depth greater than 64 requires theusage of wide-function multiplexers (F7AMUX, F7BMUX, and F8MUX).

    X-RefTarget - Figure 11

    Figure 11: Distributed RAM (RAM64X3SDP)

    u g3 64_11_080609

    DI1

    O[1]

    O[2]

    O[3 ]

    DI2

    u nus edu nus ed

    WADDR[6:1]

    RADDR[6:1]

    DATA[1]

    DATA[2]

    DATA[ 3 ]

    WCLKWED

    (CLK)(WE)

    6

    6

    DPRAM64

    RAM 64X 3S DP

    A[6:1]WA[6:1]CLKWE

    DI1DI2

    66

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    DI1DI2

    DI2

    B[6:1]

    C[6:1]

    D[6:1]

    A[6:1]

    66

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    DI1

    66

    DPRAM64

    A[6:1]WA[6:1]CLKWE

    O6

    O5

    O5

    O5

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    21/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 21UG364 (v1.2) February 3, 2012

    CLB Overview

    If two single-port 128 x 1-bit modules are built, the two RAM128X1S primitives can occupya SLICEM, as long as they share the same clock, write enable, and shared read and writeport address inputs. This configuration equates to 128 x 2-bit single-port distributed RAM.

    X-RefTarget - Figure 12

    Figure 12: Distributed RAM (RAM128X1S)

    u g3 64_12_080609

    DI1(DI)

    A6 (CX)

    D

    A[6:0]

    WCLKWE

    (CLK)(WE/CE)

    [5:0]

    [5:0]

    7

    S PRAM64

    RAM128X1 S

    A[6:1]WA[7:1]CLKWE

    O6

    DI1

    7

    S PRAM64

    A[6:1]WA[7:1]CLKWE

    O6

    Regi s teredOu tpu t

    Ou tpu t

    F7BMUX

    (Option a l)

    D Q

    0

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    22/50

    22 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 13

    Figure 13: Distributed RAM (RAM128X1D)

    u g3 64_1 3 _080609

    DI1DDI

    AX

    A[6:0]

    WCLK

    DPRA[6:0]

    WE

    (CLK)(WE)

    7

    DPRAM64

    RAM128X1D

    A[6:1]WA[7:1]CLKWE

    O6

    DI1

    67

    DPRAM64

    A[6:1]WA[7:1]CLKWE

    O6

    Regi s teredOu tpu tF7BMUX

    (Option a l)

    D Q

    S PO

    DI1

    67

    DPRAM64

    A[6:1]WA[7:1]CLKWE

    O6

    DI1

    6

    7

    DPRAM64

    A[6:1]WA[7:1]CLKWE

    O6

    Regi s teredOu tpu tF7AMUX

    (Option a l)

    D Q

    DPO

    A6 (CX)

    6

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    23/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 23UG364 (v1.2) February 3, 2012

    CLB Overview

    Distributed RAM configurations greater than the provided examples require more thanone SLICEM. There are no direct connections between slices to form larger distributedRAM configurations within a CLB or between slices.

    Distributed RAM Data Flow

    Synchronous Write Operation

    The synchronous write operation is a single clock-edge operation with an active-Highwrite-enable (WE) feature. When WE is High, the input (D) is loaded into the memorylocation at address A.

    Asynchronous Read Operation

    X-RefTarget - Figure 14

    Figure 14: Distributed RAM (RAM256X1S)

    u g3 64_14_040209

    DI1D

    A[7:0]

    WCLKWE

    (CLK)(WE/CE)

    68

    S PRAM64

    RAM256X1 S

    A[6:1]WA[8:1]CLKWE

    O6

    DI1

    68

    S PRAM64

    A[6:1]WA[8:1]CLK

    WE

    O6F7BMUX

    F8MUXRegi s teredOu tpu t

    Ou tpu t

    (Option a l)

    D Q

    O

    DI1

    68

    S PRAM64

    A[6:1]WA[8:1]CLKWE

    O6

    DI1

    68

    S PRAM64

    A[6:1]WA[8:1]CLKWE

    O6

    F7AMUX

    A6 (CX)

    A6 (AX)

    A7 (BX)

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    24/50

    24 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    The output is determined by the address A (for single-port mode output/SPO output of dual-port mode), or address DPRA (DPO output of dual-port mode). Each time a newaddress is applied to the address pins, the data value in the memory location of thataddress is available on the output after the time delay to access the LUT. This operation isasynchronous and independent of the clock signal.

    Distributed RAM Summary

    Single-port and dual-port modes are available in SLICEMs. A write operation requires one clock edge. Read operations are asynchronous (Q output). The data input has a setup-to-clock timing specification.

    Read Only Memory (ROM)

    Each function generator in SLICEMs and SLICELs can implement a 64 x 1-bit ROM. Threeconfigurations are available: ROM64x1, ROM128x1, and ROM256x1. ROM contents areloaded at each device configuration. Table 5 shows the number of LUTs occupied by eachROM configuration.

    Shift Registers (Available in SLICEM only)

    A SLICEM function generator can also be configured as a 32-bit shift register without usingthe flip-flops available in a slice. Used in this way, each LUT can delay serial dataanywhere from one to 32 clock cycles. The shiftin D (DI1 LUT pin) and shiftout Q31 (MC31LUT pin) lines cascade LUTs to form larger shift registers. The four LUTs in a SLICEM arethus cascaded to produce delays up to 128 clock cycles. It is also possible to combine shiftregisters across more than one SLICEM. Note that there are no direct connections betweenslices to form longer shift registers, nor is the MC31 output at LUT B/C/D available. Theresulting programmable delays can be used to balance the timing of data pipelines.

    Applications requiring delay or latency compensation use these shift registers to developefficient designs. Shift registers are also useful in synchronous FIFO and contentaddressable memory (CAM) designs.

    The write operation is synchronous with a clock input (CLK) and an optional clock enable(CE). A dynamic read access is performed through the 5-bit address bus, A[4:0]. The LSB of

    the LUT is unused and the software automatically ties it to a logic High. The configurableshift registers cannot be set or reset. The read is asynchronous; however, a storage elementor flip-flop is available to implement a synchronous read. In this case, the clock-to-out of the flip-flop determines the overall delay and improves performance. However, oneadditional cycle of clock latency is added. Any of the 32 bits can be read outasynchronously (at the O6 LUT outputs) by varying the 5-bit address. This capability isuseful in creating smaller shift registers (less than 32 bits). For example, when building a13-bit shift register, simply set the address to the 13 th bit. Figure 15 is a logic block diagramof a 32-bit shift register.

    Table 5: ROM Configuration

    ROM Number of LUTs

    64 x 1 1

    128 x 1 2

    256 x 1 4

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    25/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 25UG364 (v1.2) February 3, 2012

    CLB Overview

    Figure 16 illustrates an example shift register configuration occupying one functiongenerator.

    Figure 17 shows two 16-bit shift registers. The example shown can be implemented in asingle LUT.

    X-RefTarget - Figure 15

    Figure 15: 32-bit Shift Register Configuration

    X-RefTarget - Figure 16

    Figure 16: Representation of a Shift Register

    u g3 64_15_080609

    Ou tpu t (Q)

    Regi s teredOu tpu t

    (Option a l)

    (AQ)

    DI1

    D Q

    (AI)

    S HIFTIN (MC 3 1 of Previo us LUT)

    S HIFTIN (D)

    A[4:0]

    CLKCE

    (A[6:2])

    (CLK)(WE/CE)

    S RL3 2

    S RLC 3 2E

    A[6:2]

    CLKCE

    O6

    MC3 1 S HIFTOUT (Q 3 1)5

    u g3 64_16_040209

    S HIFTIN (D)

    S HIFTOUT(Q 3 1)WE

    CLK

    Addre ss (A[4:0])

    3 2-b it S hift Regi s ter

    MUX

    Q

    5

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    26/50

    26 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    As mentioned earlier, an additional output (MC31) and a dedicated connection betweenshift registers allows connecting the last bit of one shift register to the first bit of the next,without using the LUT O6 output. Longer shift registers can be built with dynamic accessto any bit in the chain. The shift register chaining and the F7AMUX, F7BMUX, and F8MUXmultiplexers allow up to a 128-bit shift register with addressable access to be implementedin one SLICEM. Figure 18 through Figure 20 illustrate various example shift registerconfigurations that can occupy one SLICEM.

    X-RefTarget - Figure 17

    Figure 17: Dual 16-bit Shift Register Configuration

    X-RefTarget - Figure 1 8

    Figure 18: 64-bit Shift Register Configuration

    u g3 64_17_080609

    DI1S HIFTIN1 (AI)

    S HIFTIN2 (AX)

    A[3 :0]

    CLKCE

    4

    S RL16

    A[5:2]

    CLKWE

    O5

    MC3 1

    DI2

    4

    S RL16

    A[5:2]CLKWE

    O6

    u g3 64_18_040209

    DI1S HIFTIN (D)

    A[5:0]

    CLKWE

    (CLK)(WE/CE)

    5

    S RL3 2

    A[6:2]

    CLKWE

    O6

    MC3 1

    MC3 1

    DI1

    5

    S RL3 2

    A[6:2]CLKWE

    O6

    Regi s teredOu tpu t

    Ou tpu t (Q)

    F7AMUX

    (Option a l)

    D Q

    A5 (AX)

    (AQ)

    S HIFTOUT (Q6 3 )

    (MC3 1)

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    27/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 27UG364 (v1.2) February 3, 2012

    CLB Overview

    X-RefTarget - Figure 19

    Figure 19: 96-bit Shift Register Configuration

    UG3 64_19_012509

    DI1S HIFTIN (D)

    A[6:0]

    CLKWE

    AX (A5)

    (CLK)(WE/CE)

    5

    S RL3 2

    A[6:2]

    CLKWE

    O6

    MC3 1

    MC3 1

    DI1

    5

    S RL3 2

    A[6:2]

    CLKWE

    O6

    F7BMUX

    Not U s ed

    F8MUXRegi s teredOu tpu t

    Ou tpu t (Q)

    (Option a l)

    D Q(BQ)

    (BMUX)

    DI1

    5

    S RL3 2

    A[6:2]

    CLKWE

    O6F7AMUX

    CX (A5)

    BX (A6)

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    28/50

    28 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    It is possible to create shift registers longer than 128 bits across more than one SLICEM.However, there are no direct connections between slices to form these shift registers.

    Shift Register Data Flow

    Shift Operation

    The shift operation is a single clock-edge operation, with an active-High clock enablefeature. When enable is High, the input (D) is loaded into the first bit of the shift register.Each bit is also shifted to the next highest bit position. In a cascadable shift registerconfiguration, the last bit is shifted out on the M31 output.

    The bit selected by the 5-bit address port (A[4:0]) appears on the Q output.

    Dynamic Read Operation

    The Q output is determined by the 5-bit address. Each time a new address is applied to the5-input address pins, the new bit position value is available on the Q output after the time

    X-RefTarget - Figure 20

    Figure 20: 128-bit Shift Register Configuration

    u g3 64_20_040209

    DI1S HIFTIN (D)

    A[6:0]

    CLKWE

    (CLK)

    (WE/CE)

    5

    S RL3 2

    A[6:2]

    CLKWE

    O6

    MC3 1

    MC3 1

    MC3 1

    MC3 1

    DI1

    S RL3 2

    A[6:2]

    CLKWE

    O6F7BMUX

    F8MUX

    CX (A5)

    BX (A6)

    Regi s teredOu tpu t

    Ou tpu t (Q)

    (Option a l)

    D Q

    (BMUX)

    S HIFTOUT (Q127)

    (MC3 1)

    (BQ)

    DI1

    S RL3 2

    A[6:2]

    CLKWE

    O6

    DI1

    S RL3 2

    A[6:2]

    CLKWE

    O6F7AMUX

    AX (A5)

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    29/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 29UG364 (v1.2) February 3, 2012

    CLB Overview

    delay to access the LUT. This operation is asynchronous and independent of the clock andclock-enable signals.

    Static Read Operation

    If the 5-bit address is fixed, the Q output always uses the same bit position. This modeimplements any shift-register length from 1 to 32 bits in one LUT. The shift register length

    is (N+1), where N is the input address (0 31).The Q output changes synchronously with each shift operation. The previous bit is shiftedto the next position and appears on the Q output.

    Shift Register Summary

    A shift operation requires one clock edge. Dynamic-length read operations are asynchronous (Q output). Static-length read operations are synchronous (Q output). The data input has a setup-to-clock timing specification. In a cascadable configuration, the Q31 output always contains the last bit value. The Q31 output changes synchronously after each shift operation.

    Multiplexers

    Function generators and associated multiplexers in Virtex-6 FPGAs can implement thefollowing:

    4:1 multiplexers using one LUT 8:1 multiplexers using two LUTs 16:1 multiplexers using four LUTs

    These wide input multiplexers are implemented in one level or logic (or LUT) using thededicated F7AMUX, F7BMUX, and F8MUX multiplexers. These multiplexers allow LUTcombinations of up to four LUTs in a slice.

    Designing Large Multiplexers

    4:1 Multiplexer

    Each LUT can be configured into a 4:1 MUX. The 4:1 MUX can be implemented with a flip-flop in the same slice. Up to four 4:1 MUXes can be implemented in a slice, as shown inFigure 21 .

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    30/50

    30 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    8 :1 Multiplexer

    Each slice has an F7AMUX and an F7BMUX. These two muxes combine the output of twoLUTs to form a combinatorial function up to 13 inputs (or an 8:1 MUX). Up to two 8:1MUXes can be implemented in a slice, as shown in Figure 22 .

    X-RefTarget - Figure 21

    Figure 21: Four 4:1 Multiplexers in a Slice

    u g3 64_21_040209

    (D[6:1])

    (C[6:1])

    (B[6:1])

    (A[6:1])

    (CLK)CLK

    6

    S LICE

    LUT

    LUT

    LUT

    LUT

    A[6:1]

    O6

    6 A[6:1]

    O6

    Regi s tered

    Ou tpu t

    4:1 MUX O u tpu t

    (Option a l)

    D Q

    (D)

    (DQ)

    Regi s teredOu tpu t

    4:1 MUX O u tpu t

    (Option a l)

    D Q

    (C)

    (CQ)

    Regi s teredOu tpu t

    4:1 MUX O u tpu t

    (Option a l)

    D Q

    (B)

    (BQ)

    Regi s teredOu tpu t

    4:1 MUX O u tpu t

    (Option a l)

    D Q

    (A)

    (AQ)

    6A[6:1]

    O6

    6 A[6:1]

    O6

    S EL D [1:0], DATA D [ 3 :0]Inpu t

    S EL C [1:0], DATA C [ 3 :0]Inpu t

    SEL B [1:0], DATA B [

    3:0]Inpu t

    S EL A [1:0], DATA A [ 3 :0]Inpu t

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    31/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 31UG364 (v1.2) February 3, 2012

    CLB Overview

    16:1 Multiplexer

    Each slice has an F8MUX. F8MUX combines the outputs of F7AMUX and F7BMUX to forma combinatorial function up to 27 inputs (or a 16:1 MUX). Only one 16:1 MUX can beimplemented in a slice, as shown in Figure 23 .

    X-RefTarget - Figure 22

    Figure 22: Two 8:1 Multiplexers in a Slice

    u g3 64_22_040209

    (D[6:1])

    (C[6:1])

    (CX)

    (B[6:1])

    (A[6:1])

    (AX)

    S ELF7(1)(CLK)

    CLK

    S ELF7(2)

    S EL D [1:0], DATA D [ 3 :0]Inpu t (1)

    S EL C [1:0], DATA C [ 3 :0]Inpu t (1)

    S EL B [1:0], DATA B [ 3 :0]Inpu t (2)

    S EL A [1:0], DATA A [ 3 :0]Inpu t (2)

    6

    S LICE

    LUT

    LUT

    LUT

    LUT

    A[6:1]

    O6

    6 A[6:1]

    O6 Regis tered

    Ou tpu t

    8:1 MUXOu tpu t (1)

    (Option a l)

    D Q

    (CMUX)

    (CQ)

    Regi s teredOu tpu t

    8:1 MUXOu tpu t (2)

    (Option a l)

    D Q

    (AMUX)

    (AQ)

    6 A[6:1]

    O6

    6 A[6:1]

    O6

    F7BMUX

    F7AMUX

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    32/50

    32 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Overview

    It is possible to create multiplexers wider than 16:1 across more than one SLICEM.However, there are no direct connections between slices to form these wide multiplexers.

    Fast Lookahead Carry Logic

    In addition to function generators, dedicated carry logic is provided to perform fastarithmetic addition and subtraction in a slice. A Virtex-6 FPGA CLB has two separate carrychains, as shown in Figure 1 . The carry chains are cascadable to form wider add/subtractlogic, as shown in Figure 2 .

    The carry chain in the Virtex-6 device is running upward and has a height of four bits perslice. For each bit, there is a carry multiplexer (MUXCY) and a dedicated XOR gate foradding/subtracting the operands with a selected carry bits. The dedicated carry path andcarry multiplexer (MUXCY) can also be used to cascade function generators forimplementing wide logic functions.

    Figure 24 illustrates the carry chain with associated logic elements in a slice.

    X-RefTarget - Figure 23

    Figure 23: 16:1 Multiplexer in a Slice

    u g3 64_2 3 _040209

    (D[6:1])

    (C[6:1])

    (CX)

    (B[6:1])

    (A[6:1])

    (AX)(BX)

    (CLK)

    S ELF7

    S ELF7S ELF8

    CLK

    6

    S LICE

    LUT

    LUT

    LUT

    LUT

    A[6:1]

    O6

    6 A[6:1]

    O6

    Regi s teredOu tpu t

    16:1 MUXOu tpu t

    (Option a l)

    D Q

    (BMUX)

    (B)

    6 A[6:1]

    O6

    6 A[6:1]

    O6

    F7BMUX

    F8MUX

    F7AMUX

    S EL D [1:0], DATA D [ 3 :0]Inpu t

    S EL C [1:0], DATA C [ 3 :0]Inpu t

    S EL B [1:0], DATA B [ 3 :0]Inpu t

    S EL A [1:0], DATA A [ 3 :0]Inpu t

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    33/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 33UG364 (v1.2) February 3, 2012

    CLB Overview

    The carry chains carry lookahead logic along with the function generators. There are tenindependent inputs (S inputs S0 to S3, DI inputs DI1 to DI4, CYINIT and CIN) and eightindependent outputs (O outputs O0 to O3, and CO outputs CO0 to CO3).

    The S inputs are used for the propagate signals of the carry lookahead logic. Thepropagate signals are sourced from the O6 output of a function generator. The DI inputsare used for the generate signals of the carry lookahead logic. The generate signals aresourced from either the O5 output of a function generator or the BYPASS input (AX, BX,CX, or DX) of a slice. The former input is used to create a multiplier, while the latter is usedto create an adder/accumulator. CYINIT is the CIN of the first bit in a carry chain. TheCYINIT value can be 0 (for add), 1 (for subtract), or AX input (for the dynamic first carry

    bit). The CIN input is used to cascade slices to form a longer carry chain. The O outputscontain the sum of the addition/subtraction. The CO outputs compute the carry out for

    X-RefTarget - Figure 24

    Figure 24: Fast Carry Logic Path and Associated Elements

    u g3 64_24_040209

    O6 From LUTD

    DMUX/DQ*

    DMUX

    DQO5 From LUTD

    DX

    S3MUXCY

    DI3

    CO 3

    O3

    COUT (To Next S lice)

    Ca rry Ch a in Block(CARRY4)

    (Option a l)

    D Q

    O6 From LUTC

    CMUX/CQ*

    CMUX

    CQO5 From LUTC

    CX

    S 2MUXCY

    DI2

    CO2

    CO1

    CO0

    O2

    (Option a l)

    D Q

    O6 From LUTB

    BMUX/BQ*

    BMUX

    BQO5 From LUTB

    BX

    S 1MUXCY

    DI1

    O1

    (Option a l)

    D Q

    O6 From LUTA

    AMUX/AQ*

    AMUX

    AQO5 From LUTA

    AX

    S 0MUXCY

    DI0

    CIN

    CIN (From Previo us S lice)

    * Ca n b e us ed ifu nregi s tered/regi s teredou tpu ts a re free.

    CYINIT

    10

    O0

    (Option a l)

    D Q

    u g3 64_09_040209

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    34/50

    34 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    each bit. CO3 is connected to COUT output of a slice to form a longer carry chain bycascading multiple slices. The propagation delay for an adder increases linearly with thenumber of bits in the operand, as more carry chains are cascaded. The carry chain can beimplemented with a storage element or a flip-flop in the same slice.

    CLB / Slice Timing ModelsDue to the large size and complexity of Virtex-6 FPGAs, understanding the timingassociated with the various paths and functional elements is a difficult and important task.Although it is not necessary to understand the various timing parameters to implementmost designs using Xilinx software, a thorough timing model can assist advanced users inanalyzing critical paths or planning speed-sensitive designs.

    Three timing model sections are described:

    Functional element diagram basic architectural schematic illustrating pins andconnections

    Timing parameters definitions of Virtex-6 FPGA Data Sheet timing parameters Timing Diagram - illustrates functional element timing parameters relative to each

    otherUse the models in this chapter in conjunction with both the Xilinx Timing Analyzersoftware (TRCE) and the section on switching characteristics in the Virtex-6 FPGA DataSheet. All pin names, parameter names, and paths are consistent with the post-route timingand pre-route static timing reports. Most of the timing parameters found in the section onswitching characteristics are described in this chapter.

    All timing parameters reported in the Virtex-6 FPGA Data Sheet are associated with slicesand CLBs. The following sections correspond to specific switching characteristics sectionsin the Virtex-6 FPGA Data Sheet :

    General Slice Timing Model and Parameters (CLB Switching Characteristics) Slice Distributed RAM Timing Model and Parameters (Available in SLICEM only)

    (CLB Distributed RAM Switching Characteristics) Slice SRL Timing Model and Parameters (Available in SLICEM only) (CLB SRL

    Switching Characteristics) Slice Carry-Chain Timing Model and Parameters (CLB Application Switching

    Characteristics)

    General Slice Timing Model and ParametersA simplified Virtex-6 FPGA slice is shown in Figure 25 . Some elements of the slice areomitted for clarity. Only the elements relevant to the timing paths described in this sectionare shown.

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    35/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 35UG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    X-RefTarget - Figure 25

    Figure 25: Simplified Virtex-6 FPGA Slice

    u g3 64_25_040209

    LUT

    O6

    O5

    6 D

    FF/LAT

    DCECLK

    S R

    Q

    F7BMUX

    F8MUX

    DMUX

    DQ

    DInpu ts

    LUT

    O6

    O5

    6 C

    FF/LAT

    DCECLK

    S R

    Q CQ

    CMUX

    CInpu ts

    DX

    CX

    LUT

    O6

    O5

    6 B

    FF/LAT

    DCECLK

    S R

    Q BQ

    BMUX

    BInpu ts

    BX

    FF/LAT

    DCE

    CLKS R

    Q AQ

    F7AMUXLUT

    O6

    O5

    6 A

    AMUX

    AInpu ts

    AX

    CECLK

    S R

    D

    CE

    Q

    CKS R

    D

    CE

    Q

    CKS R

    D

    CE

    Q

    CKS R

    D

    CE

    Q

    CKS R

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    36/50

    36 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Timing Parameters

    Table 6 shows the general slice timing parameters for a majority of the paths in Figure 25 .

    Table 6: General Slice Timing Parameters

    Parameter Function Description

    Combinatorial Delays

    TILO(1) A/B/C/D inputs to A/B/C/Doutputs

    Propagation delay from the A/B/C/D inputs of the slice, through the look-up tables (LUTs), to theA/B/C/D outputs of the slice (six-inputfunction).

    TILO_2 A/B/C/D inputs toAMUX/CMUX outputs

    Propagation delay from the A/B/C/D inputs of the slice, through the LUTs andF7AMUX/F7BMUX to the AMUX/CMUXoutputs (seven-input function).

    TILO_3 A/B/C/D inputs to BMUXoutput

    Propagation delay from the A/B/C/D inputs of the slice, through the LUTs, F7AMUX/F7BMUX,

    and F8MUX to the BMUX output (eight-inputfunction).

    Sequential Delays

    TCKO Flip-Flop/ Latch element FF Clock (CLK) toAQ/BQ/CQ/DQ outputs

    Time after the clock that data is stable at theAQ/BQ/CQ/DQ outputs of the slice sequentialelements (configured as a flip-flop).

    TCKO Flip-Flop only element FF Clock (CLK) toAQ/BQ/CQ/DQ outputs

    Time after the clock that data is stable at theAQ/BQ/CQ/DQ outputs of the slice sequentialelements.

    TCKLO Latch Clock (CLK) toAQ/BQ/CQ/DQ outputs

    Time after the clock that data is stable at theAQ/BQ/CQ/DQ outputs of the slice sequential

    elements (configured as a latch).Setup and Hold Times for Slice Sequential Elements (2)

    TDICK/T CKDI Flip-Flop/ Latchelement

    AX/BX/CX/DX inputs Time before/after the CLK that data from theAX/BX/CX/DX inputs of the slice must be stableat the D input of the slice sequential elements(configured as a flip-flop).

    TDICK/T CKDI Flip-Flop onlyelement

    AX/BX/CX/DX inputs Time before/after the CLK that data from theAX/BX/CX/DX inputs of the slice must be stableat the D input of the slice sequential elements.

    TCECK/T CKCE Flip-Flop/ Latchelement

    CE input Time before/after the CLK that the CE input of the slice must be stable at the CE input of the slice

    sequential elements (configured as a flip-flop).TCECK/T CKCE Flip-Flop onlyelement

    CE input Time before/after the CLK that the CE input of the slice must be stable at the CE input of the slicesequential elements.

    TSRCK/T CKSR Flip-Flop/ Latchelement

    SR input Time before/after the CLK that the SR (Set/Reset)of the slice must be stable at the SR inputs of theslice sequential elements (configured as a flip-flop).

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    37/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 37UG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Timing Characteristics

    Figure 26 illustrates the general timing characteristics of a Virtex-6 FPGA slice.

    At time T CEO before clock event (1), the clock-enable signal becomes valid-high at theCE input of the slice register.

    At time T DICK before clock event (1), data from either AX, BX, CX, or DX inputs become valid-high at the D input of the slice register and is reflected on either the AQ,BQ, CQ, or DQ pin at time T CKO after clock event (1).

    At time T SRCK before clock event (3), the SR signal (configured as synchronous reset) becomes valid-high, resetting the slice register. This is reflected on the AQ, BQ, CQ, orDQ pin at time T CKO after clock event (3).

    TSRCK/T CKSR Flip-Flop onlyelement

    SR input Time before/after the CLK that the SR (Set/Reset)inputs of the slice must be stable at the SR inputsof the slice sequential elements

    Set/Reset

    TRPW Minimum Pulse Width for the SR (Set/Reset).

    TRQ Propagation delay for an asynchronous Set/Resetof the slice sequential elements. From the SRinputs to the AQ/BQ/CQ/DQ outputs.

    FTOG Toggle Frequency Maximum frequency that aCLB flip-flop can be clocked: 1/(T CH + TCL).

    Notes:1. This parameter includes a LUT configured as two five-input functions.2. TXXCK = Setup Time (before clock edge), and T CKXX = Hold Time (after clock edge).

    Table 6: General Slice Timing Parameters (Contd)

    Parameter Function Description

    X-RefTarget - Figure 26

    Figure 26: General Slice Timing Characteristics

    u g3 64_26_040209

    TCEO

    1 2 3

    CLK

    CE

    AX/BX/CX/DX(DATA)

    S R (RE S ET)

    AQ/BQ/CQ/DQ(OUT)

    TDICK

    TCKO

    TS RCK

    TCKO

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    38/50

    38 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Slice Distributed RAM Timing Model and Parameters (Available inSLICEM only)

    Figure 27 illustrates the details of distributed RAM implemented in a Virtex-6 FPGA slice.Some elements of the slice are omitted for clarity. Only the elements relevant to the timingpaths described in this section are shown.X-RefTarget - Figure 27

    Figure 27: Simplified Virtex-6 FPGA SLICEM Distributed RAM

    u g3 64_27_080609

    6D

    DIDX

    D inp u t

    CICX

    C inp u t

    BIBX

    B inp u t

    AIAX

    A inp u t

    CLKWE

    WA[6:0]

    RAM

    CLKWE

    DI1DI2A[6:0]

    O6

    DMUXO5

    6C

    WA[6:0]

    RAM

    CLKWE

    DI1DI2A[6:0]

    O6

    CMUXO5

    6B

    WA[6:0]

    RAM

    CLKWE

    DI1DI2A[6:0]

    O6

    BMUXO5

    6A

    WA[6:0]

    RAM

    CLKWE

    DI1DI2A[6:0]

    O6

    AMUXO5

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    39/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 39UG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Distributed RAM Timing Parameters

    Table 7 shows the timing parameters for the distributed RAM in SLICEM for a majority of the paths in Figure 27 .

    Table 7: Distributed RAM Timing Parameters

    Parameter Function Description

    Sequential Delays for a Slice LUT Configured as RAM (Distributed RAM)

    TSHCKO (1) CLK to A/B/C/D outputs Time after the CLK of a write operation that thedata written to the distributed RAM is stable onthe A/B/C/D output of the slice.

    Setup and Hold Times for a Slice LUT Configured as RAM (Distributed RAM) (2)

    TDS/T DH (3) AI/BI/CI/DI configured asdata input (DI1)

    Time before/after the clock that data must bestable at the AI/BI/CI/DI input of the slice.

    TACK/T CKA A/B/C/D address inputs Time before/after the clock that address signalsmust be stable at the A/B/C/D inputs of the sliceLUT (configured as RAM).

    TWS/T WH WE input Time before/after the clock that the write enablesignal must be stable at the WE input of the sliceLUT (configured as RAM).

    Clock CLK

    TWPH Minimum Pulse Width, High

    TWPL Minimum Pulse Width, Low

    TWC Minimum clock period to meet address writecycle time.

    Notes:

    1. This parameters includes a LUT configured as a two-bit distributed RAM.2. TXXCK = Setup Time (before clock edge), and T CKXX = Hold Time (after clock edge).3. Parameter includes AX/BX/CX/DX configured as a data input (DI2).

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    40/50

    40 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Distributed RAM Timing Characteristics

    The timing characteristics of a 16-bit distributed RAM implemented in a Virtex-6 FPGAslice (LUT configured as RAM) are shown in Figure 28 .

    Clock Event 1: Write Operation

    During a Write operation, the contents of the memory at the address on the ADDR inputsare changed. The data written to this memory location is reflected on the A/B/C/Doutputs synchronously.

    At time T WS before clock event 1, the write-enable signal (WE) becomes valid-high,enabling the RAM for a Write operation.

    At time T AS before clock event 1, the address (2) becomes valid at the A/B/C/Dinputs of the RAM.

    At time T DS before clock event 1, the DATA becomes valid (1) at the DI input of theRAM and is reflected on the A/B/C/D output at time T SHCKO after clock event 1.

    This is also applicable to the AMUX, BMUX, CMUX, DMUX, and COUT outputs at timeTSHCKO and T WOSCO after clock event 1.

    Clock Event 2: Read Operation

    All Read operations are asynchronous in distributed RAM. As long as WE is Low, theaddress bus can be asserted at any time. The contents of the RAM on the address bus are

    reflected on the A/B/C/D outputs after a delay of length T ILO (propagation delay througha LUT). The address (F) is asserted after clock event 2, and the contents of the RAM ataddress (F) are reflected at the output after a delay of length T ILO.

    X-RefTarget - Figure 2 8

    Figure 28: Slice Distributed RAM Timing Characteristics

    u g3 64_28_080609

    TWPL

    TWPHTWC

    1 2 3 4 5 6 7

    CLK

    WE

    DATA_OUTA/B/C/D

    Ou tpu t

    A/B/C/D(ADDR)

    AI/BI/CI/DI(DI)

    TAS

    2

    1

    1 0 01MEM(F)

    WRITE WRITE WRITE WRITEREAD READ

    MEM(E)

    X X0 01

    F 3 4 5 E

    TDS

    TWS TILO TILO

    TS HCKO

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    41/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 41UG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Slice SRL Timing Model and Parameters (Available in SLICEM only)Figure 29 illustrates shift register implementation in a Virtex-6 FPGA slice. Some elementsof the slice have been omitted for clarity. Only the elements relevant to the timing pathsdescribed in this section are shown.X-RefTarget - Figure 29

    Figure 29: Simplified Virtex-6 FPGA Slice SRL

    u g3 64_29_080609

    6

    DDI

    CI

    BI

    AI

    D a ddre ss

    S RL

    CLK WE

    DI1

    A

    O6

    MC3 1

    WCLK

    6

    C

    C a ddre ss

    S RL

    CLK WE

    DI1

    A

    O6

    MC3 1

    6

    B

    B a ddre ss

    S RL

    CLK WE

    DI1

    A

    O6

    MC3 1

    6

    A

    A a ddre ss

    S RL

    CLK WE

    DI1

    A

    O6

    DMUXMC3 1

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    42/50

    42 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Slice SRL Timing Parameters

    Table 8 shows the SLICEM SRL timing parameters for a majority of the paths in Figure 29 .

    Slice SRL Timing CharacteristicsFigure 30 illustrates the timing characteristics of a 16-bit shift register implemented in aVirtex-6 FPGA slice (a LUT configured as an SRL).

    Table 8: Slice SRL Timing Parameters

    Parameter Function Description

    Sequential Delays for a Slice LUT Configured as an SRL

    TREG(1) CLK to A/B/C/D outputs Time after the CLK of a write operation that thedata written to the SRL is stable on the A/B/C/Doutputs of the slice.

    TREG_MUX(1) CLK to AMUX - DMUX output Time after the CLK of a write operation that thedata written to the SRL is stable on the DMUXoutput of the slice.

    TREG_M31 CLK to DMUX output viaMC31 output

    Time after the CLK of a write operation that thedata written to the SRL is stable on the DMUXoutput via MC31 output.

    Setup and Hold Times for a Slice LUT Configured SRL (2)

    TWS/T WH CE input (WE) Time before/after the clock that the write enablesignal must be stable at the WE input of the sliceLUT (configured as an SRL).

    TDS/T DH (3) AI/BI/CI/DI configured asdata input (DI)

    Time before the clock that the data must be stableat the AI/BI/CI/DI input of the slice (configuredas an SRL).

    Notes:1. This parameter includes a LUT configured as a two-bit shift register.2. TXXCK = Setup Time (before clock edge), and T CKXX = Hold Time (after clock edge).3. Parameter includes AX/BX/CX/DX configured as a data input (DI2) or two bits with a common shift.

    X-RefTarget - Figure 30

    Figure 30: Slice SRL Timing Characteristics

    u g3 64_ 3 0_040209

    1 2 3 4 5 6 3 2

    CLK

    Write En ab le(WE)

    S hift_In (DI)

    Addre ss(A/B/C/D)

    Da ta Ou t(A/B/C/D)

    MS B(MC3 1/DMUX)

    TDS

    TILO TILO

    0 1 1 0 1 0

    20

    X

    X X X X X X X 0

    0 1 1 1 1 10 0

    TREG

    TREG

    TWS

    1

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    43/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 43UG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Clock Event 1: Shift In

    During a write (Shift In) operation, the single-bit content of the register at the address onthe A/B/C/D inputs is changed, as data is shifted through the SRL. The data written tothis register is reflected on the A/B/C/D outputs synchronously, if the address isunchanged during the clock event. If the A/B/C/D inputs are changed during a clockevent, the value of the data at the addressable output (A/B/C/D outputs) is invalid.

    At time T WS before clock event 1, the write-enable signal (WE) becomes valid-High,enabling the SRL for the Write operation that follows.

    At time T DS before clock event 1 the data becomes valid (0) at the DI input of the SRLand is reflected on the A/B/C/D output after a delay of length T REG after clock event1. Since the address 0 is specified at clock event 1, the data on the DI input is reflectedat A/B/C/D output, because it is written to register 0.

    Clock Event 2: Shift In

    At time T DS before clock event 2, the data becomes valid (1) at the DI input of the SRLand is reflected on the A/B/C/D output after a delay of length T REG after clock event2. Since the address 0 is still specified at clock event 2, the data on the DI input is

    reflected at the D output, because it is written to register 0.Clock Event 3: Shift In/Addressable (Asynchronous) READ

    All Read operations are asynchronous to the CLK signal. If the address is changed(between clock events), the contents of the register at that address are reflected at theaddressable output (A/B/C/D outputs) after a delay of length T ILO (propagation delaythrough a LUT).

    At time T DS before clock event 3, the data becomes valid (1) at the DI input of the SRLand is reflected on the A/B/C/D output T REG time after clock event 3.

    The address is changed (from 0 to 2). The value stored in register 2 at this time is a 0(in this example, this was the first data shifted in), and it is reflected on the A/B/C/Doutput after a delay of length T ILO.

    Clock Event 32: MSB (Most Significant Bit) Changes

    At time T REG after clock event 32, the first bit shifted into the SRL becomes valid (logical 0in this case) on the DMUX output of the slice via the MC31 output of LUT A (SRL). This isalso applicable to the AMUX, BMUX, CMUX, DMUX, and COUT outputs at time T REG andTWOSCO after clock event 1.

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    44/50

    44 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB / Slice Timing Models

    Slice Carry-Chain Timing Model and ParametersFigure 24, page 33 illustrates a carry chain in a Virtex-6 FPGA slice. Some elements of theslice have been omitted for clarity. Only the elements relevant to the timing pathsdescribed in this section are shown.

    Slice Carry-Chain Timing Parameters

    Table 9 shows the slice carry-chain timing parameters for a majority of the paths inFigure 24, page 33 .

    Slice Carry-Chain Timing Characteristics

    Figure 31 illustrates the timing characteristics of a slice carry chain implemented in aVirtex-6 FPGA slice.

    Table 9: Slice Carry-Chain Timing Parameters

    Parameter Function Description

    Sequential Delays for Slice LUT Configured as Carry Chain

    TAXCY/T BXCY/T CXCY/T DXCY AX/BX/CX/DX input to COUToutput

    Propagation delay from the AX/BX/CX/DXinputs of the slice to the COUT output of theslice.

    TBYP CIN input to COUT output Propagation delay from the CIN input of the

    slice to the COUT output of the slice.TOPCYA /T OPCYB/T OPCYC/T OPCYD A/B/C/D input to COUT

    outputPropagation delay from the A/B/C/D inputs of the slice to the COUT output of the slice.

    TCINA /T CINB/T CINC /T CIND A/B/C/D input toAMUX/BMUX/CMUX/DMUXoutput

    Propagation delay from the A/B/C/D inputs of the slice to AMUX/BMUX/CMUX/DMUXoutput of the slice using XOR (sum).

    Setup and Hold Times for a Slice LUT Configured as a Carry Chain (1)

    TCINCK /T CKCIN CIN Data inputs Time before the CLK that data from the CINinput of the slice must be stable at the D input of the slice sequential elements (configured as aflip-flop).

    Notes:1. TXXCK = Setup Time (before clock edge), and T CKXX = Hold Time (after clock edge).

    X-RefTarget - Figure 31

    Figure 31: Slice Carry-Chain Timing Characteristics

    u g3 64_ 3 1_040209

    TCINCK

    1 2 3

    CLK

    CIN(DATA)

    S R (RE S ET)

    AQ/BQ/CQ/DQ(OUT)

    TCKO

    TS RCK

    TCKO

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    45/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 45UG364 (v1.2) February 3, 2012

    CLB Primitives

    At time T CINCK before clock event 1, data from CIN input becomes valid-high at the Dinput of the slice register. This is reflected on any of the AQ/BQ/CQ/DQ pins at timeTCKO after clock event 1.

    At time T SRCK before clock event 3, the SR signal (configured as synchronous reset) becomes valid-high, resetting the slice register. This is reflected on any of theAQ/BQ/CQ/DQ pins at time T CKO after clock event 3.

    CLB PrimitivesMore information on the CLB primitives are available in the software libraries guide.

    Distributed RAM PrimitivesSeven primitives are available; from 32 x 2 bits to 256 x 1 bit. Three primitives are single-port RAM, two primitives are dual-port RAM, and two primitives are quad-port RAM, asshown in Table 10.

    The input and output data are 1-bit wide (with the exception of the 32-bit RAM).

    Figure 32 shows generic single-port, dual-port, and quad-port distributed RAMprimitives. The A, ADDR, and DPRA signals are address buses.

    Table 10: Single-Port, Dual-Port, and Quad-Port Distributed RAM

    Primitive RAM Size Type Address Inputs

    RAM32X1S 32-bit Single-port A[4:0] (read/write)

    RAM32X1D 32-bit Dual-port A[4:0] (read/write)DPRA[4:0] (read)

    RAM32M 32-bit Quad-port ADDRA[4:0] (read)ADDRB[4:0] (read)ADDRC[4:0] (read)ADDRD[4:0] (read/write)

    RAM64X1S 64-bit Single-port A[5:0] (read/write)

    RAM64X1D 64-bit Dual-port A[5:0] (read/write)DPRA[5:0] (read)

    RAM64M 64-bit Quad-port ADDRA[5:0] (read)ADDRB[5:0] (read)ADDRC[5:0] (read)ADDRD[5:0] (read/write)

    RAM128X1S 128-bit Single-port A[6:0] (read/write)

    RAM128X1D 128-bit Dual-port A[6:0], (read/write)DPRA[6:0] (read)

    RAM256X1S 256-bit Single-port A[7:0] (read/write)

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    46/50

    46 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Primitives

    Instantiating several distributed RAM primitives can be used to implement wide memory blocks.

    Port Signals

    Each distributed RAM port operates independently of the other while reading the same setof memory cells.

    Clock WCLK

    The clock is used for the synchronous write. The data and the address input pins havesetup times referenced to the WCLK pin.

    Enable WE/WED

    The enable pin affects the write functionality of the port. An inactive write enable preventsany writing to memory cells. An active write enable causes the clock edge to write the datainput signal to the memory location pointed to by the address inputs.

    Address A[#:0], DPRA[#:0], and ADDRA[#:0] ADDRD[#:0]

    The address inputs A[#:0] (for single-port and dual-port), DPRA[#:0] (for dual-port), andADDRA[#:0] ADDRD[#:0] (for quad-port) select the memory cells for read or write. Thewidth of the port determines the required address inputs. Some of the address inputs arenot buses in VHDL or Verilog instantiations. Table 10 summarizes the function of eachaddress pins.

    Data In D, DID[#:0]

    The data input D (for single-port and dual-port) and DID[#:0] (for quad-port) provide thenew data value to be written into the RAM.

    Data Out O, SPO, DPO and DOA[#:0] DOD[#:0]

    The data out O (single-port or SPO), DPO (dual-port), and DOA[#:0] DOD[#:0] (quad-port) reflects the contents of the memory cells referenced by the address inputs. Followingan active write clock edge, the data out (O, SPO, or DOD[#:0]) reflects the newly writtendata.

    X-RefTarget - Figure 32

    Figure 32: Single-Port, Dual-Port, and Quad-Port Distributed RAM Primitives

    RAM#X1 S

    u g3 64_ 3 2_040209

    D OWE

    WCLK

    A[#:0]

    S PO DOD[#:0]

    RAM#X1D

    D

    DPO

    R/W Port

    Re a d Port

    WE

    WCLK

    A[#:0]

    DPRA[#:0]

    RAM#M

    DI[A:D][#:0]

    DOC[#:0]

    R/W Port

    Re a d Port

    Re a d Port

    Re a d Port

    WE

    WCLK

    ADDRD[#:0]

    ADDRC[#:0]

    DOB[#:0]ADDRB[#:0]

    DOA[#:0]ADDRA[#:0]

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    47/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 47UG364 (v1.2) February 3, 2012

    CLB Primitives

    Inverting Clock Pins

    The clock pin (CLK) has an individual inversion option. The clock signal can be active atthe negative edge of the clock or the positive edge of the clock without requiring otherlogic resources. The default is at the positive clock edge.

    Global Set/Reset GSR

    The global set/reset (GSR) signal does not affect distributed RAM modules.

    Shift Registers (SRLs) PrimitiveOne primitive is available for the 32-bit shift register (SRLC32E). Figure 33 shows the32-bit shift register primitive.

    Instantiating several 32-bit shift register with dedicated multiplexers (F7AMUX, F7BMUX,and F8MUX) allows a cascadable shift register chain of up to 128-bit in a slice. Figure 18 through Figure 20 in the Shift Registers (Available in SLICEM only) section of this documentillustrate the various implementation of cascadable shift registers greater than 32 bits.

    Port Signals

    Clock CLK

    Either the rising edge or the falling edge of the clock is used for the synchronous shiftoperation. The data and clock enable input pins have setup times referenced to the chosenedge of CLK.

    Data In D

    The data input provides new data (one bit) to be shifted into the shift register.

    Clock Enable - CE

    The clock enable pin affects shift functionality. An inactive clock enable pin does not shift

    data into the shift register and does not write new data. Activating the clock enable allowsthe data in (D) to be written to the first location and all data to be shifted by one location.When available, new data appears on output pins (Q) and the cascadable output pin (Q31).

    Address A[4:0]

    The address input selects the bit (range 0 to 31) to be read. The nth bit is available on theoutput pin (Q). Address inputs have no effect on the cascadable output pin (Q31). It isalways the last bit of the shift register (bit 31).

    X-RefTarget - Figure 33

    Figure 33: 32-bit Shift Register

    S RLC 3 2E

    u g3 64_ 33 _040209

    DQ

    A[4:0]6

    CE

    CLK

    Q 3 1

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    48/50

    48 www.xilinx.com Virtex-6 FPGA CLB User GuideUG364 (v1.2) February 3, 2012

    CLB Primitives

    Data Out Q

    The data output Q provides the data value (1 bit) selected by the address inputs.

    Data Out Q31 (optional)

    The data output Q31 provides the last bit value of the 32-bit shift register. New data

    becomes available after each shift-in operation.Inverting Clock Pins

    The clock pin (CLK) has an individual inversion option. The clock signal can be active atthe negative or positive edge of the clock without requiring other logic resources. Thedefault is positive clock edge.

    Global Set/Reset GSR

    The global set/reset (GSR) signal does not affect the shift registers.

    Other Shift Register Applications

    Synchronous Shift Registers

    The shift-register primitive does not use the register available in the same slice. Toimplement a fully synchronous read and write shift register, output pin Q must beconnected to a flip-flop. Both the shift register and the flip-flop share the same clock, asshown in Figure 34 .

    This configuration provides a better timing solution and simplifies the design. Because theflip-flop must be considered to be the last register in the shift-register chain, the static ordynamic address should point to the desired length minus one. If needed, the cascadableoutput can also be registered in a flip-flop.

    Static-Length Shift RegistersThe cascadable 32-bit shift register implements any static length mode shift registerwithout the dedicated multiplexers (F7AMUX, F7BMUX, and F8MUX). Figure 35 illustrates a 72-bit shift register. Only the last SRLC32E primitive needs to have its addressinputs tied to 0b00111 . Alternatively, shift register length can be limited to 71 bits(address tied to 0b00110 ) and a flip-flop can be used as the last register. (In an SRLC32Eprimitive, the shift register length is the address input + 1).

    X-RefTarget - Figure 34

    Figure 34: Synchronous Shift Register

    S ynchrono usOu tpu tD QD Q

    Addre ss

    CLK

    (Write En ab le)CE

    S RLC 3 2G FF

    Q3 1

    u g3 64_ 3 4_040209

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    49/50

    Virtex-6 FPGA CLB User Guide www.xilinx.com 49UG364 (v1.2) February 3, 2012

    CLB Primitives

    Multiplexer PrimitivesTwo primitives (MUXF7 and MUXF8) are available for access to the dedicated F7AMUX,F7BMUX and F8MUX in each slice. Combined with LUTs, these multiplexer primitives arealso used to build larger width multiplexers (from 8:1 to 16:1). The Designing LargeMultiplexers section provides more information on building larger multiplexers.

    Port Signals

    Data In I0, I1

    The data input provides the data to be selected by the select signal (S).

    Control In S

    The select input signal determines the data input signal to be connected to the output O.Logic 0 selects the I0 input, while logic 1 selects the I1 input.

    Data Out O

    The data output O provides the data value (one bit) selected by the control inputs.

    Carry Chain PrimitiveThe CARRY4 primitive represents the fast carry logic for a slice in the Virtex-6 architecture.This primitive works in conjunction with LUTs in order to build adders and multipliers.This primitive is generally inferred by synthesis tools from standard RTL code. Thesynthesis tool can identify the arithmetic and/or logic functionality that best maps to this

    X-RefTarget - Figure 35

    Figure 35: Example Static-Length Shift Register

    LUT

    S RLC 3 2G

    D

    Q3 1

    LUT

    S RLC 3 2G

    D

    Q3 1

    LUT

    S RLC 3 2G

    D OUT(72- b it S RL)

    A[4:0]

    Q3 1

    Q

    500111

    D

    u g3 64_ 3 5_040209

    LUT

    S RLC 3 2G

    D

    Q3 1

    LUT

    S RLC 3 2G

    D

    Q3 1

    LUT

    S RLC 3 2G

    D OUT(72- b it S RL)

    A[4:0]

    Q3 1

    Q

    FF

    D Q

    500110

    D

    http://www.xilinx.com/http://www.xilinx.com/
  • 7/30/2019 Virtex-6 FPGA Configurable Logic Block User Guide

    50/50

    CLB Primitives

    logic in terms of performance and area. It also automatically uses and connects thisfunction properly. Figure 24, page 33 illustrates the CARRY4 block diagram.

    Port Signals

    Sum Outputs O[3:0]

    The sum outputs provide the final result of the addition/subtraction.

    Carry Outputs CO[3:0]

    The carry outputs provide the carry out for each bit. A longer carry chain can be created if CO[3] is connected to CI input of another CARRY4 primitive.

    Data Inputs DI[3:0]

    The data inputs are used as generate signals to the carry lookahead logic. The generatesignals are sourced from LUT outputs.

    Select Inputs S[3:0]

    The select inputs are used as propagate signals to the carry lookahead logic. Thepropagate signals are sourced from LUT outputs.

    Carry Initialize CYINIT

    The carry initialize input is used to select the first bit in a carry chain. The value for this pinis either 0 (for add), 1 (for subtract), or AX input (for the dynamic first carry bit).

    Carry In CI

    The carry in input is used to cascade slices to form longer carry chain. To create a longercarry chain, the CO[3] output of another CARRY4 is simply connected to this pin.