CFGLUT5 - 2024.1 English

Vivado Design Suite 7 Series FPGA and Zynq 7000 SoC Libraries Guide (UG953)

Document ID
UG953
Release Date
2024-05-30
Version
2024.1 English

Primitive: 5-input Dynamically Reconfigurable Look-Up Table (LUT)

Introduction

This element is a runtime, dynamically reconfigurable, 5-input look-up table (LUT) that enables the changing of the logical function of the LUT during circuit operation. Using the CDI pin, a new INIT value can be synchronously shifted in serially to change the logical function. The O6 output pin produces the logical output function, based on the current INIT value loaded into the LUT and the currently selected I0-I4 input pins. Optionally, you can use the O5 output in combination with the O6 output to create two individual 4-input functions sharing the same inputs or a 5-input function and a 4-input function that uses a subset of the 5-input logic (see the following tables). This component occupies one of the four LUT6 components within a Slice-M.

To cascade this element, connect the CDO pin from each element to the CDI input of the next element. This will allow a single serial chain of data (32-bits per LUT) to reconfigure multiple LUTs.

Port Descriptions

Port Direction Width Function
O6 Output 1 5-LUT output.
O5 Output 1 4-LUT output.
I0, I1, I2, I3, I4 Input 1 LUT inputs.
CDO Output 1 Reconfiguration data cascaded output (optionally connect to the CDI input of a subsequent LUT).
CDI Input 1 Reconfiguration data serial input.
CLK Input 1 Reconfiguration clock.
CE Input 1 Active-High reconfiguration clock enable.

Design Entry Method

Instantiation Recommended
Inference No
IP Catalog No
Macro support No
  • Connect the CLK input to the clock source used to supply the reconfiguration data.

  • Connect the CDI input to the source of the reconfiguration data.

  • Connect the CE pin to the active-High logic if you need to enable/disable LUT reconfiguration.

  • Connect the I4-I0 pins to the source inputs to the logic equation. The logic function is output on O6 and O5.

  • To cascade this element, connect the CDO pin from each element to the CDI input of the next element to allow a single serial chain of data to reconfigure multiple LUTs.

The INIT attribute should be placed on this design element to specify the initial logical function of the LUT. A new INIT can be loaded into the LUT any time during circuit operation by shifting in 32-bits per LUT in the chain, representing the new INIT value. Disregard the O6 and O5 output data until all 32-bits of new INIT data has been clocked into the LUT. The logical function of the LUT changes as new INIT data is shifted into it. Data should be shifted in MSB (INIT[31]) first and LSB (INIT[0]) last.

In order to understand the O6 and O5 logical value based on the current INIT, see the following table.

Table 1. Logic Table
I4 I3 I2 I1 I0 O6 Value O5 Value
1 1 1 1 1 INIT[31] INIT[15]
1 1 1 1 0 INIT[30] INIT[14]
. . . . . . . . .
1 0 0 0 1 INIT[17] INIT[1]
1 0 0 0 0 INIT[16] INIT[0]
0 1 1 1 1 INIT[15] INIT[15]
0 1 1 1 0 INIT[14] INIT[14]
. . . . . . . . .
0 0 0 0 1 INIT[1] INIT[1]
0 0 0 0 0 INIT[0] INIT[0]

For instance, the INIT value of FFFF8000 would represent the following logical equations:

  • O6 = I4 or (I3 and I2 and I1 and I0)
  • O5 = I3 and I2 and I1 and I0

To use these elements as two, 4-input LUTs with the same inputs but different functions, tie the I4 signal to a logical one. The INIT[31:16] values apply to the logical values of the O6 output and INIT [15:0] apply to the logical values of the O5 output.

Available Attributes

Attribute Type Allowed Values Default Description
INIT HEX Any 32-bit value All zeros Specifies the initial logical expression of this element.

VHDL Instantiation Template

Unless they already exist, copy the following two statements and paste them before the entity declaration.
Library UNISIM;
use UNISIM.vcomponents.all;

-- CFGLUT5: Reconfigurable 5-input LUT (Mapped to SliceM LUT6)
--          7 Series
-- Xilinx HDL Language Template, version 2024.1

CFGLUT5_inst : CFGLUT5
generic map (
   INT => X"00000000")
port map (
   CDO => CDO, -- Reconfiguration cascade output
   O5 => O5,   -- 4-LUT output
   O6 => O6,   -- 5-LUT output
   CDI => CDI, -- Reconfiguration data input
   CE => CE,   -- Reconfiguration enable input
   CLK => CLK, -- Clock input
   I0 => I0,   -- Logic data input
   I1 => I1,   -- Logic data input
   I2 => I2,   -- Logic data input
   I3 => I3,   -- Logic data input
   I4 => I4    -- Logic data input
);

-- End of CFGLUT5_inst instantiation

Verilog Instantiation Template


// CFGLUT5: Reconfigurable 5-input LUT  (Mapped to a SliceM LUT6)
//          7 Series
// Xilinx HDL Language Template, version 2024.1

CFGLUT5 #(
   .INIT(32'h00000000) // Specify initial LUT contents
) CFGLUT5_inst (
   .CDO(CDO), // Reconfiguration cascade output
   .O5(O5),   // 4-LUT output
   .O6(O6),   // 5-LUT output
   .CDI(CDI), // Reconfiguration data input
   .CE(CE),   // Reconfiguration enable input
   .CLK(CLK), // Clock input
   .I0(I0),   // Logic data input
   .I1(I1),   // Logic data input
   .I2(I2),   // Logic data input
   .I3(I3),   // Logic data input
   .I4(I4)    // Logic data input
);

// End of CFGLUT5_inst instantiation

Related Information

  • 7 Series FPGAs Configurable Logic Block User Guide (UG474)