21 #ifndef SRC_PLACEMENT_PLACEMENT_H_
22 #define SRC_PLACEMENT_PLACEMENT_H_
24 #include "../netlist/netlist.h"
54 geometry::multi_polygon<geometry::polygon<geometry::point<double> > >
cell_geometry(
55 entity_system::entity cell)
const {
58 geometry::multi_polygon<geometry::polygon<geometry::point<double> > > translated;
59 geometry::translate(lib_geometry, position, translated);
69 geometry::point<double> position);
76 geometry::point<double>
cell_position(entity_system::entity cell)
const {
77 return m_cells.position(cell);
79 void cell_fixed(entity_system::entity cell,
bool fixed);
80 bool cell_fixed(entity_system::entity cell)
const {
81 return m_cells.fixed(cell);
83 geometry::point<double> cell_dimensions(entity_system::entity cell)
const {
85 geometry::box<geometry::point<double>> cell_box;
86 boost::geometry::envelope(geometry, cell_box);
87 geometry::point<double> dimensions(cell_box.max_corner().x() - cell_box.min_corner().x(), cell_box.max_corner().y() - cell_box.min_corner().y());
91 entity_system::entity cell_create(std::string name, std::string type);
93 const cells & cell_properties() {
return m_cells; };
101 geometry::point<double>
pin_position(entity_system::entity pin)
const {
102 entity_system::entity owner = m_netlist->
pin_owner(pin);
103 entity_system::entity std_cell_pin = m_netlist->
pin_std_cell(pin);
105 geometry::point<double> position = m_library->
pin_offset(std_cell_pin);
106 if(!(owner == entity_system::invalid_entity))
108 auto owner_position = m_cells.position(owner);
109 position.x( position.x() + owner_position.x() );
110 position.y( position.y() + owner_position.y() );
121 void pad_position(entity_system::entity pad, geometry::point<double> position);
geometry::point< double > cell_position(entity_system::entity cell) const
Cell position getter.
Definition: placement.h:76
const netlist::netlist & netlist() const
Netlist getter.
Definition: placement.h:129
geometry::multi_polygon< geometry::polygon< geometry::point< double > > > cell_geometry(entity_system::entity cell) const
Cell geometry getter.
Definition: placement.h:54
multipolygon geometry(entity_system::entity cell) const
Cell geometry getter.
Definition: library.h:69
entity_system::entity pin_owner(entity_system::entity pin) const
Pin owner getter.
Definition: netlist.h:249
entity_system::entity cell_std_cell(entity_system::entity cell) const
Cell type getter.
Definition: netlist.h:171
geometry::point< double > pin_position(entity_system::entity pin) const
Pin position getter.
Definition: placement.h:101
void pin_offset(entity_system::entity pin, point offset)
Pin offset setter.
Definition: library.cpp:47
void pad_position(entity_system::entity pad, geometry::point< double > position)
Places a pad.
Definition: placement.cpp:42
Netlist class.
Definition: netlist.h:41
Placement class.
Definition: placement.h:35
const library & lib() const
Placement library getter.
Definition: placement.h:139
placement(netlist::netlist *netlist, library *lib)
Constructor.
Definition: placement.cpp:26
entity_system::entity pin_std_cell(entity_system::entity pin) const
Pin type getter.
Definition: netlist.h:267
Placement library class.
Definition: library.h:42
void cell_position(entity_system::entity cell, geometry::point< double > position)
Places a cell.
Definition: placement.cpp:33