#ifndef PRJXRAY_LIB_XILINX_XCUPSERIES_CRC_H_
#define PRJXRAY_LIB_XILINX_XCUPSERIES_CRC_H_

#include <cstdint>

constexpr uint32_t kCrc32CastagnoliPolynomial = 0x82F63B78;

namespace prjxray {
namespace xilinx {
namespace xcupseries {

// The CRC is calculated from each written data word and the current
// register address the data is written to.

// Extend the current CRC value with one register address (5bit) and
// frame data (32bit) pair and return the newly computed CRC value.

uint32_t icap_crc(uint32_t addr, uint32_t data, uint32_t prev) {
	constexpr int kAddressBitWidth = 5;
	constexpr int kDataBitWidth = 32;

	uint64_t poly = static_cast<uint64_t>(kCrc32CastagnoliPolynomial) << 1;
	uint64_t val = (static_cast<uint64_t>(addr) << 32) | data;
	uint64_t crc = prev;

	for (int i = 0; i < kAddressBitWidth + kDataBitWidth; i++) {
		if ((val & 1) != (crc & 1))
			crc ^= poly;

		val >>= 1;
		crc >>= 1;
	}
	return crc;
}

}  // namespace xcupseries
}  // namespace xilinx
}  // namespace prjxray

#endif  // PRJXRAY_LIB_XILINX_XCUPSERIES_CRC_H_
