diff options
author | gatecat <gatecat@ds0.me> | 2021-04-30 18:40:24 +0100 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-05-15 14:54:33 +0100 |
commit | 0533818ceead805b9afc749d3a23e571e4a21543 (patch) | |
tree | a60b9bc96eafea8760536db360094c8bd98a4f81 /cyclonev/archdefs.h | |
parent | 9f2cbe1762387ec38d358fb4c885740de89b5656 (diff) | |
download | nextpnr-0533818ceead805b9afc749d3a23e571e4a21543.tar.gz nextpnr-0533818ceead805b9afc749d3a23e571e4a21543.tar.bz2 nextpnr-0533818ceead805b9afc749d3a23e571e4a21543.zip |
cyclonev: Update in line with nextpnr changes
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'cyclonev/archdefs.h')
-rw-r--r-- | cyclonev/archdefs.h | 68 |
1 files changed, 17 insertions, 51 deletions
diff --git a/cyclonev/archdefs.h b/cyclonev/archdefs.h index de04b4c7..d8fd3160 100644 --- a/cyclonev/archdefs.h +++ b/cyclonev/archdefs.h @@ -17,11 +17,15 @@ * */ -#ifndef NEXTPNR_H -#error Include "archdefs.h" via "nextpnr.h" only. -#endif +#ifndef MISTRAL_ARCHDEFS_H +#define MISTRAL_ARCHDEFS_H -#include "mistral/lib/cyclonev.h" +#include <boost/functional/hash.hpp> + +#include "cyclonev.h" + +#include "idstring.h" +#include "nextpnr_namespaces.h" NEXTPNR_NAMESPACE_BEGIN @@ -82,30 +86,9 @@ struct PipId bool operator<(const PipId &other) const { return index < other.index; } }; -struct GroupId -{ - enum : int8_t - { - TYPE_NONE - } type = TYPE_NONE; - int8_t x = 0, y = 0; - - bool operator==(const GroupId &other) const { return (type == other.type) && (x == other.x) && (y == other.y); } - bool operator!=(const GroupId &other) const { return (type != other.type) || (x != other.x) || (y == other.y); } -}; - -struct DecalId -{ - enum : int8_t - { - TYPE_NONE, - } type = TYPE_NONE; - int32_t index = -1; - bool active = false; - - bool operator==(const DecalId &other) const { return (type == other.type) && (index == other.index); } - bool operator!=(const DecalId &other) const { return (type != other.type) || (index != other.index); } -}; +typedef IdString DecalId; +typedef IdString GroupId; +typedef IdString BelBucketId; struct ArchNetInfo { @@ -120,7 +103,10 @@ NEXTPNR_NAMESPACE_END namespace std { template <> struct hash<NEXTPNR_NAMESPACE_PREFIX BelId> { - std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX BelId &bel) const noexcept { return hash<uint32_t>()((static_cast<uint32_t>(bel.pos) << 16) | bel.z); } + std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX BelId &bel) const noexcept + { + return hash<uint32_t>()((static_cast<uint32_t>(bel.pos) << 16) | bel.z); + } }; template <> struct hash<NEXTPNR_NAMESPACE_PREFIX WireId> @@ -136,26 +122,6 @@ template <> struct hash<NEXTPNR_NAMESPACE_PREFIX PipId> std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX PipId &pip) const noexcept { return hash<int>()(pip.index); } }; -template <> struct hash<NEXTPNR_NAMESPACE_PREFIX GroupId> -{ - std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX GroupId &group) const noexcept - { - std::size_t seed = 0; - boost::hash_combine(seed, hash<int>()(group.type)); - boost::hash_combine(seed, hash<int>()(group.x)); - boost::hash_combine(seed, hash<int>()(group.y)); - return seed; - } -}; - -template <> struct hash<NEXTPNR_NAMESPACE_PREFIX DecalId> -{ - std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX DecalId &decal) const noexcept - { - std::size_t seed = 0; - boost::hash_combine(seed, hash<int>()(decal.type)); - boost::hash_combine(seed, hash<int>()(decal.index)); - return seed; - } -}; } // namespace std + +#endif
\ No newline at end of file |