62 for (
int i = 0; i <
GetSize(sig); i++) {
71 for (
int i = 0; i <
GetSize(sig); i++) {
90 if (wire->port_input || wire->port_output)
91 for (
int i = 0; i <
GetSize(wire); i++) {
99 for (
auto &conn : cell->connections())
100 port_add(cell, conn.first, conn.second);
173 static std::set<PortInfo> empty_result_set;
176 return empty_result_set;
213 std::vector<RTLIL::SigBit> bits =
sigmap(wire);
214 for (
auto bit : bits)
215 if (bit.wire !=
NULL)
220 std::vector<RTLIL::SigBit> bits =
sigmap(wire);
221 for (
auto bit : bits)
222 if (bit.wire !=
NULL)
229 for (
int i = 0; i < int(bits.size()); i++)
230 if (bits[i].wire !=
NULL) {
231 PortBit pbit = { cell, port, i };
262 setup(design, module, filter_ct);
279 for (
auto &it : module->
wires_)
281 for (
auto &it : module->
cells_)
282 if (filter_ct ==
NULL || filter_ct->cell_known(it.second->type))
294 result.insert(r.begin(), r.end());
306 result.insert(r.begin(), r.end());
317 result.insert(bit), found =
true;
326 result.insert(bit), found =
true;
333 inline bool get_drivers(std::set<PortBit> &result,
const T &bits)
const
339 result.insert(r.begin(), r.end());
352 result.insert(r.begin(), r.end());
359 inline bool get_inputs(std::set<RTLIL::SigBit> &result,
const T &bits)
const
364 result.insert(bit), found =
true;
369 inline bool get_outputs(std::set<RTLIL::SigBit> &result,
const T &bits)
const
374 result.insert(bit), found =
true;
382 std::vector<RTLIL::SigBit> bits =
sigmap(signal);
388 std::vector<RTLIL::SigBit> bits =
sigmap(signal);
394 std::vector<RTLIL::SigBit> bits =
sigmap(signal);
400 std::vector<RTLIL::SigBit> bits =
sigmap(signal);
408 std::set<PortBit> result;
414 std::set<PortBit> result;
420 std::set<RTLIL::SigBit> result;
426 std::set<RTLIL::SigBit> result;
433 std::set<PortBit> result;
438 std::set<PortBit> result;
443 std::set<RTLIL::SigBit> result;
448 std::set<RTLIL::SigBit> result;
std::map< RTLIL::SigBit, std::set< PortBit > > signal_consumers
std::map< RTLIL::SigBit, SigBitInfo > database
std::map< RTLIL::Cell *, std::set< RTLIL::SigBit > > cell_outputs
bool get_drivers(std::set< PortBit > &result, RTLIL::SigSpec signal) const
bool get_inputs(std::set< RTLIL::SigBit > &result, const T &bits) const
std::set< RTLIL::SigBit > signal_outputs
bool has_inputs(RTLIL::SigSpec sig) const
void add_cell_port(RTLIL::Cell *cell, RTLIL::IdString port, std::vector< RTLIL::SigBit > bits, bool is_output, bool is_input)
bool has_drivers(RTLIL::SigSpec sig) const
std::set< RTLIL::Monitor * > monitors
bool get_consumers(std::set< PortBit > &result, RTLIL::SigSpec signal) const
bool get_drivers(std::set< PortBit > &result, const T &bits) const
virtual void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, RTLIL::SigSpec &sig) YS_OVERRIDE
void setup(RTLIL::Design *design=NULL)
bool has_drivers(const T &sig) const
#define YOSYS_NAMESPACE_END
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
void port_add(RTLIL::Cell *cell, RTLIL::IdString port, const RTLIL::SigSpec &sig)
RTLIL::ObjRange< RTLIL::Wire * > wires()
bool has_consumers(RTLIL::SigSpec sig) const
bool get_inputs(std::set< RTLIL::SigBit > &result, RTLIL::SigSpec signal) const
bool has_outputs(RTLIL::SigSpec sig) const
PortInfo(RTLIL::Cell *_c, RTLIL::IdString _p, int _o)
bool has_outputs(const T &sig) const
bool get_drivers(std::set< PortBit > &result, RTLIL::SigBit bit) const
bool get_outputs(std::set< RTLIL::SigBit > &result, RTLIL::SigBit bit) const
const SigBitInfo & info(RTLIL::SigBit bit)
std::set< RTLIL::SigBit > signal_inputs
bool get_consumers(std::set< PortBit > &result, RTLIL::SigBit bit) const
bool has_inputs(const T &sig) const
void set(RTLIL::Module *module)
bool cell_known(RTLIL::IdString type)
bool get_consumers(std::set< PortBit > &result, const T &bits) const
bool operator<(const PortBit &other) const
bool cell_output(RTLIL::IdString type, RTLIL::IdString port)
bool query_is_output(RTLIL::SigBit bit)
bool query_is_input(RTLIL::SigBit bit)
int GetSize(RTLIL::Wire *wire)
#define log_assert(_assert_expr_)
std::set< PortInfo > ports
SigBitInfo * query(RTLIL::SigBit bit)
bool get_outputs(std::set< RTLIL::SigBit > &result, RTLIL::SigSpec signal) const
std::map< RTLIL::Cell *, std::set< RTLIL::SigBit > > cell_inputs
ModIndex(RTLIL::Module *_m)
bool has_consumers(const T &sig) const
void add_wire(RTLIL::Wire *wire)
virtual void notify_connect(RTLIL::Module *mod, const RTLIL::SigSig &)
bool operator<(const PortInfo &other) const
virtual void notify_connect(RTLIL::Module *mod, const std::vector< RTLIL::SigSig > &)
RTLIL::ObjRange< RTLIL::Cell * > cells()
void setup(RTLIL::Design *design, RTLIL::Module *module, CellTypes *filter_ct=NULL)
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
#define YOSYS_NAMESPACE_BEGIN
bool get_outputs(std::set< RTLIL::SigBit > &result, const T &bits) const
void port_del(RTLIL::Cell *cell, RTLIL::IdString port, const RTLIL::SigSpec &sig)
bool cell_input(RTLIL::IdString type, RTLIL::IdString port)
std::map< RTLIL::SigBit, std::set< PortBit > > signal_drivers
virtual void notify_blackout(RTLIL::Module *mod)
std::pair< SigSpec, SigSpec > SigSig
const std::map< RTLIL::IdString, RTLIL::SigSpec > & connections() const
void add_cell(RTLIL::Cell *cell)
bool get_inputs(std::set< RTLIL::SigBit > &result, RTLIL::SigBit bit) const
std::set< PortInfo > & query_ports(RTLIL::SigBit bit)
ModWalker(RTLIL::Design *design, RTLIL::Module *module, CellTypes *filter_ct=NULL)