yosys-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
RTLIL::Module Struct Reference

#include <rtlil.h>

+ Inheritance diagram for RTLIL::Module:
+ Collaboration diagram for RTLIL::Module:

Public Member Functions

RTLIL_ATTRIBUTE_MEMBERS Module ()
 
virtual ~Module ()
 
virtual RTLIL::IdString derive (RTLIL::Design *design, std::map< RTLIL::IdString, RTLIL::Const > parameters)
 
virtual size_t count_id (RTLIL::IdString id)
 
virtual void check ()
 
virtual void optimize ()
 
void connect (const RTLIL::SigSig &conn)
 
void connect (const RTLIL::SigSpec &lhs, const RTLIL::SigSpec &rhs)
 
void new_connections (const std::vector< RTLIL::SigSig > &new_conn)
 
const std::vector
< RTLIL::SigSig > & 
connections () const
 
void fixup_ports ()
 
template<typename T >
void rewrite_sigspecs (T functor)
 
void cloneInto (RTLIL::Module *new_mod) const
 
virtual RTLIL::Moduleclone () const
 
bool has_memories () const
 
bool has_processes () const
 
bool has_memories_warn () const
 
bool has_processes_warn () const
 
std::vector< RTLIL::Wire * > selected_wires () const
 
std::vector< RTLIL::Cell * > selected_cells () const
 
template<typename T >
bool selected (T *member) const
 
RTLIL::Wirewire (RTLIL::IdString id)
 
RTLIL::Cellcell (RTLIL::IdString id)
 
RTLIL::ObjRange< RTLIL::Wire * > wires ()
 
RTLIL::ObjRange< RTLIL::Cell * > cells ()
 
void remove (const std::set< RTLIL::Wire * > &wires)
 
void remove (RTLIL::Cell *cell)
 
void rename (RTLIL::Wire *wire, RTLIL::IdString new_name)
 
void rename (RTLIL::Cell *cell, RTLIL::IdString new_name)
 
void rename (RTLIL::IdString old_name, RTLIL::IdString new_name)
 
void swap_names (RTLIL::Wire *w1, RTLIL::Wire *w2)
 
void swap_names (RTLIL::Cell *c1, RTLIL::Cell *c2)
 
RTLIL::IdString uniquify (RTLIL::IdString name)
 
RTLIL::IdString uniquify (RTLIL::IdString name, int &index)
 
RTLIL::WireaddWire (RTLIL::IdString name, int width=1)
 
RTLIL::WireaddWire (RTLIL::IdString name, const RTLIL::Wire *other)
 
RTLIL::CelladdCell (RTLIL::IdString name, RTLIL::IdString type)
 
RTLIL::CelladdCell (RTLIL::IdString name, const RTLIL::Cell *other)
 
RTLIL::CelladdNot (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdPos (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdNeg (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdAnd (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdOr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdXor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdXnor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdReduceAnd (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdReduceOr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdReduceXor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdReduceXnor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdReduceBool (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdShl (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdShr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdSshl (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdSshr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdShift (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdShiftx (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdLt (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdLe (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdEq (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdNe (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdEqx (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdNex (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdGe (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdGt (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdAdd (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdSub (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdMul (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdDiv (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdMod (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdPow (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool a_signed=false, bool b_signed=false)
 
RTLIL::CelladdLogicNot (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdLogicAnd (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdLogicOr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y, bool is_signed=false)
 
RTLIL::CelladdMux (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_s, RTLIL::SigSpec sig_y)
 
RTLIL::CelladdPmux (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_s, RTLIL::SigSpec sig_y)
 
RTLIL::CelladdSlice (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_y, RTLIL::Const offset)
 
RTLIL::CelladdConcat (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_y)
 
RTLIL::CelladdLut (RTLIL::IdString name, RTLIL::SigSpec sig_i, RTLIL::SigSpec sig_o, RTLIL::Const lut)
 
RTLIL::CelladdAssert (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_en)
 
RTLIL::CelladdSr (RTLIL::IdString name, RTLIL::SigSpec sig_set, RTLIL::SigSpec sig_clr, RTLIL::SigSpec sig_q, bool set_polarity=true, bool clr_polarity=true)
 
RTLIL::CelladdDff (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true)
 
RTLIL::CelladdDffe (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true, bool en_polarity=true)
 
RTLIL::CelladdDffsr (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_set, RTLIL::SigSpec sig_clr, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true, bool set_polarity=true, bool clr_polarity=true)
 
RTLIL::CelladdAdff (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_arst, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, RTLIL::Const arst_value, bool clk_polarity=true, bool arst_polarity=true)
 
RTLIL::CelladdDlatch (RTLIL::IdString name, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool en_polarity=true)
 
RTLIL::CelladdDlatchsr (RTLIL::IdString name, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_set, RTLIL::SigSpec sig_clr, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool en_polarity=true, bool set_polarity=true, bool clr_polarity=true)
 
RTLIL::CelladdNotGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_y)
 
RTLIL::CelladdAndGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdNandGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdOrGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdNorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdXorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdXnorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_y)
 
RTLIL::CelladdMuxGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_s, RTLIL::SigBit sig_y)
 
RTLIL::CelladdAoi3Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_y)
 
RTLIL::CelladdOai3Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_y)
 
RTLIL::CelladdAoi4Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_d, RTLIL::SigBit sig_y)
 
RTLIL::CelladdOai4Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_d, RTLIL::SigBit sig_y)
 
RTLIL::CelladdDffGate (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true)
 
RTLIL::CelladdDffeGate (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true, bool en_polarity=true)
 
RTLIL::CelladdDffsrGate (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_set, RTLIL::SigSpec sig_clr, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool clk_polarity=true, bool set_polarity=true, bool clr_polarity=true)
 
RTLIL::CelladdAdffGate (RTLIL::IdString name, RTLIL::SigSpec sig_clk, RTLIL::SigSpec sig_arst, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool arst_value=false, bool clk_polarity=true, bool arst_polarity=true)
 
RTLIL::CelladdDlatchGate (RTLIL::IdString name, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool en_polarity=true)
 
RTLIL::CelladdDlatchsrGate (RTLIL::IdString name, RTLIL::SigSpec sig_en, RTLIL::SigSpec sig_set, RTLIL::SigSpec sig_clr, RTLIL::SigSpec sig_d, RTLIL::SigSpec sig_q, bool en_polarity=true, bool set_polarity=true, bool clr_polarity=true)
 
RTLIL::SigSpec Not (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec Pos (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec Bu0 (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec Neg (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec And (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Or (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Xor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Xnor (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec ReduceAnd (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec ReduceOr (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec ReduceXor (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec ReduceXnor (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec ReduceBool (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec Shl (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Shr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Sshl (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Sshr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Shift (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Shiftx (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Lt (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Le (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Eq (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Ne (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Eqx (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Nex (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Ge (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Gt (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Add (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Sub (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Mul (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Div (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Mod (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Pow (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool a_signed=false, bool b_signed=false)
 
RTLIL::SigSpec LogicNot (RTLIL::IdString name, RTLIL::SigSpec sig_a, bool is_signed=false)
 
RTLIL::SigSpec LogicAnd (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec LogicOr (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, bool is_signed=false)
 
RTLIL::SigSpec Mux (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_s)
 
RTLIL::SigSpec Pmux (RTLIL::IdString name, RTLIL::SigSpec sig_a, RTLIL::SigSpec sig_b, RTLIL::SigSpec sig_s)
 
RTLIL::SigBit NotGate (RTLIL::IdString name, RTLIL::SigBit sig_a)
 
RTLIL::SigBit AndGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit NandGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit OrGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit NorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit XorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit XnorGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b)
 
RTLIL::SigBit MuxGate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_s)
 
RTLIL::SigBit Aoi3Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c)
 
RTLIL::SigBit Oai3Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c)
 
RTLIL::SigBit Aoi4Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_d)
 
RTLIL::SigBit Oai4Gate (RTLIL::IdString name, RTLIL::SigBit sig_a, RTLIL::SigBit sig_b, RTLIL::SigBit sig_c, RTLIL::SigBit sig_d)
 

Data Fields

RTLIL::Designdesign
 
std::set< RTLIL::Monitor * > monitors
 
int refcount_wires_
 
int refcount_cells_
 
std::map< RTLIL::IdString,
RTLIL::Wire * > 
wires_
 
std::map< RTLIL::IdString,
RTLIL::Cell * > 
cells_
 
std::vector< RTLIL::SigSigconnections_
 
RTLIL::IdString name
 
std::set< RTLIL::IdStringavail_parameters
 
std::map< RTLIL::IdString,
RTLIL::Memory * > 
memories
 
std::map< RTLIL::IdString,
RTLIL::Process * > 
processes
 
std::vector< RTLIL::IdStringports
 

Protected Member Functions

void add (RTLIL::Wire *wire)
 
void add (RTLIL::Cell *cell)
 

Detailed Description

Definition at line 582 of file rtlil.h.

Constructor & Destructor Documentation

RTLIL::Module::Module ( )

Definition at line 448 of file rtlil.cc.

449 {
450  design = nullptr;
451  refcount_wires_ = 0;
452  refcount_cells_ = 0;
453 }
int refcount_wires_
Definition: rtlil.h:592
RTLIL::Design * design
Definition: rtlil.h:589
int refcount_cells_
Definition: rtlil.h:593
RTLIL::Module::~Module ( )
virtual

Definition at line 455 of file rtlil.cc.

456 {
457  for (auto it = wires_.begin(); it != wires_.end(); it++)
458  delete it->second;
459  for (auto it = memories.begin(); it != memories.end(); it++)
460  delete it->second;
461  for (auto it = cells_.begin(); it != cells_.end(); it++)
462  delete it->second;
463  for (auto it = processes.begin(); it != processes.end(); it++)
464  delete it->second;
465 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596

Member Function Documentation

void RTLIL::Module::add ( RTLIL::Wire wire)
protected

Definition at line 1113 of file rtlil.cc.

1114 {
1115  log_assert(!wire->name.empty());
1116  log_assert(count_id(wire->name) == 0);
1118  wires_[wire->name] = wire;
1119  wire->module = this;
1120 }
RTLIL::Wire * wire(RTLIL::IdString id)
Definition: rtlil.h:637
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
bool empty() const
Definition: rtlil.h:219
#define log_assert(_assert_expr_)
Definition: log.h:85
int refcount_wires_
Definition: rtlil.h:592
RTLIL::IdString name
Definition: rtlil.h:825
virtual size_t count_id(RTLIL::IdString id)
Definition: rtlil.cc:472
RTLIL::Module * module
Definition: rtlil.h:824

+ Here is the call graph for this function:

void RTLIL::Module::add ( RTLIL::Cell cell)
protected

Definition at line 1122 of file rtlil.cc.

1123 {
1124  log_assert(!cell->name.empty());
1125  log_assert(count_id(cell->name) == 0);
1127  cells_[cell->name] = cell;
1128  cell->module = this;
1129 }
RTLIL::IdString name
Definition: rtlil.h:853
bool empty() const
Definition: rtlil.h:219
#define log_assert(_assert_expr_)
Definition: log.h:85
virtual size_t count_id(RTLIL::IdString id)
Definition: rtlil.cc:472
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
RTLIL::Module * module
Definition: rtlil.h:852
int refcount_cells_
Definition: rtlil.h:593

+ Here is the call graph for this function:

RTLIL::SigSpec RTLIL::Module::Add ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addAdd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell * RTLIL::Module::addAdff ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_arst,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
RTLIL::Const  arst_value,
bool  clk_polarity = true,
bool  arst_polarity = true 
)

Definition at line 1639 of file rtlil.cc.

1641 {
1642  RTLIL::Cell *cell = addCell(name, "$adff");
1643  cell->parameters["\\CLK_POLARITY"] = clk_polarity;
1644  cell->parameters["\\ARST_POLARITY"] = arst_polarity;
1645  cell->parameters["\\ARST_VALUE"] = arst_value;
1646  cell->parameters["\\WIDTH"] = sig_q.size();
1647  cell->setPort("\\CLK", sig_clk);
1648  cell->setPort("\\ARST", sig_arst);
1649  cell->setPort("\\D", sig_d);
1650  cell->setPort("\\Q", sig_q);
1651  return cell;
1652 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addAdffGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_arst,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  arst_value = false,
bool  clk_polarity = true,
bool  arst_polarity = true 
)

Definition at line 1712 of file rtlil.cc.

1714 {
1715  RTLIL::Cell *cell = addCell(name, stringf("$_DFF_%c%c%c_", clk_polarity ? 'P' : 'N', arst_polarity ? 'P' : 'N', arst_value ? '1' : '0'));
1716  cell->setPort("\\C", sig_clk);
1717  cell->setPort("\\R", sig_arst);
1718  cell->setPort("\\D", sig_d);
1719  cell->setPort("\\Q", sig_q);
1720  return cell;
1721 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell* RTLIL::Module::addAnd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addAndGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addAoi3Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addAoi4Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_d,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell * RTLIL::Module::addAssert ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_en 
)

Definition at line 1579 of file rtlil.cc.

1580 {
1581  RTLIL::Cell *cell = addCell(name, "$assert");
1582  cell->setPort("\\A", sig_a);
1583  cell->setPort("\\EN", sig_en);
1584  return cell;
1585 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addCell ( RTLIL::IdString  name,
RTLIL::IdString  type 
)

Definition at line 1353 of file rtlil.cc.

1354 {
1355  RTLIL::Cell *cell = new RTLIL::Cell;
1356  cell->name = name;
1357  cell->type = type;
1358  add(cell);
1359  return cell;
1360 }
RTLIL::IdString name
Definition: rtlil.h:853
RTLIL::IdString type
Definition: rtlil.h:854
void add(RTLIL::Wire *wire)
Definition: rtlil.cc:1113
RTLIL::IdString name
Definition: rtlil.h:599
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638
RTLIL::Cell * RTLIL::Module::addCell ( RTLIL::IdString  name,
const RTLIL::Cell other 
)

Definition at line 1362 of file rtlil.cc.

1363 {
1364  RTLIL::Cell *cell = addCell(name, other->type);
1365  cell->connections_ = other->connections_;
1366  cell->parameters = other->parameters;
1367  cell->attributes = other->attributes;
1368  return cell;
1369 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
RTLIL::IdString type
Definition: rtlil.h:854
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638
std::map< RTLIL::IdString, RTLIL::SigSpec > connections_
Definition: rtlil.h:855
RTLIL::Cell * RTLIL::Module::addConcat ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y 
)

Definition at line 1558 of file rtlil.cc.

1559 {
1560  RTLIL::Cell *cell = addCell(name, "$concat");
1561  cell->parameters["\\A_WIDTH"] = sig_a.size();
1562  cell->parameters["\\B_WIDTH"] = sig_b.size();
1563  cell->setPort("\\A", sig_a);
1564  cell->setPort("\\B", sig_b);
1565  cell->setPort("\\Y", sig_y);
1566  return cell;
1567 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDff ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true 
)

Definition at line 1599 of file rtlil.cc.

1600 {
1601  RTLIL::Cell *cell = addCell(name, "$dff");
1602  cell->parameters["\\CLK_POLARITY"] = clk_polarity;
1603  cell->parameters["\\WIDTH"] = sig_q.size();
1604  cell->setPort("\\CLK", sig_clk);
1605  cell->setPort("\\D", sig_d);
1606  cell->setPort("\\Q", sig_q);
1607  return cell;
1608 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDffe ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true,
bool  en_polarity = true 
)

Definition at line 1610 of file rtlil.cc.

1611 {
1612  RTLIL::Cell *cell = addCell(name, "$dffe");
1613  cell->parameters["\\CLK_POLARITY"] = clk_polarity;
1614  cell->parameters["\\EN_POLARITY"] = en_polarity;
1615  cell->parameters["\\WIDTH"] = sig_q.size();
1616  cell->setPort("\\CLK", sig_clk);
1617  cell->setPort("\\EN", sig_en);
1618  cell->setPort("\\D", sig_d);
1619  cell->setPort("\\Q", sig_q);
1620  return cell;
1621 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

RTLIL::Cell * RTLIL::Module::addDffeGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true,
bool  en_polarity = true 
)

Definition at line 1690 of file rtlil.cc.

1691 {
1692  RTLIL::Cell *cell = addCell(name, stringf("$_DFFE_%c%c_", clk_polarity ? 'P' : 'N', en_polarity ? 'P' : 'N'));
1693  cell->setPort("\\C", sig_clk);
1694  cell->setPort("\\E", sig_en);
1695  cell->setPort("\\D", sig_d);
1696  cell->setPort("\\Q", sig_q);
1697  return cell;
1698 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDffGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true 
)

Definition at line 1681 of file rtlil.cc.

1682 {
1683  RTLIL::Cell *cell = addCell(name, stringf("$_DFF_%c_", clk_polarity ? 'P' : 'N'));
1684  cell->setPort("\\C", sig_clk);
1685  cell->setPort("\\D", sig_d);
1686  cell->setPort("\\Q", sig_q);
1687  return cell;
1688 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDffsr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_set,
RTLIL::SigSpec  sig_clr,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true,
bool  set_polarity = true,
bool  clr_polarity = true 
)

Definition at line 1623 of file rtlil.cc.

1625 {
1626  RTLIL::Cell *cell = addCell(name, "$dffsr");
1627  cell->parameters["\\CLK_POLARITY"] = clk_polarity;
1628  cell->parameters["\\SET_POLARITY"] = set_polarity;
1629  cell->parameters["\\CLR_POLARITY"] = clr_polarity;
1630  cell->parameters["\\WIDTH"] = sig_q.size();
1631  cell->setPort("\\CLK", sig_clk);
1632  cell->setPort("\\SET", sig_set);
1633  cell->setPort("\\CLR", sig_clr);
1634  cell->setPort("\\D", sig_d);
1635  cell->setPort("\\Q", sig_q);
1636  return cell;
1637 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDffsrGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_clk,
RTLIL::SigSpec  sig_set,
RTLIL::SigSpec  sig_clr,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  clk_polarity = true,
bool  set_polarity = true,
bool  clr_polarity = true 
)

Definition at line 1700 of file rtlil.cc.

1702 {
1703  RTLIL::Cell *cell = addCell(name, stringf("$_DFFSR_%c%c%c_", clk_polarity ? 'P' : 'N', set_polarity ? 'P' : 'N', clr_polarity ? 'P' : 'N'));
1704  cell->setPort("\\C", sig_clk);
1705  cell->setPort("\\S", sig_set);
1706  cell->setPort("\\R", sig_clr);
1707  cell->setPort("\\D", sig_d);
1708  cell->setPort("\\Q", sig_q);
1709  return cell;
1710 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
bool clk_polarity
Definition: abc.cc:98
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell* RTLIL::Module::addDiv ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell * RTLIL::Module::addDlatch ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  en_polarity = true 
)

Definition at line 1654 of file rtlil.cc.

1655 {
1656  RTLIL::Cell *cell = addCell(name, "$dlatch");
1657  cell->parameters["\\EN_POLARITY"] = en_polarity;
1658  cell->parameters["\\WIDTH"] = sig_q.size();
1659  cell->setPort("\\EN", sig_en);
1660  cell->setPort("\\D", sig_d);
1661  cell->setPort("\\Q", sig_q);
1662  return cell;
1663 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDlatchGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  en_polarity = true 
)

Definition at line 1723 of file rtlil.cc.

1724 {
1725  RTLIL::Cell *cell = addCell(name, stringf("$_DLATCH_%c_", en_polarity ? 'P' : 'N'));
1726  cell->setPort("\\E", sig_en);
1727  cell->setPort("\\D", sig_d);
1728  cell->setPort("\\Q", sig_q);
1729  return cell;
1730 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDlatchsr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_set,
RTLIL::SigSpec  sig_clr,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  en_polarity = true,
bool  set_polarity = true,
bool  clr_polarity = true 
)

Definition at line 1665 of file rtlil.cc.

1667 {
1668  RTLIL::Cell *cell = addCell(name, "$dlatchsr");
1669  cell->parameters["\\EN_POLARITY"] = en_polarity;
1670  cell->parameters["\\SET_POLARITY"] = set_polarity;
1671  cell->parameters["\\CLR_POLARITY"] = clr_polarity;
1672  cell->parameters["\\WIDTH"] = sig_q.size();
1673  cell->setPort("\\EN", sig_en);
1674  cell->setPort("\\SET", sig_set);
1675  cell->setPort("\\CLR", sig_clr);
1676  cell->setPort("\\D", sig_d);
1677  cell->setPort("\\Q", sig_q);
1678  return cell;
1679 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addDlatchsrGate ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_en,
RTLIL::SigSpec  sig_set,
RTLIL::SigSpec  sig_clr,
RTLIL::SigSpec  sig_d,
RTLIL::SigSpec  sig_q,
bool  en_polarity = true,
bool  set_polarity = true,
bool  clr_polarity = true 
)

Definition at line 1732 of file rtlil.cc.

1734 {
1735  RTLIL::Cell *cell = addCell(name, stringf("$_DLATCHSR_%c%c%c_", en_polarity ? 'P' : 'N', set_polarity ? 'P' : 'N', clr_polarity ? 'P' : 'N'));
1736  cell->setPort("\\E", sig_en);
1737  cell->setPort("\\S", sig_set);
1738  cell->setPort("\\R", sig_clr);
1739  cell->setPort("\\D", sig_d);
1740  cell->setPort("\\Q", sig_q);
1741  return cell;
1742 }
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell* RTLIL::Module::addEq ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addEqx ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addGe ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addGt ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addLe ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addLogicAnd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addLogicNot ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addLogicOr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addLt ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell * RTLIL::Module::addLut ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_i,
RTLIL::SigSpec  sig_o,
RTLIL::Const  lut 
)

Definition at line 1569 of file rtlil.cc.

1570 {
1571  RTLIL::Cell *cell = addCell(name, "$lut");
1572  cell->parameters["\\LUT"] = lut;
1573  cell->parameters["\\WIDTH"] = sig_i.size();
1574  cell->setPort("\\A", sig_i);
1575  cell->setPort("\\Y", sig_o);
1576  return cell;
1577 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell* RTLIL::Module::addMod ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addMul ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addMux ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_s,
RTLIL::SigSpec  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addMuxGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_s,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addNandGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addNe ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addNeg ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addNex ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addNorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addNot ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addNotGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addOai3Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addOai4Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_d,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addOr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addOrGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addPmux ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_s,
RTLIL::SigSpec  sig_y 
)
RTLIL::Cell* RTLIL::Module::addPos ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addPow ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  a_signed = false,
bool  b_signed = false 
)
RTLIL::Cell* RTLIL::Module::addReduceAnd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addReduceBool ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addReduceOr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addReduceXnor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addReduceXor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addShift ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addShiftx ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addShl ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addShr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell * RTLIL::Module::addSlice ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_y,
RTLIL::Const  offset 
)

Definition at line 1547 of file rtlil.cc.

1548 {
1549  RTLIL::Cell *cell = addCell(name, "$slice");
1550  cell->parameters["\\A_WIDTH"] = sig_a.size();
1551  cell->parameters["\\Y_WIDTH"] = sig_y.size();
1552  cell->parameters["\\OFFSET"] = offset;
1553  cell->setPort("\\A", sig_a);
1554  cell->setPort("\\Y", sig_y);
1555  return cell;
1556 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell * RTLIL::Module::addSr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_set,
RTLIL::SigSpec  sig_clr,
RTLIL::SigSpec  sig_q,
bool  set_polarity = true,
bool  clr_polarity = true 
)

Definition at line 1587 of file rtlil.cc.

1588 {
1589  RTLIL::Cell *cell = addCell(name, "$sr");
1590  cell->parameters["\\SET_POLARITY"] = set_polarity;
1591  cell->parameters["\\CLR_POLARITY"] = clr_polarity;
1592  cell->parameters["\\WIDTH"] = sig_q.size();
1593  cell->setPort("\\SET", sig_set);
1594  cell->setPort("\\CLR", sig_clr);
1595  cell->setPort("\\Q", sig_q);
1596  return cell;
1597 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
void setPort(RTLIL::IdString portname, RTLIL::SigSpec signal)
Definition: rtlil.cc:1789
std::map< RTLIL::IdString, RTLIL::Const > parameters
Definition: rtlil.h:856
int size() const
Definition: rtlil.h:1019
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638

+ Here is the call graph for this function:

RTLIL::Cell* RTLIL::Module::addSshl ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addSshr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addSub ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::Wire * RTLIL::Module::addWire ( RTLIL::IdString  name,
int  width = 1 
)

Definition at line 1331 of file rtlil.cc.

1332 {
1333  RTLIL::Wire *wire = new RTLIL::Wire;
1334  wire->name = name;
1335  wire->width = width;
1336  add(wire);
1337  return wire;
1338 }
RTLIL::Wire * wire(RTLIL::IdString id)
Definition: rtlil.h:637
int width
Definition: rtlil.h:826
void add(RTLIL::Wire *wire)
Definition: rtlil.cc:1113
RTLIL::IdString name
Definition: rtlil.h:599
RTLIL::IdString name
Definition: rtlil.h:825
RTLIL::Wire * RTLIL::Module::addWire ( RTLIL::IdString  name,
const RTLIL::Wire other 
)

Definition at line 1340 of file rtlil.cc.

1341 {
1342  RTLIL::Wire *wire = addWire(name);
1343  wire->width = other->width;
1344  wire->start_offset = other->start_offset;
1345  wire->port_id = other->port_id;
1346  wire->port_input = other->port_input;
1347  wire->port_output = other->port_output;
1348  wire->upto = other->upto;
1349  wire->attributes = other->attributes;
1350  return wire;
1351 }
RTLIL::Wire * wire(RTLIL::IdString id)
Definition: rtlil.h:637
bool upto
Definition: rtlil.h:827
bool port_input
Definition: rtlil.h:827
int width
Definition: rtlil.h:826
int port_id
Definition: rtlil.h:826
bool port_output
Definition: rtlil.h:827
RTLIL::Wire * addWire(RTLIL::IdString name, int width=1)
Definition: rtlil.cc:1331
int start_offset
Definition: rtlil.h:826
RTLIL::Cell* RTLIL::Module::addXnor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addXnorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::Cell* RTLIL::Module::addXor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_y,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::addXorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_y 
)

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::And ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::AndGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)
RTLIL::SigBit RTLIL::Module::Aoi3Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c 
)
RTLIL::SigBit RTLIL::Module::Aoi4Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_d 
)
RTLIL::SigSpec RTLIL::Module::Bu0 ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
RTLIL::Cell* RTLIL::Module::cell ( RTLIL::IdString  id)
inline

Definition at line 638 of file rtlil.h.

638 { return cells_.count(id) ? cells_.at(id) : nullptr; }
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596

+ Here is the caller graph for this function:

RTLIL::ObjRange<RTLIL::Cell*> RTLIL::Module::cells ( )
inline

Definition at line 641 of file rtlil.h.

std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
int refcount_cells_
Definition: rtlil.h:593

+ Here is the caller graph for this function:

void RTLIL::Module::check ( )
virtual

Definition at line 948 of file rtlil.cc.

949 {
950 #ifndef NDEBUG
951  std::vector<bool> ports_declared;
952  for (auto &it : wires_) {
953  log_assert(this == it.second->module);
954  log_assert(it.first == it.second->name);
955  log_assert(!it.first.empty());
956  log_assert(it.second->width >= 0);
957  log_assert(it.second->port_id >= 0);
958  for (auto &it2 : it.second->attributes)
959  log_assert(!it2.first.empty());
960  if (it.second->port_id) {
961  log_assert(GetSize(ports) >= it.second->port_id);
962  log_assert(ports.at(it.second->port_id-1) == it.first);
963  log_assert(it.second->port_input || it.second->port_output);
964  if (GetSize(ports_declared) < it.second->port_id)
965  ports_declared.resize(it.second->port_id);
966  log_assert(ports_declared[it.second->port_id-1] == false);
967  ports_declared[it.second->port_id-1] = true;
968  } else
969  log_assert(!it.second->port_input && !it.second->port_output);
970  }
971  for (auto port_declared : ports_declared)
972  log_assert(port_declared == true);
973  log_assert(GetSize(ports) == GetSize(ports_declared));
974 
975  for (auto &it : memories) {
976  log_assert(it.first == it.second->name);
977  log_assert(!it.first.empty());
978  log_assert(it.second->width >= 0);
979  log_assert(it.second->size >= 0);
980  for (auto &it2 : it.second->attributes)
981  log_assert(!it2.first.empty());
982  }
983 
984  for (auto &it : cells_) {
985  log_assert(this == it.second->module);
986  log_assert(it.first == it.second->name);
987  log_assert(!it.first.empty());
988  log_assert(!it.second->type.empty());
989  for (auto &it2 : it.second->connections()) {
990  log_assert(!it2.first.empty());
991  it2.second.check();
992  }
993  for (auto &it2 : it.second->attributes)
994  log_assert(!it2.first.empty());
995  for (auto &it2 : it.second->parameters)
996  log_assert(!it2.first.empty());
997  InternalCellChecker checker(this, it.second);
998  checker.check();
999  }
1000 
1001  for (auto &it : processes) {
1002  log_assert(it.first == it.second->name);
1003  log_assert(!it.first.empty());
1004  // FIXME: More checks here..
1005  }
1006 
1007  for (auto &it : connections_) {
1008  log_assert(it.first.size() == it.second.size());
1009  it.first.check();
1010  it.second.check();
1011  }
1012 
1013  for (auto &it : attributes)
1014  log_assert(!it.first.empty());
1015 #endif
1016 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597
std::vector< RTLIL::IdString > ports
Definition: rtlil.h:617
int GetSize(RTLIL::Wire *wire)
Definition: yosys.cc:334
#define log_assert(_assert_expr_)
Definition: log.h:85
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

RTLIL::Module * RTLIL::Module::clone ( ) const
virtual

Reimplemented in AST::AstModule.

Definition at line 1061 of file rtlil.cc.

1062 {
1063  RTLIL::Module *new_mod = new RTLIL::Module;
1064  new_mod->name = name;
1065  cloneInto(new_mod);
1066  return new_mod;
1067 }
void cloneInto(RTLIL::Module *new_mod) const
Definition: rtlil.cc:1022
RTLIL::IdString name
Definition: rtlil.h:599

+ Here is the caller graph for this function:

void RTLIL::Module::cloneInto ( RTLIL::Module new_mod) const

Definition at line 1022 of file rtlil.cc.

1023 {
1024  log_assert(new_mod->refcount_wires_ == 0);
1025  log_assert(new_mod->refcount_cells_ == 0);
1026 
1027  new_mod->connections_ = connections_;
1028  new_mod->attributes = attributes;
1029 
1030  for (auto &it : wires_)
1031  new_mod->addWire(it.first, it.second);
1032 
1033  for (auto &it : memories)
1034  new_mod->memories[it.first] = new RTLIL::Memory(*it.second);
1035 
1036  for (auto &it : cells_)
1037  new_mod->addCell(it.first, it.second);
1038 
1039  for (auto &it : processes)
1040  new_mod->processes[it.first] = it.second->clone();
1041 
1042  struct RewriteSigSpecWorker
1043  {
1044  RTLIL::Module *mod;
1045  void operator()(RTLIL::SigSpec &sig)
1046  {
1047  std::vector<RTLIL::SigChunk> chunks = sig.chunks();
1048  for (auto &c : chunks)
1049  if (c.wire != NULL)
1050  c.wire = mod->wires_.at(c.wire->name);
1051  sig = chunks;
1052  }
1053  };
1054 
1055  RewriteSigSpecWorker rewriteSigSpecWorker;
1056  rewriteSigSpecWorker.mod = new_mod;
1057  new_mod->rewrite_sigspecs(rewriteSigSpecWorker);
1058  new_mod->fixup_ports();
1059 }
RTLIL::Cell * addCell(RTLIL::IdString name, RTLIL::IdString type)
Definition: rtlil.cc:1353
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
void rewrite_sigspecs(T functor)
Definition: rtlil.h:1166
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597
void fixup_ports()
Definition: rtlil.cc:1312
#define log_assert(_assert_expr_)
Definition: log.h:85
RTLIL::Wire * addWire(RTLIL::IdString name, int width=1)
Definition: rtlil.cc:1331
int refcount_wires_
Definition: rtlil.h:592
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
#define NULL
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
int refcount_cells_
Definition: rtlil.h:593
const std::vector< RTLIL::SigChunk > & chunks() const
Definition: rtlil.h:1016

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void RTLIL::Module::connect ( const RTLIL::SigSig conn)

Definition at line 1278 of file rtlil.cc.

1279 {
1280  for (auto mon : monitors)
1281  mon->notify_connect(this, conn);
1282 
1283  if (design)
1284  for (auto mon : design->monitors)
1285  mon->notify_connect(this, conn);
1286 
1287  connections_.push_back(conn);
1288 }
std::set< RTLIL::Monitor * > monitors
Definition: rtlil.h:590
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597
RTLIL::Design * design
Definition: rtlil.h:589
std::set< RTLIL::Monitor * > monitors
Definition: rtlil.h:503

+ Here is the caller graph for this function:

void RTLIL::Module::connect ( const RTLIL::SigSpec lhs,
const RTLIL::SigSpec rhs 
)

Definition at line 1290 of file rtlil.cc.

1291 {
1292  connect(RTLIL::SigSig(lhs, rhs));
1293 }
void connect(const RTLIL::SigSig &conn)
Definition: rtlil.cc:1278
std::pair< SigSpec, SigSpec > SigSig
Definition: rtlil.h:71
const std::vector< RTLIL::SigSig > & RTLIL::Module::connections ( ) const

Definition at line 1307 of file rtlil.cc.

1308 {
1309  return connections_;
1310 }
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597

+ Here is the caller graph for this function:

size_t RTLIL::Module::count_id ( RTLIL::IdString  id)
virtual

Definition at line 472 of file rtlil.cc.

473 {
474  return wires_.count(id) + memories.count(id) + cells_.count(id) + processes.count(id);
475 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596

+ Here is the caller graph for this function:

RTLIL::IdString RTLIL::Module::derive ( RTLIL::Design design,
std::map< RTLIL::IdString, RTLIL::Const parameters 
)
virtual

Definition at line 467 of file rtlil.cc.

468 {
469  log_error("Module `%s' is used with parameters but is not parametric!\n", id2cstr(name));
470 }
void log_error(const char *format,...)
Definition: log.cc:204
RTLIL::IdString name
Definition: rtlil.h:599
static const char * id2cstr(const RTLIL::IdString &str)
Definition: rtlil.h:267

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Div ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Eq ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Eqx ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
void RTLIL::Module::fixup_ports ( )

Definition at line 1312 of file rtlil.cc.

1313 {
1314  std::vector<RTLIL::Wire*> all_ports;
1315 
1316  for (auto &w : wires_)
1317  if (w.second->port_input || w.second->port_output)
1318  all_ports.push_back(w.second);
1319  else
1320  w.second->port_id = 0;
1321 
1322  std::sort(all_ports.begin(), all_ports.end(), fixup_ports_compare);
1323 
1324  ports.clear();
1325  for (size_t i = 0; i < all_ports.size(); i++) {
1326  ports.push_back(all_ports[i]->name);
1327  all_ports[i]->port_id = i+1;
1328  }
1329 }
void sort(T *array, int size, LessThan lt)
Definition: Sort.h:57
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
std::vector< RTLIL::IdString > ports
Definition: rtlil.h:617
RTLIL::IdString name
Definition: rtlil.h:599
static bool fixup_ports_compare(const RTLIL::Wire *a, const RTLIL::Wire *b)
Definition: rtlil.cc:1266

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Ge ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Gt ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
bool RTLIL::Module::has_memories ( ) const

Definition at line 1069 of file rtlil.cc.

1070 {
1071  return !memories.empty();
1072 }
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
bool RTLIL::Module::has_memories_warn ( ) const

Definition at line 1079 of file rtlil.cc.

1080 {
1081  if (!memories.empty())
1082  log_warning("Ignoring module %s because it contains memories (run 'memory' command first).\n", log_id(this));
1083  return !memories.empty();
1084 }
void log_warning(const char *format,...)
Definition: log.cc:196
std::map< RTLIL::IdString, RTLIL::Memory * > memories
Definition: rtlil.h:601
const char * log_id(RTLIL::IdString str)
Definition: log.cc:283

+ Here is the call graph for this function:

bool RTLIL::Module::has_processes ( ) const

Definition at line 1074 of file rtlil.cc.

1075 {
1076  return !processes.empty();
1077 }
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
bool RTLIL::Module::has_processes_warn ( ) const

Definition at line 1086 of file rtlil.cc.

1087 {
1088  if (!processes.empty())
1089  log_warning("Ignoring module %s because it contains processes (run 'proc' command first).\n", log_id(this));
1090  return !processes.empty();
1091 }
void log_warning(const char *format,...)
Definition: log.cc:196
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
const char * log_id(RTLIL::IdString str)
Definition: log.cc:283

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Le ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::LogicAnd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::LogicNot ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::LogicOr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Lt ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Mod ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Mul ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Mux ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_s 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::MuxGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_s 
)
RTLIL::SigBit RTLIL::Module::NandGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)
RTLIL::SigSpec RTLIL::Module::Ne ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Neg ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
void RTLIL::Module::new_connections ( const std::vector< RTLIL::SigSig > &  new_conn)

Definition at line 1295 of file rtlil.cc.

1296 {
1297  for (auto mon : monitors)
1298  mon->notify_connect(this, new_conn);
1299 
1300  if (design)
1301  for (auto mon : design->monitors)
1302  mon->notify_connect(this, new_conn);
1303 
1304  connections_ = new_conn;
1305 }
std::set< RTLIL::Monitor * > monitors
Definition: rtlil.h:590
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597
RTLIL::Design * design
Definition: rtlil.h:589
std::set< RTLIL::Monitor * > monitors
Definition: rtlil.h:503
RTLIL::SigSpec RTLIL::Module::Nex ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigBit RTLIL::Module::NorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)
RTLIL::SigSpec RTLIL::Module::Not ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::NotGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::Oai3Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c 
)
RTLIL::SigBit RTLIL::Module::Oai4Gate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b,
RTLIL::SigBit  sig_c,
RTLIL::SigBit  sig_d 
)
void RTLIL::Module::optimize ( )
virtual

Definition at line 1018 of file rtlil.cc.

1019 {
1020 }
RTLIL::SigSpec RTLIL::Module::Or ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::OrGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)
RTLIL::SigSpec RTLIL::Module::Pmux ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
RTLIL::SigSpec  sig_s 
)
RTLIL::SigSpec RTLIL::Module::Pos ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Pow ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  a_signed = false,
bool  b_signed = false 
)
RTLIL::SigSpec RTLIL::Module::ReduceAnd ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::ReduceBool ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::ReduceOr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::ReduceXnor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::ReduceXor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
bool  is_signed = false 
)
void RTLIL::Module::remove ( const std::set< RTLIL::Wire * > &  wires)

Definition at line 1158 of file rtlil.cc.

1159 {
1161 
1162  DeleteWireWorker delete_wire_worker;
1163  delete_wire_worker.module = this;
1164  delete_wire_worker.wires_p = &wires;
1165  rewrite_sigspecs(delete_wire_worker);
1166 
1167  for (auto &it : wires) {
1168  log_assert(wires_.count(it->name) != 0);
1169  wires_.erase(it->name);
1170  delete it;
1171  }
1172 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
void rewrite_sigspecs(T functor)
Definition: rtlil.h:1166
RTLIL::ObjRange< RTLIL::Wire * > wires()
Definition: rtlil.h:640
#define log_assert(_assert_expr_)
Definition: log.h:85
int refcount_wires_
Definition: rtlil.h:592

+ Here is the caller graph for this function:

void RTLIL::Module::remove ( RTLIL::Cell cell)

Definition at line 1174 of file rtlil.cc.

1175 {
1176  while (!cell->connections_.empty())
1177  cell->unsetPort(cell->connections_.begin()->first);
1178 
1179  log_assert(cells_.count(cell->name) != 0);
1181  cells_.erase(cell->name);
1182  delete cell;
1183 }
void unsetPort(RTLIL::IdString portname)
Definition: rtlil.cc:1771
RTLIL::IdString name
Definition: rtlil.h:853
#define log_assert(_assert_expr_)
Definition: log.h:85
RTLIL::Cell * cell(RTLIL::IdString id)
Definition: rtlil.h:638
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
std::map< RTLIL::IdString, RTLIL::SigSpec > connections_
Definition: rtlil.h:855
int refcount_cells_
Definition: rtlil.h:593

+ Here is the call graph for this function:

void RTLIL::Module::rename ( RTLIL::Wire wire,
RTLIL::IdString  new_name 
)

Definition at line 1185 of file rtlil.cc.

1186 {
1187  log_assert(wires_[wire->name] == wire);
1189  wires_.erase(wire->name);
1190  wire->name = new_name;
1191  add(wire);
1192 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
void add(RTLIL::Wire *wire)
Definition: rtlil.cc:1113
#define log_assert(_assert_expr_)
Definition: log.h:85
int refcount_wires_
Definition: rtlil.h:592
RTLIL::IdString name
Definition: rtlil.h:825

+ Here is the caller graph for this function:

void RTLIL::Module::rename ( RTLIL::Cell cell,
RTLIL::IdString  new_name 
)

Definition at line 1194 of file rtlil.cc.

1195 {
1196  log_assert(cells_[cell->name] == cell);
1198  cells_.erase(cell->name);
1199  cell->name = new_name;
1200  add(cell);
1201 }
RTLIL::IdString name
Definition: rtlil.h:853
void add(RTLIL::Wire *wire)
Definition: rtlil.cc:1113
#define log_assert(_assert_expr_)
Definition: log.h:85
int refcount_wires_
Definition: rtlil.h:592
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
void RTLIL::Module::rename ( RTLIL::IdString  old_name,
RTLIL::IdString  new_name 
)

Definition at line 1203 of file rtlil.cc.

1204 {
1205  log_assert(count_id(old_name) != 0);
1206  if (wires_.count(old_name))
1207  rename(wires_.at(old_name), new_name);
1208  else if (cells_.count(old_name))
1209  rename(cells_.at(old_name), new_name);
1210  else
1211  log_abort();
1212 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
#define log_abort()
Definition: log.h:84
#define log_assert(_assert_expr_)
Definition: log.h:85
virtual size_t count_id(RTLIL::IdString id)
Definition: rtlil.cc:472
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
void rename(RTLIL::Wire *wire, RTLIL::IdString new_name)
Definition: rtlil.cc:1185
template<typename T >
void RTLIL::Module::rewrite_sigspecs ( functor)

Definition at line 1166 of file rtlil.h.

1167 {
1168  for (auto &it : cells_)
1169  it.second->rewrite_sigspecs(functor);
1170  for (auto &it : processes)
1171  it.second->rewrite_sigspecs(functor);
1172  for (auto &it : connections_) {
1173  functor(it.first);
1174  functor(it.second);
1175  }
1176 }
std::vector< RTLIL::SigSig > connections_
Definition: rtlil.h:597
std::map< RTLIL::IdString, RTLIL::Process * > processes
Definition: rtlil.h:602
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596

+ Here is the caller graph for this function:

template<typename T >
bool RTLIL::Module::selected ( T *  member) const
inline

Definition at line 633 of file rtlil.h.

633  {
634  return design->selected_member(name, member->name);
635  }
bool selected_member(RTLIL::IdString mod_name, RTLIL::IdString memb_name) const
Definition: rtlil.cc:397
RTLIL::IdString name
Definition: rtlil.h:599
RTLIL::Design * design
Definition: rtlil.h:589

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::vector< RTLIL::Cell * > RTLIL::Module::selected_cells ( ) const

Definition at line 1103 of file rtlil.cc.

1104 {
1105  std::vector<RTLIL::Cell*> result;
1106  result.reserve(wires_.size());
1107  for (auto &it : cells_)
1108  if (design->selected(this, it.second))
1109  result.push_back(it.second);
1110  return result;
1111 }
bool selected(T1 *module) const
Definition: rtlil.h:551
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
RTLIL::Design * design
Definition: rtlil.h:589

+ Here is the caller graph for this function:

std::vector< RTLIL::Wire * > RTLIL::Module::selected_wires ( ) const

Definition at line 1093 of file rtlil.cc.

1094 {
1095  std::vector<RTLIL::Wire*> result;
1096  result.reserve(wires_.size());
1097  for (auto &it : wires_)
1098  if (design->selected(this, it.second))
1099  result.push_back(it.second);
1100  return result;
1101 }
bool selected(T1 *module) const
Definition: rtlil.h:551
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
RTLIL::Design * design
Definition: rtlil.h:589

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Shift ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Shiftx ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Shl ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Shr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Sshl ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Sshr ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigSpec RTLIL::Module::Sub ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

void RTLIL::Module::swap_names ( RTLIL::Wire w1,
RTLIL::Wire w2 
)

Definition at line 1214 of file rtlil.cc.

1215 {
1216  log_assert(wires_[w1->name] == w1);
1217  log_assert(wires_[w2->name] == w2);
1219 
1220  wires_.erase(w1->name);
1221  wires_.erase(w2->name);
1222 
1223  std::swap(w1->name, w2->name);
1224 
1225  wires_[w1->name] = w1;
1226  wires_[w2->name] = w2;
1227 }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
#define log_assert(_assert_expr_)
Definition: log.h:85
int refcount_wires_
Definition: rtlil.h:592
RTLIL::IdString name
Definition: rtlil.h:825

+ Here is the caller graph for this function:

void RTLIL::Module::swap_names ( RTLIL::Cell c1,
RTLIL::Cell c2 
)

Definition at line 1229 of file rtlil.cc.

1230 {
1231  log_assert(cells_[c1->name] == c1);
1232  log_assert(cells_[c2->name] == c2);
1234 
1235  cells_.erase(c1->name);
1236  cells_.erase(c2->name);
1237 
1238  std::swap(c1->name, c2->name);
1239 
1240  cells_[c1->name] = c1;
1241  cells_[c2->name] = c2;
1242 }
RTLIL::IdString name
Definition: rtlil.h:853
#define log_assert(_assert_expr_)
Definition: log.h:85
std::map< RTLIL::IdString, RTLIL::Cell * > cells_
Definition: rtlil.h:596
int refcount_cells_
Definition: rtlil.h:593
RTLIL::IdString RTLIL::Module::uniquify ( RTLIL::IdString  name)

Definition at line 1244 of file rtlil.cc.

1245 {
1246  int index = 0;
1247  return uniquify(name, index);
1248 }
RTLIL::IdString uniquify(RTLIL::IdString name)
Definition: rtlil.cc:1244

+ Here is the caller graph for this function:

RTLIL::IdString RTLIL::Module::uniquify ( RTLIL::IdString  name,
int &  index 
)

Definition at line 1250 of file rtlil.cc.

1251 {
1252  if (index == 0) {
1253  if (count_id(name) == 0)
1254  return name;
1255  index++;
1256  }
1257 
1258  while (1) {
1259  RTLIL::IdString new_name = stringf("%s_%d", name.c_str(), index);
1260  if (count_id(new_name) == 0)
1261  return new_name;
1262  index++;
1263  }
1264 }
const char * c_str() const
Definition: rtlil.h:178
std::string stringf(const char *fmt,...)
Definition: yosys.cc:58
RTLIL::IdString name
Definition: rtlil.h:599
virtual size_t count_id(RTLIL::IdString id)
Definition: rtlil.cc:472

+ Here is the call graph for this function:

RTLIL::Wire* RTLIL::Module::wire ( RTLIL::IdString  id)
inline

Definition at line 637 of file rtlil.h.

637 { return wires_.count(id) ? wires_.at(id) : nullptr; }
std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595

+ Here is the caller graph for this function:

RTLIL::ObjRange<RTLIL::Wire*> RTLIL::Module::wires ( )
inline

Definition at line 640 of file rtlil.h.

std::map< RTLIL::IdString, RTLIL::Wire * > wires_
Definition: rtlil.h:595
int refcount_wires_
Definition: rtlil.h:592

+ Here is the caller graph for this function:

RTLIL::SigSpec RTLIL::Module::Xnor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)
RTLIL::SigBit RTLIL::Module::XnorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)
RTLIL::SigSpec RTLIL::Module::Xor ( RTLIL::IdString  name,
RTLIL::SigSpec  sig_a,
RTLIL::SigSpec  sig_b,
bool  is_signed = false 
)

+ Here is the caller graph for this function:

RTLIL::SigBit RTLIL::Module::XorGate ( RTLIL::IdString  name,
RTLIL::SigBit  sig_a,
RTLIL::SigBit  sig_b 
)

Field Documentation

std::set<RTLIL::IdString> RTLIL::Module::avail_parameters

Definition at line 600 of file rtlil.h.

std::map<RTLIL::IdString, RTLIL::Cell*> RTLIL::Module::cells_

Definition at line 596 of file rtlil.h.

std::vector<RTLIL::SigSig> RTLIL::Module::connections_

Definition at line 597 of file rtlil.h.

RTLIL::Design* RTLIL::Module::design

Definition at line 589 of file rtlil.h.

std::map<RTLIL::IdString, RTLIL::Memory*> RTLIL::Module::memories

Definition at line 601 of file rtlil.h.

std::set<RTLIL::Monitor*> RTLIL::Module::monitors

Definition at line 590 of file rtlil.h.

RTLIL::IdString RTLIL::Module::name

Definition at line 599 of file rtlil.h.

std::vector<RTLIL::IdString> RTLIL::Module::ports

Definition at line 617 of file rtlil.h.

std::map<RTLIL::IdString, RTLIL::Process*> RTLIL::Module::processes

Definition at line 602 of file rtlil.h.

int RTLIL::Module::refcount_cells_

Definition at line 593 of file rtlil.h.

int RTLIL::Module::refcount_wires_

Definition at line 592 of file rtlil.h.

std::map<RTLIL::IdString, RTLIL::Wire*> RTLIL::Module::wires_

Definition at line 595 of file rtlil.h.


The documentation for this struct was generated from the following files: