Merge branch 'combine-dff' into extend-placement
This commit is contained in:
commit
d6fdd6c7ce
@ -804,6 +804,27 @@ Arch::Arch(ArchArgs args) : args(args)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Permissible combinations of modes in a single slice
|
||||||
|
dff_comp_mode[id_DFF] = id_DFF;
|
||||||
|
dff_comp_mode[id_DFFE] = id_DFFE;
|
||||||
|
dff_comp_mode[id_DFFS] = id_DFFR;
|
||||||
|
dff_comp_mode[id_DFFR] = id_DFFS;
|
||||||
|
dff_comp_mode[id_DFFSE] = id_DFFRE;
|
||||||
|
dff_comp_mode[id_DFFRE] = id_DFFSE;
|
||||||
|
dff_comp_mode[id_DFFP] = id_DFFC;
|
||||||
|
dff_comp_mode[id_DFFC] = id_DFFP;
|
||||||
|
dff_comp_mode[id_DFFPE] = id_DFFCE;
|
||||||
|
dff_comp_mode[id_DFFCE] = id_DFFPE;
|
||||||
|
dff_comp_mode[id_DFFNS] = id_DFFNR;
|
||||||
|
dff_comp_mode[id_DFFNR] = id_DFFNS;
|
||||||
|
dff_comp_mode[id_DFFNSE] = id_DFFNRE;
|
||||||
|
dff_comp_mode[id_DFFNRE] = id_DFFNSE;
|
||||||
|
dff_comp_mode[id_DFFNP] = id_DFFNC;
|
||||||
|
dff_comp_mode[id_DFFNC] = id_DFFNP;
|
||||||
|
dff_comp_mode[id_DFFNPE] = id_DFFNCE;
|
||||||
|
dff_comp_mode[id_DFFNCE] = id_DFFNPE;
|
||||||
|
|
||||||
BaseArch::init_cell_types();
|
BaseArch::init_cell_types();
|
||||||
BaseArch::init_bel_buckets();
|
BaseArch::init_bel_buckets();
|
||||||
}
|
}
|
||||||
@ -1251,8 +1272,11 @@ bool Arch::cellsCompatible(const CellInfo **cells, int count) const
|
|||||||
return false;
|
return false;
|
||||||
if (mode[cls] == IdString())
|
if (mode[cls] == IdString())
|
||||||
mode[cls] = ci->ff_type;
|
mode[cls] = ci->ff_type;
|
||||||
else if (mode[cls] != ci->ff_type)
|
else if (mode[cls] != ci->ff_type) {
|
||||||
return false;
|
auto res = dff_comp_mode.find(mode[cls]);
|
||||||
|
if (res == dff_comp_mode.end() || res->second != ci->ff_type)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user