Verilog to Routing - VPR
Public Types | Public Member Functions | Private Attributes
AtomLookup Class Reference

The AtomLookup class describes the mapping between components in the AtomNetlist and other netlists/entities (i.e. atom block <-> t_pb, atom block <-> clb) More...

#include <atom_lookup.h>

Public Types

typedef vtr::linear_map< AtomPinId, tatum::NodeId >::const_iterator pin_tnode_iterator
 
typedef vtr::Range< pin_tnode_iteratorpin_tnode_range
 

Public Member Functions

const t_pbatom_pb (const AtomBlockId blk_id) const
 Returns the leaf pb associated with the atom blk_id. More...
 
AtomBlockId pb_atom (const t_pb *pb) const
 Returns the atom block id associated with pb. More...
 
const t_pb_graph_node * atom_pb_graph_node (const AtomBlockId blk_id) const
 Conveneince wrapper around atom_pb to access the associated graph node. More...
 
void set_atom_pb (const AtomBlockId blk_id, const t_pb *pb)
 Sets the bidirectional mapping between an atom and pb. More...
 
const t_pb_graph_pin * atom_pin_pb_graph_pin (AtomPinId atom_pin) const
 Returns the pb graph pin associated with the specified atom pin. More...
 
void set_atom_pin_pb_graph_pin (AtomPinId atom_pin, const t_pb_graph_pin *gpin)
 Sets the mapping between an atom pin and pb graph pin. More...
 
ClusterBlockId atom_clb (const AtomBlockId blk_id) const
 Returns the clb index associated with blk_id. More...
 
void set_atom_clb (const AtomBlockId blk_id, const ClusterBlockId clb)
 Sets the bidirectional mapping between an atom and clb. More...
 
AtomNetId atom_net (const ClusterNetId clb_net_index) const
 Returns the atom net id associated with the clb_net_index. More...
 
ClusterNetId clb_net (const AtomNetId net_id) const
 Returns the clb net index associated with net_id. More...
 
void set_atom_clb_net (const AtomNetId net_id, const ClusterNetId clb_net_index)
 Sets the bidirectional mapping between an atom net and a clb net. More...
 
tatum::NodeId atom_pin_tnode (const AtomPinId pin, BlockTnode block_tnode_type=BlockTnode::EXTERNAL) const
 Returns the timing graph node associated with the specified atom netlist pin. More...
 
AtomPinId tnode_atom_pin (const tatum::NodeId tnode) const
 Returns the atom netlist pin associated with the specified timing graph node. More...
 
AtomLookup::pin_tnode_range atom_pin_tnodes (BlockTnode block_tnode_type) const
 Returns a range of all pin to tnode mappingsg of the specified type. More...
 
void set_atom_pin_tnode (const AtomPinId pin, const tatum::NodeId node, BlockTnode block_tnode_type)
 Sets the bi-directional mapping between an atom netlist pin and timing graph node. More...
 

Private Attributes

vtr::bimap< AtomBlockId, const t_pb *, vtr::linear_map, std::unordered_map > atom_to_pb_
 
vtr::vector_map< AtomPinId, const t_pb_graph_pin * > atom_pin_to_pb_graph_pin_
 
vtr::vector_map< AtomBlockId, ClusterBlockIdatom_to_clb_
 
vtr::bimap< AtomNetId, ClusterNetId, vtr::linear_map, vtr::linear_map > atom_net_to_clb_net_
 
vtr::linear_map< AtomPinId, tatum::NodeId > atom_pin_tnode_external_
 
vtr::linear_map< AtomPinId, tatum::NodeId > atom_pin_tnode_internal_
 
vtr::linear_map< tatum::NodeId, AtomPinIdtnode_atom_pin_
 

Detailed Description

The AtomLookup class describes the mapping between components in the AtomNetlist and other netlists/entities (i.e. atom block <-> t_pb, atom block <-> clb)

Member Typedef Documentation

◆ pin_tnode_iterator

typedef vtr::linear_map<AtomPinId, tatum::NodeId>::const_iterator AtomLookup::pin_tnode_iterator

◆ pin_tnode_range

Member Function Documentation

◆ atom_clb()

ClusterBlockId AtomLookup::atom_clb ( const AtomBlockId  blk_id) const

Returns the clb index associated with blk_id.

◆ atom_net()

AtomNetId AtomLookup::atom_net ( const ClusterNetId  clb_net_index) const

Returns the atom net id associated with the clb_net_index.

◆ atom_pb()

const t_pb * AtomLookup::atom_pb ( const AtomBlockId  blk_id) const

Returns the leaf pb associated with the atom blk_id.

Note
this is the lowest level pb which corresponds directly to the atom block

◆ atom_pb_graph_node()

const t_pb_graph_node * AtomLookup::atom_pb_graph_node ( const AtomBlockId  blk_id) const

Conveneince wrapper around atom_pb to access the associated graph node.

◆ atom_pin_pb_graph_pin()

const t_pb_graph_pin * AtomLookup::atom_pin_pb_graph_pin ( AtomPinId  atom_pin) const

Returns the pb graph pin associated with the specified atom pin.

◆ atom_pin_tnode()

tatum::NodeId AtomLookup::atom_pin_tnode ( const AtomPinId  pin,
BlockTnode  block_tnode_type = BlockTnode::EXTERNAL 
) const

Returns the timing graph node associated with the specified atom netlist pin.

◆ atom_pin_tnodes()

AtomLookup::pin_tnode_range AtomLookup::atom_pin_tnodes ( BlockTnode  block_tnode_type) const

Returns a range of all pin to tnode mappingsg of the specified type.

◆ clb_net()

ClusterNetId AtomLookup::clb_net ( const AtomNetId  net_id) const

Returns the clb net index associated with net_id.

◆ pb_atom()

AtomBlockId AtomLookup::pb_atom ( const t_pb pb) const

Returns the atom block id associated with pb.

◆ set_atom_clb()

void AtomLookup::set_atom_clb ( const AtomBlockId  blk_id,
const ClusterBlockId  clb 
)

Sets the bidirectional mapping between an atom and clb.

If either blk_id or clb_index are not valid any existing mapping is removed

◆ set_atom_clb_net()

void AtomLookup::set_atom_clb_net ( const AtomNetId  net_id,
const ClusterNetId  clb_net_index 
)

Sets the bidirectional mapping between an atom net and a clb net.

If either net_id or clb_net_index are not valid any existing mapping is removed

◆ set_atom_pb()

void AtomLookup::set_atom_pb ( const AtomBlockId  blk_id,
const t_pb pb 
)

Sets the bidirectional mapping between an atom and pb.

If either blk_id or pb are not valid any, existing mapping is removed

◆ set_atom_pin_pb_graph_pin()

void AtomLookup::set_atom_pin_pb_graph_pin ( AtomPinId  atom_pin,
const t_pb_graph_pin *  gpin 
)

Sets the mapping between an atom pin and pb graph pin.

◆ set_atom_pin_tnode()

void AtomLookup::set_atom_pin_tnode ( const AtomPinId  pin,
const tatum::NodeId  node,
BlockTnode  block_tnode_type 
)

Sets the bi-directional mapping between an atom netlist pin and timing graph node.

◆ tnode_atom_pin()

AtomPinId AtomLookup::tnode_atom_pin ( const tatum::NodeId  tnode) const

Returns the atom netlist pin associated with the specified timing graph node.

Field Documentation

◆ atom_net_to_clb_net_

vtr::bimap<AtomNetId, ClusterNetId, vtr::linear_map, vtr::linear_map> AtomLookup::atom_net_to_clb_net_
private

◆ atom_pin_tnode_external_

vtr::linear_map<AtomPinId, tatum::NodeId> AtomLookup::atom_pin_tnode_external_
private

◆ atom_pin_tnode_internal_

vtr::linear_map<AtomPinId, tatum::NodeId> AtomLookup::atom_pin_tnode_internal_
private

◆ atom_pin_to_pb_graph_pin_

vtr::vector_map<AtomPinId, const t_pb_graph_pin*> AtomLookup::atom_pin_to_pb_graph_pin_
private

◆ atom_to_clb_

vtr::vector_map<AtomBlockId, ClusterBlockId> AtomLookup::atom_to_clb_
private

◆ atom_to_pb_

vtr::bimap<AtomBlockId, const t_pb*, vtr::linear_map, std::unordered_map> AtomLookup::atom_to_pb_
private

◆ tnode_atom_pin_

vtr::linear_map<tatum::NodeId, AtomPinId> AtomLookup::tnode_atom_pin_
private

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