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(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 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 cell_types;