diff --git a/nexus/archdefs.h b/nexus/archdefs.h index 4d09110594..f70b1c3199 100644 --- a/nexus/archdefs.h +++ b/nexus/archdefs.h @@ -111,7 +111,7 @@ struct GroupId 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); } + bool operator!=(const GroupId &other) const { return (type != other.type) || (x != other.x) || (y != other.y); } unsigned int hash() const { return mkhash(mkhash(x, y), int(type)); } }; diff --git a/nexus/pack.cc b/nexus/pack.cc index b02d25c6eb..b4971d240a 100644 --- a/nexus/pack.cc +++ b/nexus/pack.cc @@ -1235,7 +1235,10 @@ struct NexusPacker base_iodelay_rules[id_DELAYB].param_xform[id_DEL_VALUE] = ctx->id("DELAY.DEL_VALUE"); base_iodelay_rules[id_DELAYB].param_xform[id_COARSE_DELAY] = ctx->id("DELAY.COARSE_DELAY"); - base_iodelay_rules[id_DELAYA] = base_iodelay_rules[id_DELAYB]; + { + XFormRule delayb_copy = base_iodelay_rules.at(id_DELAYB); + base_iodelay_rules[id_DELAYA] = std::move(delayb_copy); + } base_iodelay_rules[id_DELAYA].param_xform[id_COARSE_DELAY_MODE] = ctx->id("DELAY.COARSE_DELAY_MODE"); base_iodelay_rules[id_DELAYA].param_xform[id_EDGE_MONITOR] = ctx->id("DELAY.EDGE_MONITOR");