How to Use Dynamic Function eXchange (Partial Reconfiguration)

Goal: Build a partial reconfiguration design using Xilinx DFX, producing both a static bitstream and a partial reconfiguration bitstream.

Warning

DFX (Dynamic Function eXchange) requires a Vivado DFX license. The two-step build workflow described here is mandatory — the static design must be built and a routed DCP produced before the partial module build can begin.

Prerequisites

  • A licensed Vivado installation with the DFX license enabled

  • A static design with a reconfigurable module cell and a pblock defined in constraints

  • A fully routed static DCP from a previous make bit run (produced in Step 1)

Two-Step Build Workflow

The DFX flow requires two separate build invocations. The partial module build cannot proceed without the routed static DCP from Step 1.

Step 1: Build the Static Design

Build the static design without setting any DFX variables:

make bit

When the build completes, the output DCP is placed in the images/ directory with the standard ruckus naming pattern:

PROJECT-VERSION-TIME-USER-GITHASH_static.dcp

Record the full path to this file — it is required as the value of RECONFIG_CHECKPOINT in Step 2.

Step 2: Build the Partial Module

Set the three DFX variables in your project Makefile before the include line, then rebuild:

export RECONFIG_CHECKPOINT = ../../images/StaticDesign-v1.0.0-20240101-user-abcd1234_static.dcp
export RECONFIG_ENDPOINT   = u_PartialModule
export RECONFIG_PBLOCK     = pblock_partial

include $(TOP_DIR)/submodules/ruckus/system_vivado.mk

Then run:

make bit

When RECONFIG_CHECKPOINT is set to a valid DCP path (not 0), the ruckus build system automatically calls ImportStaticReconfigDcp before implementation. This procedure:

  • Opens the static DCP

  • Makes the reconfigurable endpoint a black box

  • Locks the static routing

  • Reads the partial module synthesis DCP into the black box cell

  • Runs DRC and saves the merged checkpoint

Partial bitstream artifacts are placed in $(IMAGES_DIR)/ alongside the full bitstream.

Key Variables

Variable

Default

Description

RECONFIG_CHECKPOINT

0

Path to the static design’s routed DCP. Setting this to a valid path enables DFX mode. The _static.dcp suffix is appended automatically by ExportStaticReconfigDcp during Step 1.

RECONFIG_ENDPOINT

0

Cell name of the reconfigurable module (the black-box endpoint in the static design).

RECONFIG_PBLOCK

0

Pblock name for partial bitstream export. Must match the pblock name defined in your constraints exactly.

See the Makefile Reference for the complete variable reference.

Troubleshooting

“DFX license not found”

DFX requires a separate Vivado DFX license. Contact your Xilinx/AMD account manager to enable the DFX feature in your license file.

“DRC errors in ImportStaticReconfigDcp”

Ensure the static DCP is fully routed (not just synthesized) and that the pblock name in your constraints matches RECONFIG_PBLOCK exactly. Common causes: using a post-synthesis DCP instead of a post-route DCP, or a typo in the pblock name.

“Cannot find RECONFIG_CHECKPOINT file”

Use an absolute path or a path relative to the project directory. Verify that Step 1 completed successfully and that the _static.dcp file exists in images/ before starting Step 2.