mirror of https://github.com/YosysHQ/yosys.git
Added additional functionality and cleanups in sigtools.h and celltypes.h
This commit is contained in:
parent
3377a04bf2
commit
89f009d171
|
@ -29,6 +29,15 @@ struct CellTypes
|
|||
std::set<std::string> cell_types;
|
||||
std::vector<const RTLIL::Design*> designs;
|
||||
|
||||
CellTypes()
|
||||
{
|
||||
}
|
||||
|
||||
CellTypes(const RTLIL::Design *design)
|
||||
{
|
||||
setup(design);
|
||||
}
|
||||
|
||||
void setup(const RTLIL::Design *design = NULL)
|
||||
{
|
||||
if (design)
|
||||
|
|
|
@ -164,6 +164,18 @@ struct SigSet
|
|||
}
|
||||
}
|
||||
|
||||
void insert(RTLIL::SigSpec sig, const std::set<T> &data)
|
||||
{
|
||||
sig.expand();
|
||||
for (auto &c : sig.chunks) {
|
||||
if (c.wire == NULL)
|
||||
continue;
|
||||
assert(c.width == 1);
|
||||
bitDef_t bit(c.wire, c.offset);
|
||||
bits[bit].insert(data.begin(), data.end());
|
||||
}
|
||||
}
|
||||
|
||||
void erase(RTLIL::SigSpec sig)
|
||||
{
|
||||
sig.expand();
|
||||
|
@ -188,6 +200,18 @@ struct SigSet
|
|||
}
|
||||
}
|
||||
|
||||
void erase(RTLIL::SigSpec sig, const std::set<T> &data)
|
||||
{
|
||||
sig.expand();
|
||||
for (auto &c : sig.chunks) {
|
||||
if (c.wire == NULL)
|
||||
continue;
|
||||
assert(c.width == 1);
|
||||
bitDef_t bit(c.wire, c.offset);
|
||||
bits[bit].erase(data.begin(), data.end());
|
||||
}
|
||||
}
|
||||
|
||||
void find(RTLIL::SigSpec sig, std::set<T> &result)
|
||||
{
|
||||
sig.expand();
|
||||
|
|
Loading…
Reference in New Issue