vpr/src/pack/cluster.cpp
/**
 * This function takes a chain molecule, and the pb_graph_node that is chosen
 * for packing the molecule's root block. Using the given root_primitive, this
 * function will identify which chain id this molecule is being mapped to and
 * will update the chain id value inside the chain info data structure of this
 * molecule
 */
This function takes a chain molecule, and the pb_graph_node that is chosen
for packing the molecule's root block. Using the given root_primitive, this
function will identify which chain id this molecule is being mapped to and
will update the chain id value inside the chain info data structure of this
molecule
This function takes a chain molecule and the pb_graph_node that is chosen for packing the molecule ' s root block . Using the given root_primitive this function will identify which chain id this molecule is being mapped to and will update the chain id value inside the chain info data structure of this molecule
static void update_molecule_chain_info(t_pack_molecule* chain_molecule, const t_pb_graph_node* root_primitive) {
    VTR_ASSERT(chain_molecule->chain_info->chain_id == -1 && chain_molecule->chain_info->is_long_chain);
    auto chain_root_pins = chain_molecule->pack_pattern->chain_root_pins;
    for (size_t chainId = 0; chainId < chain_root_pins.size(); chainId++) {
        if (chain_root_pins[chainId][0]->parent_node == root_primitive) {
            chain_molecule->chain_info->chain_id = chainId;
            chain_molecule->chain_info->first_packed_molecule = chain_molecule;
            return;
        }
    }
    VTR_ASSERT(false);
}
static void update_molecule_chain_info ( t_pack_molecule * chain_molecule , const t_pb_graph_node * root_primitive ) { VTR_ASSERT ( chain_molecule -> chain_info -> chain_id == -1 && chain_molecule -> chain_info -> is_long_chain ) ; auto chain_root_pins = chain_molecule -> pack_pattern -> chain_root_pins ; for ( size_t chainId = 0 ; chainId < chain_root_pins . size ( ) ; chainId ++ ) { if ( chain_root_pins [ chainId ] [ 0 ] -> parent_node == root_primitive ) { chain_molecule -> chain_info -> chain_id = chainId ; chain_molecule -> chain_info -> first_packed_molecule = chain_molecule ; return ; } } VTR_ASSERT ( false ) ; }
This function takes a chain molecule, and the pb_graph_node that is chosen
 for packing the molecule's root block.
This function takes a chain molecule and the pb_graph_node that is chosen for packing the molecule ' s root block .
// long chains should only be placed at the beginning of the chain // Since for long chains the molecule size is already equal to the // total number of adders in the cluster. Therefore, it should // always be placed at the very first adder in this cluster.