torc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Virtex5.hpp
Go to the documentation of this file.
1 // Torc - Copyright 2011-2013 University of Southern California. All Rights Reserved.
2 // $HeadURL$
3 // $Id$
4 
5 // This program is free software: you can redistribute it and/or modify it under the terms of the
6 // GNU General Public License as published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
11 // the GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License along with this program. If
14 // not, see <http://www.gnu.org/licenses/>.
15 
16 /// \file
17 /// \brief Header for the Virtex5 class.
18 
19 #ifndef TORC_BITSTREAM_VIRTEX5_HPP
20 #define TORC_BITSTREAM_VIRTEX5_HPP
21 
22 #include <boost/cstdint.hpp>
23 #include <boost/filesystem.hpp>
26 #include <map>
27 
28 namespace torc { namespace architecture { class DDB; } }
29 
30 namespace torc {
31 namespace bitstream {
32 
33 namespace bitstream { class Virtex5UnitTest; }
34 namespace bitstream { class Virtex5FarUnitTest; }
35 namespace bitstream { void testVirtex5Device(const std::string& inDeviceName,
36  const boost::filesystem::path& inWorkingPath); }
37 namespace bitstream { void testVirtex5FullMapping(const boost::filesystem::path& inWorkingPath); }
38 namespace bitstream { void testVirtex5PartialMapping(const boost::filesystem::path& inWorkingPath); }
39 
40  /// \brief Virtex5 bitstream.
41  class Virtex5 : public VirtexBitstream {
44  friend void torc::bitstream::bitstream::testVirtex5Device(const std::string& inDeviceName,
45  const boost::filesystem::path& inWorkingPath);
48  protected:
49  // typedefs
50  /// \brief Imported type name.
51  typedef boost::uint32_t uint32_t;
52  public:
53  // enumerations
54  /// \brief Configuration register enumeration.
55  /// \see Type 1 Packet Registers: UG191, v3.7, June 24, 2009, Table 6-5.
61  //
62  /// \brief Configuration command enumeration for eRegisterCMD.
63  /// \see Command Register Codes: UG191, v3.7, June 24, 2009, Table 6-6.
69  //
70  /// \brief Frame Address Register subfields.
71  /// \see Frame Address Register Description: UG191, v3.7, June 24, 2009, Table 6-8.
72  enum EFar {
75  eFarMaskRow = 0x000f8000, eFarShiftRow = 15,
76  eFarMaskMajor = 0x00007f80, eFarShiftMajor = 7,
77  eFarMaskMinor = 0x0000007f, eFarShiftMinor = 0
78  };
79  //
80  /// \brief Frame Address Register top and bottom constants.
81  /// \see Frame Address Register Description: UG191, v3.7, June 24, 2009, Table 6-8.
82  enum EFarTopBottom { eFarTop = 0, eFarBottom = 1 };
83  //
84  /// \brief Frame Address Register block type constants.
87  //
88  /// \brief Assorted constants.
89  /// \see WBSTAR Register Description: UG191, v3.7, June 24, 2009, Table 6-12.
90  enum {
91  eStartAddr = 0x03ffffff,
92  eTimerValue = 0x00ffffff
93  };
94  /// \brief Major column types.
95  /// \details These are defined and used for internal purposes only, and are not derived
96  /// from any Xilinx documentation.
99  /// \brief Frame length.
100  /// \details Constant frame length of 41 32-bit words for the entire Virtex5 family.
101  /// \see Virtex-5 Frame Count, Frame Length, Overhead, and Bitstream Size: UG191, v.3.7,
102  /// June 24, 2009, Table 6-1.
103  enum { eFrameLength = 41 };
104  /// \brief Number of pad frames after each frame row.
105  /// \details The configuration controller expects two frames of NOPs after each frame row.
106  enum { eRowPadFrames = 2 };
107  protected:
108  // enumerations
109  // static variables
110 // static const ColumnWidths sColumnTypeWidths[];
111 // static const std::map<std::string, EColumnType> sTileNameToColumnType;
112  // members
113 // /// \brief Configuration controller registers.
114 // uint32_t mRegister[eRegisterCount];
115  /// \brief Packet type names.
116  static const char* sPacketTypeName[ePacketTypeCount];
117  /// \brief Packet opcode names.
118  static const char* sOpcodeName[eOpcodeCount];
119  /// \brief Configuration register names.
120  static const char* sRegisterName[eRegisterCount];
121  /// \brief Configuration command names.
122  static const char* sCommandName[eCommandCount];
123  /// \brief Configuration Options Register 0 (COR) subfields.
124  static const Subfield sCOR0[];
125  /// \brief Configuration Options Register 1 (COR) subfields.
126  static const Subfield sCOR1[];
127  /// \brief Status Register (STAT) subfields.
128  static const Subfield sSTAT[];
129  /// \brief Control Register 0 (CTL) subfields.
130  static const Subfield sCTL0[];
131  /// \brief Control Register 1 (CTL) subfields.
132  static const Subfield sCTL1[];
133  /// \brief Control Mask Register (MASK) subfields.
134  static const Subfield sMASK0[];
135  /// \brief Warm Boot Start Address Register (WBSTAR) subfields.
136  static const Subfield sWBSTAR[];
137  /// \brief Watchdog Timer Register (TIMER) subfields.
138  static const Subfield sTIMER[];
139  /// \brief Boot History Status Register (BOOTSTS) subfields.
140  static const Subfield sBOOTSTS[];
141  public:
142  // constructors
143  /// \brief Basic constructor.
145 // for(int i = 0; i < eRegisterCount; i++) mRegister[i] = 0;
146  // initialize miscellaneous variables
147  mFrameRowCount = 0;
148  // initialize the column type widths for this family
150  mColumnDefs[eColumnTypeEmpty] = ColumnDef("Empty", 0, 0, 0, 0, 0, 0, 0, 0);
151  mColumnDefs[eColumnTypeInt] = ColumnDef("Int", 0, 0, 0, 0, 0, 0, 0, 0);
152  mColumnDefs[eColumnTypeBram] = ColumnDef("Bram", 30,128, 0, 0, 0, 0, 0, 0);
153  mColumnDefs[eColumnTypeClb] = ColumnDef("Clb", 36, 0, 0, 0, 0, 0, 0, 0);
154  mColumnDefs[eColumnTypeClock] = ColumnDef("Clock", 4, 0, 0, 0, 0, 0, 0, 0);
155  mColumnDefs[eColumnTypeDsp] = ColumnDef("Dsp", 28, 0, 0, 0, 0, 0, 0, 0);
156  mColumnDefs[eColumnTypeGtx] = ColumnDef("Gtx", 32, 0, 0, 0, 0, 0, 0, 0);
157  mColumnDefs[eColumnTypeIoi] = ColumnDef("Ioi", 54, 0, 0, 0, 0, 0, 0, 0);
158  // map type type names to column types
170  }
171  // functions
172  /// \brief Return the masked value for a subfield of the specified register.
173  static uint32_t makeSubfield(ERegister inRegister, const std::string& inSubfield,
174  const std::string& inSetting);
175  /// \brief Initialize the device information.
176  virtual void initializeDeviceInfo(const std::string& inDeviceName);
177  /// \brief Initialize the maps between frame indexes and frame addresses.
178  /// \details This is generally only useful for internal purposes.
179  virtual void initializeFrameMaps(void);
180  /// \brief Read frame data into the frame blocks structure.
181  virtual void readFramePackets(void) {
182  readFramePackets4567<Virtex5>(mBlockFrameIndexBounds, mFrameAddressToIndex,
184  }
185  /// \brief Discard the existing frame packets and return an iterator to the start position.
186  virtual VirtexPacketVector::iterator deleteFramePackets(void) {
187  return deleteFramePackets4567<Virtex5>();
188  }
189  /// \brief Return a packet vector with full frame data.
191  return generateFullBitstreamPackets4567<Virtex5>(mBlockFrameIndexBounds);
192  }
193  /// \brief Return a packet vector with the full bitstream prefix.
195  /// \brief Return a packet vector with the full bitstream suffix.
197  /// \brief Return a packet vector with partial frame data.
198  /// \param inFrameInclusion The type of frames to include: only dirty frames or all frames.
200  return generatePartialBitstreamPackets4567<Virtex5>(inFrameInclusion,
202  }
203  /// \brief Return a packet vector with the partial bitstream prefix.
204  /// \param inBitstreamType The type of partial bitstream to generate: active or shutdown.
206  /// \brief Return a packet vector with the partial bitstream suffix.
207  /// \param inBitstreamType The type of partial bitstream to generate: active or shutdown.
209  /// \brief Returns frames for specified bitstream tile column.
210  /// \parameter inTopBottom The top or bottom half of the device: eFarTop or eFarBottom.
211  /// \parameter inFrameRow The frame or clock region row in the area specified by
212  /// inTopBottom.
213  /// \parameter inBitCol The bitstream column coordinate (different than the XDL column
214  /// coordinate).
215  /// \parameter inBlockCount The highest block type requested (8 for Xilinx architectures).
217  uint32_t inBitCol, uint32_t inBlockCount = eBlockTypeCount);
218  /// \brief Returns frames for specified bitstream tile column.
219  /// \parameter inBitRow The bitstream row coordinate (same as the XDL row coordinate).
220  /// \parameter inBitCol The bitstream column coordinate (different than the XDL column
221  /// coordinate).
222  /// \parameter outBeginBit The bit index of the beginning of the requested tile.
223  /// \parameter outEndBit The bit index of the end of the requested tile.
224  /// \parameter inBlockCount The highest block type requested (8 for Xilinx architectures).
226  uint32_t& outBeginBit, uint32_t& outEndBit, uint32_t inBlockCount = eBlockTypeCount);
227  /// \brief Returns frames for specified XDL tile coordinates.
228  /// \parameter inXldRow The XDL row coordinate.
229  /// \parameter inXdlCol The XDL column coordinate.
230  /// \parameter outBeginBit The bit index of the beginning of the requested tile.
231  /// \parameter outEndBit The bit index of the end of the requested tile.
232  /// \parameter inBlockCount The highest block type requested (8 for Xilinx architectures).
233  VirtexFrameBlocks getXdlFrames(uint32_t inXdlRow, uint32_t inXdlCol, uint32_t& outBeginBit,
234  uint32_t& outEndBit, uint32_t inBlockCount = eBlockTypeCount);
235  /// \brief Returns the primary column corresponding to the given column. If immediately to
236  /// the left of a BRAM, CLB, DSP, GTX, or IOI column, return that column. In all other
237  /// cases, return the given column.
238  /// \parameter inXdlCol The XDL column coordinate.
240  /// \brief Split the given frame index into the base index of the major frame and the index
241  /// of the minor frame.
242  virtual void splitFrameIndex(uint32_t inFrameIndex, uint32_t& outMajorIndex,
243  uint32_t& outMinorIndex) {
244  outMinorIndex = mFrameIndexToAddress[inFrameIndex].mMinor;
245  outMajorIndex = inFrameIndex - outMinorIndex;
246  }
247  // deprecation macro
248  /// \cond OMIT_FROM_DOXYGEN
249  // Doxygen gets confused by the explicit "__attribute__ ((deprecated))" so we used this
250  #define DEPRECATED __attribute__ ((deprecated))
251  /// \endcond
252  // deprecated functions
253  /// \brief Loads full bitstream frames into block data structure.
254  DEPRECATED void initializeFullFrameBlocks(void);
255  /// \brief Transfers frame block data into the full bitstream frame packet
256  DEPRECATED void updateFullFrameBlocks(void);
257  // accessors
258  /// \brief Return the number of frame rows for the current device.
259  virtual uint32_t getFrameRowCount(void) const { return mFrameRowCount; }
260  /// \brief Return the frame length for the current device.
261  virtual uint32_t getFrameLength(void) const { return eFrameLength; }
262  /// \brief Return the number of pad frames after each row.
263  virtual uint32_t getRowPadFrames(void) const { return eRowPadFrames; }
264  // inserters
265  /// \brief Insert the bitstream header into an output stream.
266  friend std::ostream& operator<< (std::ostream& os, const Virtex5& rhs);
267 
268  // inner classes
270  protected:
271  virtual void assign(uint32_t inAddress) {
274  mRow = (inAddress & eFarMaskRow) >> eFarShiftRow;
275  mMajor = (inAddress & eFarMaskMajor) >> eFarShiftMajor;
276  mMinor = (inAddress & eFarMaskMinor) >> eFarShiftMinor;
277  }
278  public:
280  mMajor(0), mMinor(0) {}
281  FrameAddress(EFarTopBottom inTopBottom, EFarBlockType inBlockType, uint32_t inRow,
282  uint32_t inMajor, uint32_t inMinor) : mTopBottom(inTopBottom),
283  mBlockType(inBlockType), mRow(inRow), mMajor(inMajor), mMinor(inMinor) {}
284  FrameAddress(uint32_t inAddress) { assign(inAddress); }
290  virtual bool operator== (const VirtexFrameAddress& vrhs) const {
291  const FrameAddress& rhs = reinterpret_cast<const FrameAddress&>(vrhs);
292  return mTopBottom == rhs.mTopBottom && mBlockType == rhs.mBlockType
293  && mRow == rhs.mRow && mMajor == rhs.mMajor && mMinor == rhs.mMinor;
294  }
295  virtual bool operator< (const VirtexFrameAddress& vrhs) const {
296  const FrameAddress& rhs = reinterpret_cast<const FrameAddress&>(vrhs);
297  int diffBlockType = mBlockType - rhs.mBlockType;
298  if(diffBlockType) return diffBlockType < 0;
299  int diffTopBottom = mTopBottom - rhs.mTopBottom;
300  if(diffTopBottom) return diffTopBottom < 0;
301  int diffRow = mRow - rhs.mRow;
302  if(diffRow) return diffRow < 0;
303  int diffMajor = mMajor - rhs.mMajor;
304  if(diffMajor) return diffMajor < 0;
305  return mMinor < rhs.mMinor;
306  }
307  operator uint32_t (void) const {
310  | ((mRow << eFarShiftRow) & eFarMaskRow)
312  | ((mMinor << eFarShiftMinor) & eFarMaskMinor));
313  }
314  friend std::ostream& operator<< (std::ostream& os, const Virtex5::FrameAddress& rhs) {
315  return os << (rhs.mTopBottom == Virtex5::eFarTop ? 'T' : 'B')
316  << "" << rhs.mBlockType << "(" << rhs.mRow << "," << rhs.mMajor << "."
317  << rhs.mMinor << ")";
318  }
319  private:
320  //
321  };
322  protected:
323  // typedefs
324  /// \brief Map from frame index to frame address.
325  typedef std::map<uint32_t, Virtex5::FrameAddress> FrameIndexToAddress;
326  /// \brief Map from frame address to frame index.
327  typedef std::map<Virtex5::FrameAddress, uint32_t> FrameAddressToIndex;
328  /// \brief Array of vectors to store frame indexes of each block type
329  typedef std::vector<uint32_t> IndexVector;
330  /// \brief Frame row designator: top/bottom flag and row index.
332  /// \brief Top/bottom flag.
334  /// \brief Frame row.
336  /// \brief Base XDL row.
338  /// \brief Default constructor.
340  /// \brief Constructor.
341  FrameRowDesignator(EFarTopBottom inTopBottom, uint32_t inFrameRow,
342  uint32_t inXdlBaseRow) : mTopBottom(inTopBottom), mFrameRow(inFrameRow),
343  mXdlBaseRow(inXdlBaseRow) {}
344  /// \brief Comparison operator (for map operations).
345  bool operator< (const FrameRowDesignator& rhs) const {
346  if(mTopBottom < rhs.mTopBottom) return true;
347  return mFrameRow < rhs.mFrameRow;
348  }
349  };
350  // functions
351  /// \brief Returns frames for queried bitstream coordinates
353  uint32_t inBlockCount = eBlockTypeCount);
354  /// \brief Returns frames for queried XDL coordinates
355  VirtexFrameBlocks getXdlFrames(uint32_t inFrameRow, uint32_t inXdlCol,
356  uint32_t inBlockCount = eBlockTypeCount);
357  // members
358  /// \brief Map of frame indexes to frame addresses.
360  /// \brief Map of frame addressee to frame indexes.
362  /// \brief Vector to store frame indexes of XDL columns.
364  /// \brief Vector to store frame indexes of Bitstream columns.
366  /// \brief Array to hold frame index boundaries for blocks.
368  /// \brief Map of bitstream column indexes to XDL column indexes.
369  std::map<uint32_t, uint32_t> mBitColumnToXdlColumn;
370  /// \brief Number of frame rows.
372  /// \brief Map of XDL tile rows to frame designators.
373  std::map<uint32_t, FrameRowDesignator> mXdlRowToFrameRowDesignator;
374  };
375 
376 } // namespace bitstream
377 } // namespace torc
378 
379 #endif // TORC_BITSTREAM_VIRTEX5_HPP
virtual bool operator==(const VirtexFrameAddress &vrhs) const
Definition: Virtex5.hpp:290
ColumnDefVector mColumnDefs
Column type widths.
static const Subfield sMASK0[]
Control Mask Register (MASK) subfields.
Definition: Virtex5.hpp:134
ECommand
Configuration command enumeration for eRegisterCMD.
Definition: Virtex5.hpp:64
Virtex-class bitstream.
FrameAddressToIndex mFrameAddressToIndex
Map of frame addressee to frame indexes.
Definition: Virtex5.hpp:361
virtual void initializeFrameMaps(void)
Initialize the maps between frame indexes and frame addresses.
Definition: Virtex5.cpp:528
static uint32_t makeSubfield(ERegister inRegister, const std::string &inSubfield, const std::string &inSetting)
Return the masked value for a subfield of the specified register.
Definition: Virtex5.cpp:355
virtual void readFramePackets(void)
Read frame data into the frame blocks structure.
Definition: Virtex5.hpp:181
TileTypeNameToColumnType mTileTypeNameToColumnType
virtual void splitFrameIndex(uint32_t inFrameIndex, uint32_t &outMajorIndex, uint32_t &outMinorIndex)
Split the given frame index into the base index of the major frame and the index of the minor frame...
Definition: Virtex5.hpp:242
EFar
Frame Address Register subfields.
Definition: Virtex5.hpp:72
IndexVector mBitColumnIndexes[Virtex5::eFarBlockTypeCount]
Vector to store frame indexes of XDL columns.
Definition: Virtex5.hpp:363
Header for the VirtexBitstream class.
friend class torc::bitstream::bitstream::Virtex5UnitTest
Definition: Virtex5.hpp:42
FrameRowDesignator(EFarTopBottom inTopBottom, uint32_t inFrameRow, uint32_t inXdlBaseRow)
Constructor.
Definition: Virtex5.hpp:341
static const char * sRegisterName[eRegisterCount]
Configuration register names.
Definition: Virtex5.hpp:120
EFarTopBottom
Frame Address Register top and bottom constants.
Definition: Virtex5.hpp:82
EFrameInclude
The frames to include in a partial bitstream. Use eFrameIncludeOnlyDirtyFrames to include only dirty...
static const Subfield sCOR0[]
Configuration Options Register 0 (COR) subfields.
Definition: Virtex5.hpp:124
static const Subfield sTIMER[]
Watchdog Timer Register (TIMER) subfields.
Definition: Virtex5.hpp:138
boost::uint32_t uint32_t
Imported type name.
friend std::ostream & operator<<(std::ostream &os, const Virtex5 &rhs)
Insert the bitstream header into an output stream.
FrameIndexToAddress mFrameIndexToAddress
Map of frame indexes to frame addresses.
Definition: Virtex5.hpp:359
Virtex5(void)
Basic constructor.
Definition: Virtex5.hpp:144
FrameAddress(EFarTopBottom inTopBottom, EFarBlockType inBlockType, uint32_t inRow, uint32_t inMajor, uint32_t inMinor)
Definition: Virtex5.hpp:281
EFarBlockType
Frame Address Register block type constants.
Definition: Virtex5.hpp:85
static const Subfield sCOR1[]
Configuration Options Register 1 (COR) subfields.
Definition: Virtex5.hpp:126
Bitstream column definition for Xilinx bitstreams. For every block type 0 through 8...
Definition: DeviceInfo.hpp:35
IndexVector mXdlColumnIndexes[Virtex5::eFarBlockTypeCount]
Vector to store frame indexes of Bitstream columns.
Definition: Virtex5.hpp:365
std::map< uint32_t, Virtex5::FrameAddress > FrameIndexToAddress
Map from frame index to frame address.
Definition: Virtex5.hpp:325
static const Subfield sSTAT[]
Status Register (STAT) subfields.
Definition: Virtex5.hpp:128
ERegister
Configuration register enumeration.
Definition: Virtex5.hpp:56
friend std::ostream & operator<<(std::ostream &os, const Virtex5::FrameAddress &rhs)
Definition: Virtex5.hpp:314
Frame row designator: top/bottom flag and row index.
Definition: Virtex5.hpp:331
virtual void assign(uint32_t inAddress)
Definition: Virtex5.hpp:271
std::string string
virtual VirtexPacketVector generateFullBitstreamPrefix(void)
Return a packet vector with the full bitstream prefix.
Definition: Virtex5.cpp:655
static const Subfield sCTL1[]
Control Register 1 (CTL) subfields.
Definition: Virtex5.hpp:132
boost::uint32_t uint32_t
Imported type name.
Virtex5 bitstream.
Definition: Virtex5.hpp:41
virtual uint32_t getFrameRowCount(void) const
Return the number of frame rows for the current device.
Definition: Virtex5.hpp:259
static const char * sPacketTypeName[ePacketTypeCount]
Packet type names.
Definition: Virtex5.hpp:116
std::map< uint32_t, FrameRowDesignator > mXdlRowToFrameRowDesignator
Map of XDL tile rows to frame designators.
Definition: Virtex5.hpp:373
Virtex Frame Address base-class.
static const char * sOpcodeName[eOpcodeCount]
Packet opcode names.
Definition: Virtex5.hpp:118
DEPRECATED void updateFullFrameBlocks(void)
Transfers frame block data into the full bitstream frame packet.
Definition: Virtex5.cpp:1025
virtual VirtexPacketVector generateFullBitstreamPackets(void)
Return a packet vector with full frame data.
Definition: Virtex5.hpp:190
void testVirtex5Device(const std::string &inDeviceName, const boost::filesystem::path &inWorkingPath)
virtual VirtexPacketVector::iterator deleteFramePackets(void)
Discard the existing frame packets and return an iterator to the start position.
Definition: Virtex5.hpp:186
static const char * sCommandName[eCommandCount]
Configuration command names.
Definition: Virtex5.hpp:122
static const Subfield sBOOTSTS[]
Boot History Status Register (BOOTSTS) subfields.
Definition: Virtex5.hpp:140
EBitstreamType
The bitstream type to generate. Use eBitstreamFull to fully reconfigure a device, eBitstreamTypePartialActive to partially reconfigure it while it continues to run, or eBitstreamTypePartialShutdown to partially recongifure it after shutting it down.
uint32_t mBlockFrameIndexBounds[Virtex5::eFarBlockTypeCount]
Array to hold frame index boundaries for blocks.
Definition: Virtex5.hpp:367
void testVirtex5FullMapping(const boost::filesystem::path &inWorkingPath)
boost::filesystem::path path
virtual VirtexPacketVector generatePartialBitstreamPrefix(EBitstreamType inBitstreamType)
Return a packet vector with the partial bitstream prefix.
Definition: Virtex5.cpp:859
VirtexFrameBlocks getXdlFrames(uint32_t inXdlRow, uint32_t inXdlCol, uint32_t &outBeginBit, uint32_t &outEndBit, uint32_t inBlockCount=eBlockTypeCount)
Returns frames for specified XDL tile coordinates. inXldRow The XDL row coordinate. inXdlCol The XDL column coordinate. outBeginBit The bit index of the beginning of the requested tile. outEndBit The bit index of the end of the requested tile. inBlockCount The highest block type requested (8 for Xilinx architectures).
Definition: Virtex5.cpp:1091
std::vector< VirtexPacket > VirtexPacketVector
Vector of Virtex packets.
std::map< Virtex5::FrameAddress, uint32_t > FrameAddressToIndex
Map from frame address to frame index.
Definition: Virtex5.hpp:327
EFarTopBottom mTopBottom
Top/bottom flag.
Definition: Virtex5.hpp:333
uint32_t mFrameRowCount
Number of frame rows.
Definition: Virtex5.hpp:371
FrameRowDesignator(void)
Default constructor.
Definition: Virtex5.hpp:339
static const Subfield sWBSTAR[]
Warm Boot Start Address Register (WBSTAR) subfields.
Definition: Virtex5.hpp:136
DEPRECATED void initializeFullFrameBlocks(void)
Loads full bitstream frames into block data structure.
Definition: Virtex5.cpp:1004
virtual bool operator<(const VirtexFrameAddress &vrhs) const
Definition: Virtex5.hpp:295
bool operator<(const FrameRowDesignator &rhs) const
Comparison operator (for map operations).
Definition: Virtex5.hpp:345
boost::uint32_t uint32_t
Imported type name.
Definition: Virtex5.hpp:51
void testVirtex5PartialMapping(const boost::filesystem::path &inWorkingPath)
EColumnType
Major column types.
Definition: Virtex5.hpp:97
virtual VirtexPacketVector generatePartialBitstreamPackets(EFrameInclude inFrameInclusion)
Return a packet vector with partial frame data.
Definition: Virtex5.hpp:199
VirtexFrameBlocks getBitstreamFrames(EFarTopBottom inTopBottom, uint32_t inFrameRow, uint32_t inBitCol, uint32_t inBlockCount=eBlockTypeCount)
Returns frames for specified bitstream tile column. inTopBottom The top or bottom half of the device...
Definition: Virtex5.cpp:1074
friend class torc::bitstream::bitstream::Virtex5FarUnitTest
Definition: Virtex5.hpp:43
std::map< uint32_t, uint32_t > mBitColumnToXdlColumn
Map of bitstream column indexes to XDL column indexes.
Definition: Virtex5.hpp:369
virtual VirtexPacketVector generatePartialBitstreamSuffix(EBitstreamType inBitstreamType)
Return a packet vector with the partial bitstream suffix.
Definition: Virtex5.cpp:941
std::vector< uint32_t > IndexVector
Array of vectors to store frame indexes of each block type.
Definition: Virtex5.hpp:329
virtual VirtexPacketVector generateFullBitstreamSuffix(void)
Return a packet vector with the full bitstream suffix.
Definition: Virtex5.cpp:786
uint32_t getPrimaryXdlColumn(uint32_t inXdlCol)
Returns the primary column corresponding to the given column. If immediately to the left of a BRAM...
Definition: Virtex5.cpp:1176
Header for the VirtexBitstream class.
virtual uint32_t getFrameLength(void) const
Return the frame length for the current device.
Definition: Virtex5.hpp:261
virtual uint32_t getRowPadFrames(void) const
Return the number of pad frames after each row.
Definition: Virtex5.hpp:263
static const Subfield sCTL0[]
Control Register 0 (CTL) subfields.
Definition: Virtex5.hpp:130
virtual void initializeDeviceInfo(const std::string &inDeviceName)
Initialize the device information.
Definition: Virtex5.cpp:412