17 #ifndef XILINXCONFIGURATIONACCESSPORT_H
18 #define XILINXCONFIGURATIONACCESSPORT_H
30 #include "../CommonDevice2D.h"
31 #include "../../Common/Endianness.h"
33 #include "../../Common/assert.h"
34 #include "../../Common/FileIO.h"
35 #include "../../Common/str.h"
36 #include "../../../VERSION"
39 #define FABRIC_TEMPLATE(MAX_SLRS, MAX_ROWS, MAX_COLS, MAX_BRAM_COLS, BLOCKTYPE_MAX, BLOCKTYPE_LOGIC, BLOCKTYPE_BLOCKRAM, WORDS_BEFORE_CLK, WORDS_AT_CLK, WORDS_AFTER_CLK, WORDS_PER_FRAME, FRAMES_PER_BRAM_CONTENT_COLUMN, CLB_PER_CLOCK_REGION, BRAM_PER_CLOCK_REGION, EXTRA_FRAMES_PER_ROW, ENABLE_TOP_BOTTOM, TOP_BOTTOM_BIT_SHIFT, BLOCKTYPE_SHIFT, BLOCKTYPE_MASK, ROWADDRESS_SHIFT, ROWADDRESS_MASK, COLUMNADDRESS_SHIFT, COLUMNADDRESS_MASK, MINORADDRESS_SHIFT, MINORADDRESS_MASK) MAX_SLRS, MAX_ROWS, MAX_COLS, MAX_BRAM_COLS, BLOCKTYPE_MAX, BLOCKTYPE_LOGIC, BLOCKTYPE_BLOCKRAM, WORDS_BEFORE_CLK, WORDS_AT_CLK, WORDS_AFTER_CLK, WORDS_PER_FRAME, FRAMES_PER_BRAM_CONTENT_COLUMN, CLB_PER_CLOCK_REGION, BRAM_PER_CLOCK_REGION, EXTRA_FRAMES_PER_ROW, ENABLE_TOP_BOTTOM, TOP_BOTTOM_BIT_SHIFT, BLOCKTYPE_SHIFT, BLOCKTYPE_MASK, ROWADDRESS_SHIFT, ROWADDRESS_MASK, COLUMNADDRESS_SHIFT, COLUMNADDRESS_MASK, MINORADDRESS_SHIFT, MINORADDRESS_MASK
41 template <
int MAX_SLRS,
47 int BLOCKTYPE_BLOCKRAM,
52 int FRAMES_PER_BRAM_CONTENT_COLUMN,
53 int CLB_PER_CLOCK_REGION,
54 int BRAM_PER_CLOCK_REGION,
55 int EXTRA_FRAMES_PER_ROW,
56 int FAR_ENABLE_TOP_BOTTOM_BIT,
57 int FAR_TOP_BOTTOM_BIT_SHIFT,
58 int FAR_BLOCKTYPE_SHIFT,
59 int FAR_BLOCKTYPE_MASK,
60 int FAR_ROWADDRESS_SHIFT,
61 int FAR_ROWADDRESS_MASK,
62 int FAR_COLUMNADDRESS_SHIFT,
63 int FAR_COLUMNADDRESS_MASK,
64 int FAR_MINORADDRESS_SHIFT,
65 int FAR_MINORADDRESS_MASK>
Endianness
< Endianness in byteman is represented not only by big/little endian, but also by potential bit swapp...
@ BE
Big endian ("BE" instead of full-er name, so it does not conflict with linux's reserved endianess wor...
virtual void ensureInitializedBitstreamArrays()=0
virtual void outputBitstreamEmptySLRWrapUpSequence(std::ofstream &, int, bool, Endianness)=0
virtual void outputBitstreamSLRFooterBitstreamSequence(std::ofstream &, int, bool, Endianness)=0
virtual int getDeviceByName(std::string)=0
virtual std::string getFrameType(int, int, int)=0
virtual int getDeviceByNameOrThrow(std::string)=0
virtual void outputBitstreamGlobalHeaderSequence(std::ofstream &, bool, Endianness)=0
uint32_t * bitstreamCLB[MAX_ROWS][MAX_COLS]
int numberOfWordsPerRow[MAX_ROWS]
std::streamoff headerLocationOfRemainingFileLength
gets set by outputBITheader() and gets used by outputBITheaderLengthField().
virtual int getDeviceByIDCODEorThrow(int)=0
uint32_t * bitstreamBRAM[MAX_ROWS][MAX_BRAM_COLS]
virtual void initializeResourceStringParameters()=0
XilinxConfigurationAccessPort()
virtual void outputBitstreamSLRHeaderBitstreamSequence(std::ofstream &, int, bool, Endianness)=0
bool LUT_isFrameUnusedForResourceLetter[256]
int numberOfFramesBeforeCol[MAX_ROWS][MAX_COLS]
int numberOfCols[MAX_ROWS]
virtual void setDeviceByNameOrThrow(std::string)=0
virtual ~XilinxConfigurationAccessPort()
virtual void outputBitstreamSLRWrapUpSequence(std::ofstream &, int, bool, Endianness)=0
int numberOfBRAMsBeforeCol[MAX_ROWS][MAX_COLS]
virtual void outputBitstreamEmptySLRHeaderSequence(std::ofstream &, int, bool, Endianness)=0
virtual void outputBitstreamSLRHeaderAfterBitstreamSequence(std::ofstream &, int, bool, Endianness)=0
uint32_t * bitstreamBegin
int numberOfFramesPerRow[MAX_ROWS]
virtual void setDeviceByIDCODEOrThrow(int)=0
std::string LUT_typeOfFrameForResourceLetter[256]
char resourceString[MAX_ROWS][MAX_COLS]
struct XilinxConfigurationAccessPort::@0 SLRinfo[MAX_SLRS]
int LUT_numberOfFramesForResourceLetter[256]
std::string initializedResourceStringShortPartName
the partName of currently initialized resource string parameters
virtual void setDeviceByPartNameOrThrow()=0
std::string initializedBitstreamParamsShortPartName
the partName of currently initialized resource string parameters
Endianness loadedBitstreamEndianness
The endianess of the currently loaded bitstream.
bool bitstreamHasValidData
std::string initializedBitstreamShortPartName
The partName of currently initialized bitstream buffers.
virtual int getDeviceByIDCODE(int)=0
virtual void setDevice(int, std::string="")=0
virtual void outputBitstreamGlobalFooterSequence(std::ofstream &, bool, Endianness)=0
int numberOfBRAMCols[MAX_ROWS]
struct XilinxConfigurationAccessPort::SelectedOptions selectedOptions
Endianness forcedEndianness