69 #include <unordered_map> 71 #include "vtr_range.h" 72 #include "vtr_logic.h" 73 #include "vtr_vector_map.h" 75 #include "logic_types.h" 88 AtomNetlist(std::string name =
"", std::string
id =
"");
91 typedef std::vector<std::vector<vtr::LogicValue>>
TruthTable;
234 void clean_blocks_impl(
const vtr::vector_map<AtomBlockId, AtomBlockId>& block_id_map)
override;
235 void clean_ports_impl(
const vtr::vector_map<AtomPortId, AtomPortId>& port_id_map)
override;
236 void clean_pins_impl(
const vtr::vector_map<AtomPinId, AtomPinId>& pin_id_map)
override;
237 void clean_nets_impl(
const vtr::vector_map<AtomNetId, AtomNetId>& net_id_map)
override;
239 void rebuild_block_refs_impl(
const vtr::vector_map<AtomPinId, AtomPinId>& pin_id_map,
const vtr::vector_map<AtomPortId, AtomPortId>& port_id_map)
override;
240 void rebuild_port_refs_impl(
const vtr::vector_map<AtomBlockId, AtomBlockId>& block_id_map,
const vtr::vector_map<AtomPinId, AtomPinId>& pin_id_map)
override;
241 void rebuild_pin_refs_impl(
const vtr::vector_map<AtomPortId, AtomPortId>& port_id_map,
const vtr::vector_map<AtomNetId, AtomNetId>& net_id_map)
override;
bool validate_block_sizes_impl(size_t num_blocks) const override
Definition: atom_netlist.cpp:287
void shrink_to_fit_impl() override
Shrinks internal data structures to required size to reduce memory consumption.
Definition: atom_netlist.cpp:274
vtr::StrongId< atom_net_id_tag > AtomNetId
Definition: atom_netlist_fwd.h:32
AtomBlockType
Definition: atom_netlist_fwd.h:44
void rebuild_port_refs_impl(const vtr::vector_map< AtomBlockId, AtomBlockId > &block_id_map, const vtr::vector_map< AtomPinId, AtomPinId > &pin_id_map) override
Definition: atom_netlist.cpp:236
std::unordered_set< std::string > net_aliases(const std::string net_name) const
Returns the a set of aliases relative to the net name.
Definition: atom_netlist.cpp:105
const t_model_ports * port_model(const AtomPortId id) const
Returns the model port of the specified port or nullptr if not.
Definition: atom_netlist.cpp:58
vtr::vector_map< AtomPortId, const t_model_ports * > port_models_
Definition: atom_netlist.h:262
void remove_port_impl(const AtomPortId port_id) override
Definition: atom_netlist.cpp:219
vtr::StrongId< atom_pin_id_tag > AtomPinId
Definition: atom_netlist_fwd.h:38
bool validate_port_sizes_impl(size_t num_ports) const override
Definition: atom_netlist.cpp:295
void remove_block_impl(const AtomBlockId blk_id) override
Definition: atom_netlist.cpp:215
This file defines the Netlist class, which stores the connectivity information of the components in a...
void rebuild_block_refs_impl(const vtr::vector_map< AtomPinId, AtomPinId > &pin_id_map, const vtr::vector_map< AtomPortId, AtomPortId > &port_id_map) override
Definition: atom_netlist.cpp:231
AtomPinId create_pin(const AtomPortId port_id, BitIndex port_bit, const AtomNetId net_id, const PinType pin_type, bool is_const=false)
Create or return an existing pin in the netlist.
Definition: atom_netlist.cpp:182
void remove_pin_impl(const AtomPinId pin_id) override
Definition: atom_netlist.cpp:223
std::vector< std::vector< vtr::LogicValue > > TruthTable
Definition: atom_netlist.h:91
AtomBlockId create_block(const std::string name, const t_model *model, const TruthTable truth_table=TruthTable())
Create or return an existing block in the netlist.
Definition: atom_netlist.cpp:127
AtomBlockId find_atom_pin_driver(const AtomBlockId blk_id, const t_model_ports *model_port, const BitIndex port_bit) const
Returns the AtomBlockId of the atom driving the specified pin if it exists or AtomBlockId::INVALID() ...
Definition: atom_netlist.cpp:87
AtomNetId create_net(const std::string name)
Create an empty, or return an existing net in the netlist.
Definition: atom_netlist.cpp:195
bool validate_net_sizes_impl(size_t num_nets) const override
Definition: atom_netlist.cpp:307
PinType pin_type(const AtomPinId pin_id) const
Returns the type of the specified pin.
void clean_ports_impl(const vtr::vector_map< AtomPortId, AtomPortId > &port_id_map) override
Definition: atom_netlist.cpp:261
vtr::vector_map< AtomBlockId, TruthTable > block_truth_tables_
Definition: atom_netlist.h:259
void remove_net_impl(const AtomNetId net_id) override
Definition: atom_netlist.cpp:227
const t_model * block_model(const AtomBlockId id) const
Returns the model associated with the block.
Definition: atom_netlist.cpp:41
const std::string & net_name(const AtomNetId net_id) const
Returns the name of the specified net.
std::unordered_map< std::string, std::unordered_set< std::string > > net_aliases_map_
Definition: atom_netlist.h:265
Definition: atom_netlist.h:80
void rebuild_net_refs_impl(const vtr::vector_map< AtomPinId, AtomPinId > &pin_id_map) override
Definition: atom_netlist.cpp:246
bool validate_pin_sizes_impl(size_t num_pins) const override
Definition: atom_netlist.cpp:302
const TruthTable & block_truth_table(const AtomBlockId id) const
Returns the truth table associated with the block.
Definition: atom_netlist.cpp:47
AtomNetlist(std::string name="", std::string id="")
Constructs a netlist.
Definition: atom_netlist.cpp:19
vtr::vector_map< AtomBlockId, const t_model * > block_models_
Definition: atom_netlist.h:258
void clean_pins_impl(const vtr::vector_map< AtomPinId, AtomPinId > &pin_id_map) override
Definition: atom_netlist.cpp:266
vtr::StrongId< atom_port_id_tag > AtomPortId
Definition: atom_netlist_fwd.h:35
PinType
Definition: netlist_fwd.h:25
Definition: netlist.h:446
void add_net_alias(const std::string net_name, std::string alias_net_name)
Adds a value to the net aliases set for a given net name in the net_aliases_map.
Definition: atom_netlist.cpp:208
AtomPortId find_atom_port(const AtomBlockId blk_id, const t_model_ports *model_port) const
Returns the AtomPortId of the specifed port if it exists or AtomPortId::INVALID() if not...
Definition: atom_netlist.cpp:69
void rebuild_pin_refs_impl(const vtr::vector_map< AtomPortId, AtomPortId > &port_id_map, const vtr::vector_map< AtomNetId, AtomNetId > &net_id_map) override
Definition: atom_netlist.cpp:241
void clean_nets_impl(const vtr::vector_map< AtomNetId, AtomNetId > &net_id_map) override
Definition: atom_netlist.cpp:270
void clean_blocks_impl(const vtr::vector_map< AtomBlockId, AtomBlockId > &block_id_map) override
Definition: atom_netlist.cpp:255
vtr::StrongId< atom_block_id_tag > AtomBlockId
Definition: atom_netlist_fwd.h:26
AtomBlockType block_type(const AtomBlockId id) const
Returns the type of the specified block.
Definition: atom_netlist.cpp:27
AtomPortId create_port(const AtomBlockId blk_id, const t_model_ports *model_port)
Create or return an existing port in the netlist.
Definition: atom_netlist.cpp:144
AtomNetId add_net(const std::string name, AtomPinId driver, std::vector< AtomPinId > sinks)
Create a completely specified net from specified driver and sinks.
Definition: atom_netlist.cpp:204
unsigned BitIndex
Definition: atom_netlist_fwd.h:41