21 #ifndef SRC_STANDARD_CELL_STANDARD_CELLS_H_
22 #define SRC_STANDARD_CELL_STANDARD_CELLS_H_
24 #include "../entity_system/entity_system.h"
25 #include "../standard_cell/cells.h"
26 #include "../standard_cell/pins.h"
27 #include <unordered_map>
31 namespace standard_cell {
45 std::unordered_map<std::string, entity_system::entity> m_name2cell;
46 std::unordered_map<std::string, entity_system::entity> m_name2pin;
74 return m_cells.names();
82 entity_system::entity
cell_create(std::string name);
89 std::string
cell_name(entity_system::entity cell)
const {
90 return m_cells.name(cell);
98 const std::vector<entity_system::entity> &
cell_pins(entity_system::entity cell)
const {
99 return m_cells.pins(cell);
107 return m_cell_system.
size();
115 return m_cell_system;
131 return m_cells.sequential(cell);
141 entity_system::entity
pin_create(entity_system::entity cell, std::string name);
148 entity_system::entity
pin_owner(entity_system::entity pin)
const
150 return m_pins.owner(pin);
158 std::string
pin_name(entity_system::entity pin)
const {
159 std::string the_name;
160 entity_system::entity owner{m_pins.owner(pin)};
161 if(!(owner == entity_system::invalid_entity))
162 the_name = m_cells.name(owner) +
":";
163 the_name += m_pins.name(pin);
172 return m_pin_system.
size();
189 return m_pins.direction(pin);
198 return m_pins.clock_input(pin);
213 void pin_direction(entity_system::entity pin, pin_directions direction);
221 entity_system::entity
pad_create(std::string name);
bool cell_sequential(entity_system::entity cell) const
Cell sequential attribute getter.
Definition: standard_cells.h:130
const entity_system::entity_system & pin_system() const
Pin system getter.
Definition: standard_cells.h:179
pin_directions pin_direction(entity_system::entity pin) const
Pin direction getter.
Definition: standard_cells.h:188
std::string cell_name(entity_system::entity cell) const
Cell name getter.
Definition: standard_cells.h:89
entity_system::entity pin_owner(entity_system::entity pin) const
Pin owner getter.
Definition: standard_cells.h:148
void register_pin_property(entity_system::property *property)
Registers pin property.
Definition: standard_cells.cpp:54
entity_system::entity pad_create(std::string name)
Creates a pad.
Definition: standard_cells.cpp:82
bool pin_clock_input(entity_system::entity pin) const
Pin clock input attribute getter.
Definition: standard_cells.h:197
standard_cells()
Constructor.
Definition: standard_cells.cpp:26
std::size_t pin_count() const
Returns the number of pins.
Definition: standard_cells.h:171
entity_system::entity pin_create(entity_system::entity cell, std::string name)
Creates a pin.
Definition: standard_cells.cpp:59
const entity_system::vector_property< std::string > & cell_names() const
Cell names getter.
Definition: standard_cells.h:73
entity_system::entity cell_create(std::string name)
Creates a cell.
Definition: standard_cells.cpp:34
const std::vector< entity_system::entity > & cell_pins(entity_system::entity cell) const
Cell pins getter.
Definition: standard_cells.h:98
Property class.
Definition: property.h:33
entity_system class.
Definition: entity_system.h:40
void register_cell_property(entity_system::property *property)
Registers cell property.
Definition: standard_cells.cpp:50
std::size_t cell_count() const
Returns the number of cells.
Definition: standard_cells.h:106
std::size_t size() const
Returns the size of the system.
Definition: entity_system.h:82
Standard cell class.
Definition: standard_cells.h:37
std::string pin_name(entity_system::entity pin) const
Pin name getter.
Definition: standard_cells.h:158
const entity_system::entity_system & cell_system() const
Cell system getter.
Definition: standard_cells.h:114
void cell_sequential(entity_system::entity cell, bool sequential)
Cell sequential attribute setter.
Definition: standard_cells.cpp:45