diff options
Diffstat (limited to 'mistral/arch.cc')
-rw-r--r-- | mistral/arch.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/mistral/arch.cc b/mistral/arch.cc index d5bc424c..9c661439 100644 --- a/mistral/arch.cc +++ b/mistral/arch.cc @@ -149,15 +149,23 @@ IdStringList Arch::getBelName(BelId bel) const bool Arch::isBelLocationValid(BelId bel) const { auto &data = bel_data(bel); - // Incremental validity update if (data.type == id_MISTRAL_COMB) { - return is_alm_legal(data.lab_data.lab, data.lab_data.alm); + return is_alm_legal(data.lab_data.lab, data.lab_data.alm) && check_lab_input_count(data.lab_data.lab); } else if (data.type == id_MISTRAL_FF) { - return is_alm_legal(data.lab_data.lab, data.lab_data.alm) && is_lab_ctrlset_legal(data.lab_data.lab); + return is_alm_legal(data.lab_data.lab, data.lab_data.alm) && check_lab_input_count(data.lab_data.lab) && + is_lab_ctrlset_legal(data.lab_data.lab); } return true; } +void Arch::update_bel(BelId bel) +{ + auto &data = bel_data(bel); + if (data.type == id_MISTRAL_COMB || data.type == id_MISTRAL_FF) { + update_alm_input_count(data.lab_data.lab, data.lab_data.alm); + } +} + WireId Arch::getWireByName(IdStringList name) const { // non-mistral wires |