diff options
author | YRabbit <rabbit@yrabbit.cyou> | 2021-11-07 09:05:34 +1000 |
---|---|---|
committer | YRabbit <rabbit@yrabbit.cyou> | 2021-11-07 09:05:34 +1000 |
commit | deb14762aadc9eda0610215849829f5957d7c71d (patch) | |
tree | d6fb308cea78395e25ac08e779ccc6cff75ffedb | |
parent | 2a27085ecbe4d0f6ad46a370f7db938a5ac36348 (diff) | |
download | nextpnr-deb14762aadc9eda0610215849829f5957d7c71d.tar.gz nextpnr-deb14762aadc9eda0610215849829f5957d7c71d.tar.bz2 nextpnr-deb14762aadc9eda0610215849829f5957d7c71d.zip |
gowin: Check the chipdb version
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
-rw-r--r-- | gowin/arch.cc | 6 | ||||
-rw-r--r-- | gowin/arch.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gowin/arch.cc b/gowin/arch.cc index ca93c3ba..6641df72 100644 --- a/gowin/arch.cc +++ b/gowin/arch.cc @@ -674,8 +674,12 @@ Arch::Arch(ArchArgs args) : args(args) // Load database std::string chipdb = stringf("gowin/chipdb-%s.bin", family.c_str()); auto db = reinterpret_cast<const DatabasePOD *>(get_chipdb(chipdb)); - if (db == nullptr) + if (db == nullptr) { log_error("Failed to load chipdb '%s'\n", chipdb.c_str()); + } + if (db->version != chipdb_version) { + log_error("Incorrect chipdb version %u is used. Version %u is required\n", db->version, chipdb_version); + } if (db->family.get() != family) { log_error("Database is for family '%s' but provided device is family '%s'.\n", db->family.get(), family.c_str()); diff --git a/gowin/arch.h b/gowin/arch.h index bf69ebe9..aa751a4f 100644 --- a/gowin/arch.h +++ b/gowin/arch.h @@ -454,6 +454,8 @@ struct Arch : BaseArch<ArchRanges> bool cellsCompatible(const CellInfo **cells, int count) const; // start Z for the MUX2LUT5 bels int const mux_0_z = 10; + // chip db version + unsigned int const chipdb_version = 1; std::vector<IdString> cell_types; |