From 0d2c33bf0fdfecee79622f9723f0cd813671614b Mon Sep 17 00:00:00 2001 From: Rick Altherr Date: Thu, 4 Jan 2018 14:58:57 -0800 Subject: [PATCH] lib: xc7series: ostream operator for ConfigurationFrameAddress Writes a decoded version of the address to the stream. Handy for logging. Signed-off-by: Rick Altherr --- .../xc7series/configuration_frame_address.h | 4 ++++ .../xc7series/configuration_frame_address.cc | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/include/prjxray/xilinx/xc7series/configuration_frame_address.h b/lib/include/prjxray/xilinx/xc7series/configuration_frame_address.h index fe5cb89c..82c8ef9a 100644 --- a/lib/include/prjxray/xilinx/xc7series/configuration_frame_address.h +++ b/lib/include/prjxray/xilinx/xc7series/configuration_frame_address.h @@ -2,6 +2,7 @@ #define PRJXRAY_LIB_XILINX_XC7SERIES_CONFIGURATION_FRAME_ADDRESS_H_ #include +#include #include #include @@ -34,6 +35,9 @@ class ConfigurationFrameAddress { uint32_t address_; }; +std::ostream &operator<<( + std::ostream &o, const ConfigurationFrameAddress& addr); + } // namespace xc7series } // namespace xilinx } // namespace prjxray diff --git a/lib/xilinx/xc7series/configuration_frame_address.cc b/lib/xilinx/xc7series/configuration_frame_address.cc index 5bcf48af..826e1209 100644 --- a/lib/xilinx/xc7series/configuration_frame_address.cc +++ b/lib/xilinx/xc7series/configuration_frame_address.cc @@ -1,5 +1,7 @@ #include +#include + #include namespace prjxray { @@ -37,6 +39,27 @@ uint8_t ConfigurationFrameAddress::minor_address() const { return bit_field_get(address_, 6, 0); } +std::ostream &operator<<( + std::ostream &o, const ConfigurationFrameAddress& addr) { + o << "[" + << std::hex << std::showbase << std::setw(10) + << static_cast(addr) + << "] " + << (addr.is_bottom_half_rows() ? "BOTTOM" : "TOP") + << " Row=" + << std::setw(2) << std::dec + << static_cast(addr.row_address()) + << " Column=" + << std::setw(2) << std::dec + << addr.column_address() + << " Minor=" + << std::setw(2) << std::dec + << static_cast(addr.minor_address()) + << " Type=" + << addr.block_type(); + return o; +} + } // namespace xc7series } // namespace xilinx } // namespace prjxray