29 struct bitDef_t :
public std::pair<RTLIL::Wire*, int> {
50 for (
auto &bit : other.
bits)
63 for (
auto &bit : other.
bits)
70 for (
int i = 0; i <
GetSize(from); i++) {
71 bitDef_t bit_from(from[i]), bit_to(to[i]);
72 if (bit_from.first !=
NULL && bit_to.first !=
NULL &&
bits.count(bit_from) > 0)
81 if (bit.wire !=
NULL &&
bits.count(bit))
90 if (bit.wire !=
NULL &&
bits.count(bit) == 0)
102 for (
auto &bit : sig)
103 if (bit.wire !=
NULL &&
bits.count(bit))
110 for (
auto &bit : sig)
111 if (bit.wire !=
NULL &&
bits.count(bit) == 0)
118 for (
auto &bit :
bits)
125 std::set<RTLIL::SigBit> sig;
126 for (
auto &bit :
bits)
137 template <
typename T,
class Compare = std::less<T>>
140 struct bitDef_t :
public std::pair<RTLIL::Wire*, int> {
145 std::map<bitDef_t, std::set<T, Compare>>
bits;
154 for (
auto &bit : sig)
155 if (bit.wire !=
NULL)
156 bits[bit].insert(data);
161 for (
auto &bit : sig)
162 if (bit.wire !=
NULL)
163 bits[bit].insert(data.begin(), data.end());
168 for (
auto &bit : sig)
169 if (bit.wire !=
NULL)
175 for (
auto &bit : sig)
176 if (bit.wire !=
NULL)
177 bits[bit].erase(data);
182 for (
auto &bit : sig)
183 if (bit.wire !=
NULL)
184 bits[bit].erase(data.begin(), data.end());
189 for (
auto &bit : sig)
190 if (bit.wire !=
NULL) {
191 auto &data =
bits[bit];
192 result.insert(data.begin(), data.end());
205 for (
auto &bit : sig)
206 if (bit.wire !=
NULL &&
bits.count(bit))
214 struct bitDef_t :
public std::pair<RTLIL::Wire*, int> {
224 std::map<bitDef_t, shared_bit_data_t*>
bits;
246 for (
auto &bit : other.
bits) {
248 bits[bit.first]->map_to = bit.second->map_to;
249 bits[bit.first]->bits = bit.second->bits;
265 std::set<shared_bit_data_t*> all_bd_ptr;
266 for (
auto &it :
bits)
267 all_bd_ptr.insert(it.second);
268 for (
auto bd_ptr : all_bd_ptr)
277 add(it.first, it.second);
283 if (bit.
wire &&
bits.count(bit) == 0) {
286 bd->
bits.insert(bit);
294 if (bit.
wire &&
bits.count(bit) > 0) {
297 if (bd->
bits.size() == 0)
315 if (bd1->
bits.size() < bd2->
bits.size())
317 for (
auto &bit : bd1->
bits)
325 for (
auto &bit : bd2->
bits)
337 bits[bit1]->map_to = bit2;
343 if (bit.
wire &&
bits.count(bit) > 0)
344 bit =
bits.at(bit)->map_to;
351 for (
int i = 0; i <
GetSize(from); i++)
371 for (
auto &bit : sig) {
379 for (
auto &bit : sig)
390 for (
auto &bit : sig)
void insert(RTLIL::SigSpec sig, const std::set< T > &data)
RTLIL::SigSpec extract(RTLIL::SigSpec sig)
bitDef_t(const RTLIL::SigBit &bit)
bitDef_t(const RTLIL::SigBit &bit)
std::map< bitDef_t, shared_bit_data_t * > bits
SigMap(RTLIL::Module *module=NULL)
bool has(RTLIL::SigSpec sig)
void expand(RTLIL::SigSpec from, RTLIL::SigSpec to)
RTLIL::SigSpec export_one()
void add(const SigPool &other)
void del(RTLIL::SigSpec sig)
void merge_bit(const RTLIL::SigBit &bit1, const RTLIL::SigBit &bit2)
void map_bit(RTLIL::SigBit &bit) const
const std::vector< RTLIL::SigSig > & connections() const
#define YOSYS_NAMESPACE_END
void erase(RTLIL::SigSpec sig)
SigMap(const SigMap &other)
void add(RTLIL::SigSpec sig)
bitDef_t(const RTLIL::SigBit &bit)
void erase(RTLIL::SigSpec sig, T data)
void apply(RTLIL::SigBit &bit) const
void set(RTLIL::Module *module)
bool check_any(RTLIL::SigSpec sig)
void append_bit(const RTLIL::SigBit &bit)
int GetSize(RTLIL::Wire *wire)
void unregister_bit(const RTLIL::SigBit &bit)
#define log_assert(_assert_expr_)
RTLIL::SigSpec export_all()
std::set< bitDef_t > bits
bool check_all(RTLIL::SigSpec sig)
void copy(const SigMap &other)
void set_bit(const RTLIL::SigBit &bit1, const RTLIL::SigBit &bit2)
void del(const SigPool &other)
void add(RTLIL::SigSpec sig)
bool check(RTLIL::SigBit bit)
void erase(RTLIL::SigSpec sig, const std::set< T > &data)
std::set< T > find(RTLIL::SigSpec sig)
RTLIL::SigBit operator()(RTLIL::SigBit bit) const
#define YOSYS_NAMESPACE_BEGIN
void apply(RTLIL::SigSpec &sig) const
std::set< bitDef_t > bits
void append(const RTLIL::SigSpec &signal)
void register_bit(const RTLIL::SigBit &bit)
void add(RTLIL::SigSpec from, RTLIL::SigSpec to)
std::map< bitDef_t, std::set< T, Compare > > bits
RTLIL::SigSpec operator()(RTLIL::SigSpec sig) const
void del(RTLIL::SigSpec sig)
RTLIL::SigSpec operator()(RTLIL::Wire *wire) const
void find(RTLIL::SigSpec sig, std::set< T > &result)
void insert(RTLIL::SigSpec sig, T data)
const SigMap & operator=(const SigMap &other)