Verilog to Routing - VPR
Public Member Functions | Data Fields | Private Attributes
t_pb Class Reference

A t_pb represents an instance of a clustered block. More...

#include <vpr_types.h>

Collaboration diagram for t_pb:
Collaboration graph
[legend]

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_pbfind_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_pbfind_pb_for_model (const std::string &blif_model) const
 
const t_pbroot_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_pbparent_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 *, BitIndexpin_rotations_
 Contains the atom netlist port bit index associated with any primitive pins which have been rotated during clustering. More...
 

Detailed Description

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.

Member Function Documentation

◆ atom_pin_bit_index()

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.

◆ find_pb()

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.

◆ find_pb_for_model()

const t_pb * t_pb::find_pb_for_model ( const std::string &  blif_model) const

◆ get_mode()

t_mode * t_pb::get_mode ( ) const

◆ get_num_child_types()

int t_pb::get_num_child_types ( ) const

◆ get_num_children_of_type()

int t_pb::get_num_children_of_type ( int  type_index) const

◆ has_modes()

bool t_pb::has_modes ( ) const
inline

Returns true if this pb has modes.

◆ hierarchical_type_name()

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]

◆ is_primitive()

bool t_pb::is_primitive ( ) const
inline

Returns true if this pb corresponds to a primitive block (i.e. LUT, FF, etc.)

◆ is_root()

bool t_pb::is_root ( ) const
inline

Returns true if this block has not parent pb block.

◆ root_pb()

const t_pb * t_pb::root_pb ( ) const

Returns the root pb containing this pb.

◆ set_atom_pin_bit_index()

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

Field Documentation

◆ child_pbs

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]

◆ clock_net

int t_pb::clock_net = 0

Records clock net driving a flip-flop, valid only for lowest-level, flip-flop PBs

◆ mode

int t_pb::mode = 0

mode that this pb is set to

◆ name

char* t_pb::name = nullptr

Name of this physical block

◆ parent_pb

t_pb* t_pb::parent_pb = nullptr

pointer to parent node

◆ pb_graph_node

t_pb_graph_node* t_pb::pb_graph_node = nullptr

pointer to pb_graph_node this pb corresponds to

◆ pb_route

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.

◆ pb_stats

t_pb_stats* t_pb::pb_stats = nullptr

statistics for current pb

◆ pin_rotations_

std::map<const t_pb_graph_pin*, BitIndex> t_pb::pin_rotations_
private

Contains the atom netlist port bit index associated with any primitive pins which have been rotated during clustering.


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