prc
Xilinx SDK Drivers API Documentation
prc Documentation

Xilinx PRC driver component provides management function for self-controlling partially reconfigurable designs.It is intended for enclosed systems where all of the Reconfigurable Modules are known to the controller. The optional AXI4-Lite register interface allows the core to be reconfigured at run time, so it can also be used in systems where the Reconfigurable Modules(RM) can change in the field.

The PRC supports the following features:

  • 32 Virtual Sockets.
  • 128 Reconfigurable modules per Virtual Socket.
  • Optional hardware and software shutdown of Reconfigurable Modules (configurable per Reconfigurable Module).
  • Optional software start-up of Reconfigurable Modules (configurable per Reconfigurable Module).
  • Optional reset of Reconfigurable Modules after loading (configurable per Reconfigurable Module).
  • Virtual Socket Managers can be shutdown and restarted by the user to allow external controllers to partially reconfigure the device.
  • User control of Virtual Socket Manager output signals is supported in the shutdown state.

The Partial Reconfiguration Controller consists of one or more Virtual Socket Managers(VSMs) which connect to a single fetch path. Virtual Socket Managers operate in parallel waiting for triggers to occur. When a trigger occurs, the appropriate VSM maps the trigger to an RM and manages the reconfiguration of that RM. VSM's queue for access to the fetch path.

VSMs exist in two States

  • Active State
  • Shutdown State

Initialization & Configuration

The XPrc_Config structure is used by the driver to configure itself. This configuration structure is created based on HW build properties.

To support multiple runtime loading and initialization strategies employed by various operating systems, the driver instance can be initialized in the following way:

  • XPrc_LookupConfig(DeviceId) - Use the device identifier to find the static configuration structure defined in xprc_g.c. This is setup by the tools. For some operating systems the config structure will be initialized by the software and this call is not needed.
  • XPrc_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) is used for initialization. The user needs to first call the XPrc_LookupConfig() API which returns the Configuration structure pointer which is passed as a parameter to the XPrc_CfgInitialize() API.

Threads

This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.

Asserts

Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that users leave asserts on during development.

Building the driver

The XPrc driver is composed of several source files. This allows the user to build and link only those parts of the driver that are necessary.

Debug prints

XPrc driver is having debug prints.

  • To get the debug print statements of the driver, please define XPRC_DEBUG as shown below. "#define XPRC_DEBUG"
  • To get the debug print statements of the core, please define XPRC_DEBUG_CORE as shown below. "#define XPRC_DEBUG_CORE"
MODIFICATION HISTORY:
Ver   Who      Date        Changes


1.0 ms 07/18/2016 First release ms 03/17/17 Added readme.txt file in examples folder for doxygen generation. ms 04/05/2017 Modified comment lines notation in functions of prc examples to avoid unnecessary description which was displayed while generating doxygen. 1.1 ms 04/18/17 Modified tcl file to add suffix U for all macros definitions of prc in xparameters.h ms 08/01/17 Added a new parameter "Cp_Compression" to XPrc_Config structure and also inline function related to this paramter. Modified xprc.c, prc.tcl, xprc_hw.h to add a new parameter "Cp_Compression" and status error flags. Added the Updated api.tcl to data folder. 1.2 Nava 29/03/19 Updated the tcl logic to generated the XPrc_ConfigTable properly.