23 namespace architecture {
28 mCompactSegmentCount(), mIrregularArcCount(), mTotalWireCount(), mPrunedWireCount(),
29 mActualWireCount(), mTrivialSegmentCount(), mNonTrivialSegmentCount(), mTotalSegmentCount()
36 uint16_t tileWireCount = 0;
37 uint16_t extraWireCount = 0;
46 if(sectionName !=
">>>>TileSegs>>>>")
throw -1;
49 inStream.
read(tileCount);
51 mOut() <<
"\tReading " << tileCount <<
" tiles..." << std::endl;
55 inStream.
read(tileWireCount);
61 inStream.
read(extraWireCount);
68 for(
WireIndex j; j < extraWireCount; j++) {
70 inStream.
read(wireIndex);
92 uint16_t wireCount = 0;
93 uint32_t offsetCount = 0;
102 if(sectionName !=
">>>>Segments>>>>")
throw -1;
111 inStream.
read(wireCount);
116 inStream.
read(wireIndex);
117 inStream.
read(tileOffset);
122 if(inExtendedAnchorTileCount) {
124 inStream.
read(offsetCount);
127 uint16_t shortOffsetCount;
128 inStream.
read(shortOffsetCount);
129 offsetCount = shortOffsetCount;
132 for(uint32_t j = 0; j < offsetCount; j++) {
135 inStream.
read(rootTileIndex);
143 mErr() <<
"WARNING: Overwriting mTilewireSegments[" << tileIndex <<
"][" << wireIndex <<
"]: "
154 for(
TileIndex tileIndex; tileIndex < tileCount; tileIndex++) {
167 <<
" trivial + " << mNonTrivialSegmentCount <<
" non-trivial)" << std::endl;
177 uint16_t arcCount = 0;
185 if(sectionName !=
">>>>IrrgArcs>>>>")
throw -1;
188 inStream.
read(tileCount);
190 mOut() <<
"\tReading irregular arcs for " << tileCount <<
" tiles..." << std::endl;
195 inStream.
read(arcCount);
196 irregularArcs.
setSize(arcCount);
198 for(uint16_t j = 0; j < arcCount; j++) {
200 inStream.
read(sourceWireIndex);
201 inStream.
read(sinkWireIndex);
203 irregularArcs[j] =
IrregularArc(sourceWireIndex, sinkWireIndex);
222 WireIndex sourceWireIndex = p->getSourceWireIndex();
223 if(sourceWireIndex < inSourceWireIndex) { p++;
continue; }
224 if(sourceWireIndex > inSourceWireIndex)
return NULL;
226 WireIndex sinkWireIndex = p->getSinkWireIndex();
227 if(sinkWireIndex < inSinkWireIndex) { p++;
continue; }
228 if(sinkWireIndex > inSinkWireIndex)
return NULL;
Encapsulation of a wire belonging to a compact segment.
uint32_t mTrivialSegmentCount
The number of defined trivial segments.
Encapsulation of a tile index in an unsigned 32-bit integer.
CompactSegmentIndex getCompactSegmentIndex(void) const
WireIndex getWireIndex(void) const
std::istream & read(uint8_t &outValue)
Read and return a uint8_t.
Header for the Segments class.
CompactSegmentCount mCompactSegmentCount
The number of compact segments in the device.
uint32_t mNonTrivialSegmentCount
The number of defined non-trivial segments.
TileOffset getTileOffset(void) const
T * end(void)
Returns the non-constant end iterator.
ostream & mErr(void)
Returns the database console error stream.
size_t readIrregularArcs(DigestStream &inStream)
Read the irregular arcs for the device.
Encapsulation of an irregular arc.
Array2D< SegmentReference > mTilewireSegments
The segment references for every wire in every tile.
Encapsulation of a wire index in an unsigned 16-bit integer.
xilinx::TileIndex TileIndex
Imported type name.
Encapsulation of a tile offset in an unsigned 32-bit integer.
Segments(void)
Protected constructor.
TileIndex getAnchorTileIndex(void) const
Array2D< CompactSegmentTilewire > mCompactSegments
The compact segments in the device.
Encapsulation of a tile count in an unsigned 32-bit integer.
uint32_t mActualWireCount
The number of actual wires on non-trivial segments in the device.
uint32_t mTotalWireCount
The total number of wires in the device (pruned and actual).
Encapsulation of a compact segment index in an unsigned 32-bit integer.
uint32_t mTotalSegmentCount
The total number of defined segments.
void readSectionHeader(string &outHeader)
Read and return a section header.
ostream & mOut(void)
Returns the database console output stream.
const Segments::IrregularArc * getIrregularArc(TileIndex inTileIndex, WireIndex inSourceWireIndex, WireIndex inSinkWireIndex)
Return a pointer to the requested IrregularArc, or 0 if the arc does not exist.
Encapsulation of compact segment index and an anchoring tile index.
Array2D< IrregularArc > mIrregularArcs
The irregular arcs for in the device.
T * begin(void)
Returns the non-constant begin iterator.
void setSize(uint32_t inSize)
Discards all contents and resizes the array.
Encapsulation of a device or family digest stream.
size_t readTilewireSegments(DigestStream &inStream)
Read the segment entries for every tile.
size_t getBytesRead(void) const
Returns the number of bytes read.
static const SegmentReference sTrivialSegmentReference
uint32_t mPrunedWireCount
The number of pruned wires in the device.
bool isTrivial(void) const
size_t readSegments(DigestStream &inStream, bool inExtendedAnchorTileCount)
Read the compact segments for the device.
Encapsulation of a static array.