Verilog to Routing - VPR
|
A t_pb represents an instance of a clustered block. More...
#include <vpr_types.h>
Public Member Functions | |
bool | is_root () const |
Returns true if this block has not parent pb block. More... | |
bool | is_primitive () const |
Returns true if this pb corresponds to a primitive block (i.e. LUT, FF, etc.) More... | |
bool | has_modes () const |
Returns true if this pb has modes. More... | |
int | get_num_child_types () const |
int | get_num_children_of_type (int type_index) const |
t_mode * | get_mode () const |
const t_pb * | find_pb (const t_pb_graph_node *gnode) const |
Returns the t_pb associated with the specified gnode which is contained within the current pb. More... | |
const t_pb * | find_pb_for_model (const std::string &blif_model) const |
const t_pb * | root_pb () const |
Returns the root pb containing this pb. More... | |
std::string | hierarchical_type_name () const |
Returns a string containing the hierarchical type name of a physical block. More... | |
BitIndex | atom_pin_bit_index (const t_pb_graph_pin *gpin) const |
Returns the bit index into the AtomPort for the specified primitive pb_graph_pin, considering any pin rotations which have been applied to logically equivalent pins. More... | |
void | set_atom_pin_bit_index (const t_pb_graph_pin *gpin, BitIndex atom_pin_bit_idx) |
For a given gpin, sets the mapping to the original atom netlist pin's bit index in it's AtomPort. More... | |
Data Fields | |
char * | name = nullptr |
t_pb_graph_node * | pb_graph_node = nullptr |
int | mode = 0 |
t_pb ** | child_pbs = nullptr |
t_pb * | parent_pb = nullptr |
t_pb_stats * | pb_stats = nullptr |
t_pb_routes | pb_route |
Representation of intra-logic block routing, t_pb_route describes all internal hierarchy routing. More... | |
int | clock_net = 0 |
Private Attributes | |
std::map< const t_pb_graph_pin *, BitIndex > | pin_rotations_ |
Contains the atom netlist port bit index associated with any primitive pins which have been rotated during clustering. More... | |
A t_pb represents an instance of a clustered block.
The instance may be: 1) A top level clustered block which is placeable at a location in FPGA device grid location (e.g. a Logic block, RAM block, DSP block), or 2) An internal 'block' representing an intermediate level of hierarchy inside a top level block (e.g. a BLE), or 3) A leaf (i.e. atom or primitive) block representing an element of netlist (e.g. LUT, flip-lop, memory slice etc.)
t_pb (in combination with t_pb_route) implement the mapping from the netlist elements to architectural instances.
BitIndex t_pb::atom_pin_bit_index | ( | const t_pb_graph_pin * | gpin | ) | const |
Returns the bit index into the AtomPort for the specified primitive pb_graph_pin, considering any pin rotations which have been applied to logically equivalent pins.
const t_pb * t_pb::find_pb | ( | const t_pb_graph_node * | gnode | ) | const |
Returns the t_pb associated with the specified gnode which is contained within the current pb.
const t_pb * t_pb::find_pb_for_model | ( | const std::string & | blif_model | ) | const |
t_mode * t_pb::get_mode | ( | ) | const |
int t_pb::get_num_child_types | ( | ) | const |
int t_pb::get_num_children_of_type | ( | int | type_index | ) | const |
|
inline |
Returns true if this pb has modes.
std::string t_pb::hierarchical_type_name | ( | ) | const |
Returns a string containing the hierarchical type name of a physical block.
Ex: clb[0][default]/lab[0][default]/fle[3][n1_lut6]/ble6[0][default]/lut6[0]
|
inline |
Returns true if this pb corresponds to a primitive block (i.e. LUT, FF, etc.)
|
inline |
Returns true if this block has not parent pb block.
const t_pb * t_pb::root_pb | ( | ) | const |
Returns the root pb containing this pb.
void t_pb::set_atom_pin_bit_index | ( | const t_pb_graph_pin * | gpin, |
BitIndex | atom_pin_bit_idx | ||
) |
For a given gpin, sets the mapping to the original atom netlist pin's bit index in it's AtomPort.
This is used to record any pin rotations which have been applied to logically equivalent pins
t_pb** t_pb::child_pbs = nullptr |
children pbs attached to this pb [0..num_child_pb_types - 1][0..child_type->num_pb - 1]
int t_pb::clock_net = 0 |
Records clock net driving a flip-flop, valid only for lowest-level, flip-flop PBs
int t_pb::mode = 0 |
mode that this pb is set to
char* t_pb::name = nullptr |
Name of this physical block
t_pb* t_pb::parent_pb = nullptr |
pointer to parent node
t_pb_graph_node* t_pb::pb_graph_node = nullptr |
pointer to pb_graph_node this pb corresponds to
t_pb_routes t_pb::pb_route |
Representation of intra-logic block routing, t_pb_route describes all internal hierarchy routing.
t_pb_route is an array of size [t_pb->pb_graph_node->total_pb_pins] Only valid for the top-level t_pb (parent_pb == nullptr). On any child pb, t_pb_route will be nullptr.
t_pb_stats* t_pb::pb_stats = nullptr |
statistics for current pb
|
private |
Contains the atom netlist port bit index associated with any primitive pins which have been rotated during clustering.