C++ API Reference¶
File Hierarchy¶
-
- Directory src
- Directory partition
- Directory refine
- Directory bucket
- File MoveBucket.h
- Directory core
- File RefinementContext.h
- File RefinementRunTypes.h
- File RefineTypes.h
- Directory engine
- File GainEvaluator.h
- File MoveApplier.h
- Directory pipeline
- File CandidatePoolService.h
- File CandidateProjectionService.h
- File CandidateSelector.h
- File FPGARemapper.h
- File StrategyPlanner.h
- File StrategyRunner.h
- File TimingMetricService.h
- Directory strategy
- File IRefineStrategy.h
- File LegacyRefine.h
- File StrategyFactory.h
- File RefinementFacade.h
- Directory bucket
- File coarsen.h
- File defs.h
- File evaluator.h
- File initial.h
- File partition.h
- File tools.h
- Directory refine
- Directory routing
- File routing.h
- Directory sta
- File HSBaseObj.h
- File HSCutNetFlow.h
- File HSCutOnlyFlow.h
- File HSGraphClock.h
- File HSIOTdmDelay.h
- File HSOuterEdge.h
- File HSPartitionFlow.h
- File HSPrefixTree.h
- File HSStaBase.h
- File HSTimingDelta.h
- File HSTimingEdge.h
- File HSTimingLocalData.h
- File HSTimingSlackRange.h
- File HSTimingUndo.h
- File sta.h
- Directory tdm
- File delay_lib.h
- File tdm.h
- Directory partition
- Directory src
Full API¶
Namespaces¶
Classes and Structs¶
- Struct DelayLibrary
- Struct Documentation
DelayLibrarydelayGio()delayMgt()slopeGio()slopeMgt()minRatio()maxRatio()minRatio()maxRatio()initDefaultScopeModels()parseScopeModels()buildFromJson()clampGio()clampMgt()delay()slope()modelFor()metaFor()delay()slope()delayGio()delayMgt()slopeGio()slopeMgt()choices()choices()hasChoice()hasChoice()discreteDelay()discreteDelay()giomgtgio_metamgt_metascoped_modelshas_scoped_modelsfitLinear()parsePoints()parseBypass()parseMeta()scopeIndex()normalizeName()parseScopeName()parseOffsetNs()addDelayOffset()modelUsable()inferBoundsFromPoints()buildGioBypassAndLowLinear()buildStandaloneModel()buildScopedModel()kDelayScopeCount
- Struct Documentation
- Struct PathStats
- Struct Documentation
PathStatstot_num_pathworst_cut_pathtot_cut_on_all_pathavg_cut_pathold_worst_slacknew_worst_slackcut_on_worstSlackOfOldcut_on_worstSlackOfNewnew_indexold_indextot_num_critical_pathtot_num_noncritical_pathworst_cut_critical_pathavg_cut_critical_pathnumber_non2critical_pathworst_cut_non2critical_pathavg_cut_non2critical_pathfpga_delaydie_delayworst_die_hopdie_hop_on_worstSlackOfOlddie_hop_on_worstSlackOfNewblock_pathtdm_path
- Struct Documentation
- Struct TimingPartitionConfig
- Struct Documentation
TimingPartitionConfigskip_path_timinghas_mul_clock_domainstiming_hold_solution_numguardband_flagextra_delay_cut_factorextra_delay_cutextra_delay_cut_dieextra_delay_cut_tdmextra_delay_tdmnet_timing_factor_coarsenet_timing_factor_refinepath_timing_factorpath_snaking_factortiming_exp_factorclock_periodhas_timing_propogatepropogate_effort_valuepath_slack_update_modeenable_partition_HSFulltimingenablePhase2Verificationonly_compare_timingmul_clock_attr
- Struct Documentation
- Template Class ConcurrentBucketMap
- Class Documentation
ConcurrentBucketMapConcurrentBucketMap()ConcurrentBucketMap()operator=()ConcurrentBucketMap()doParallelForAllBuckets()numBuckets()getBucket()reserve_for_estimated_number_of_insertions()insert()free()free()clear()clearParallel()Bucketalign_to_next_power_of_two()_num_buckets_mod_mask_spin_locks_bucketsBUCKET_FACTOR
- Class Documentation
- Class fpga
- Class Documentation
fpgacomputeCutWeight()computeMaxTdmDelayFromCutWeights()computeCutWeightsOld()computeCutWeights()resourcestopologymaxDistdistS_hatcutweights_assignmenthio_channel_assignmentmgt_channel_assignmentfpga_hierarchy_pathsbound_constraintneed_routingis_hierarchicalupper_resourceslower_resourcesdie_connectionsdie_to_fpga_mapdies_per_fpgaboard_countfpga_per_boardtdmEstimate
- Class Documentation
- Class HSCutNetFlow
- Nested Relationships
- Inheritance Relationships
- Class Documentation
HSFullTiming::HSCutNetFlowHSCutNetFlow()~HSCutNetFlow()buildFrom()buildFrom()buildFrom()getCutNetInfos()getCutEdge2CutNetIds()getCutNetTimingPaths()getCutNetTimingPathsJson()dumpCutNetTimingPaths()getCutNetTimingPathsInfo()getCutNets()clearCutNetData()cloneClocksFrom()buildCutNetEdgesFrom()buildCutNetNets()buildCompressedCutNetAdjacency()buildCompressedClockAdjacency()rebuildNode2EdgeIds()m_cutNetInfosm_cutEdge2CutNetIdsHSFullTiming::HSCutNetFlow::cut_netHSFullTiming::HSCutNetFlow::CutNetInfoHSFullTiming::HSCutNetFlow::CutNetKeyHSFullTiming::HSCutNetFlow::CutNetTimingPath
- Class HSCutOnlyFlow
- Inheritance Relationships
- Class Documentation
HSFullTiming::HSCutOnlyFlowHSCutOnlyFlow()HSCutOnlyFlow()~HSCutOnlyFlow()buildFrom()buildFrom()setPartInfo()getPartInfo()getNew2OldEdgeIds()getOld2NewEdgeIds()clearCompactMaps()cloneClocksFrom()buildCutEdgeMaps()buildOuterEdgesFrom()buildCutNetsFrom()buildCompressedCutAdjacency()buildCompressedClockAdjacency()rebuildNode2EdgeIds()m_new2OldEdgeIdsm_old2NewEdgeIdsm_partInfo
- Class HSIOTdmDelay
- Class Documentation
HSFullTiming::HSIOTdmDelayHSIOTdmDelay()setAverageCutDelay()setIOInfo()getIOInfo()setCutSizeArray()isEmptyIO()setupTdmCutDelay()getTdmCutDelay()getTdmCutDelay()getTdmCutArray()getCutSizeArrayRouting()getChannelMargin()printTdmArrayInfo()printIOInfo()getIllegalDelay()isIllegal()getGroupDatas()getNetAll()m_defaultDelayMaxinitialChannelMargin()setupTdmCutDelayWithNet()setupTdmCutDelay()getMaxConnNum()getDirectTdmDelay()getTdmRatio4Delay()updateDissArray()updateTdmCutDelayDirectly()updateTdmCutDelayRouting()m_ioConnArraym_ratio2delaysm_cutSizeArraym_cutSizeArrayRoutingm_netAllm_cutSizem_channelMarginm_marginAllm_cutDelayAveragem_tdmCutDelaym_curConnectionSizem_bIllegal
- Class Documentation
- Class HSPartitionFlow
- Inheritance Relationships
- Class Documentation
HSFullTiming::HSPartitionFlowHSPartitionFlow()~HSPartitionFlow()cleanPartition()cleanOurPartition()deleteOurLocalData()parseInput()buildLocalData()trim()buildLocalData()cloneOurLocalData()mergeEdgePaths()printEdgePathReport()expandPaths()getEdgePaths()getEdgePathReport()getHyperNodeNum()getTimingPaths()getSlackRange()setEdgeInfos()setPin2Edge()hasLocalDatas()get_m_outerEdgeAll()get_m_netAll()getNetAll()getEdge2NetId()get_m_clkAll()get_edgeInfos()get_pin2Edge()setEdgePortNames()get_m_localDatas()get_m_ourLocalDatas()get_ins_paths()get_m_insPin_net()getOurLocalData()addOneLocalData()paramCal()storeClockAttr()printTopkMinSlack()getTopkCutPaths()dumpTopkCutPaths()initSlackRange()setSlackRange()buildEdge2NetId()m_hyperNodeNumm_netAllm_edge2NetIdm_localDatasm_ourLocalDatasedgeInfospin2Edgeins_pathsm_insPin_net
- Class HSStaBase
- Nested Relationships
- Inheritance Relationships
- Class Documentation
HSFullTiming::HSStaBaseHSStaBase()~HSStaBase()cleanBase()buildNextObjInfo()pathCount()buildLocalData()getOuterEdge()getNextData()getPreData()getNextData()getPreData()getClk2NextData()getClk2PreData()getNode2EdgeIds()getCutDelay()getMaxLevel()setCutDelay()m_maxLevelm_outerEdgeAllm_outerEdge2nextm_outerEdge2prem_clk2nextm_clk2prem_clkAllm_node2edgeIdsm_cutDelayHSFullTiming::HSStaBase::timingpath
- Class HSTimingDelta
- Nested Relationships
- Class Documentation
HSFullTiming::HSTimingDeltaHSTimingDelta()~HSTimingDelta()updateTimingEdge()updateTimingEdge()getPartDelta()getEnableDelta()getSlackDelta()getHop2DataCnt()getEdgeSlackBucketCntDelta()getNetPair2EdgeMinSlackBucketCntByNetDelta()getNetPair2MinSlackBucketByNetDelta()getNetCutSlack2Cnt()getMaxHop()getMaxHopDataCnt()estimateTopkMinSlackSum()getWorstIndex()getCriticalCut()removeDataCnt()addDataCnt()getCutDelay()getOldCutDelay()getFPGADistance()getOldFPGADistance()getPart()getEnable()makeKey()getSlackData()getSlackData_ReadOnly()getSlackDataRW()getSlackDataByPtr()getEdgeSlackBucketCnt_ReadOnly()getEdgeSlackBucketCntRW()getNetPair2EdgeMinSlackBucketCntByNet_ReadOnly()getNetPair2EdgeMinSlackBucketCntByNetRW()getNetPair2MinSlackBucketByNet_ReadOnly()getNetPair2MinSlackBucketByNetRW()updateTimingEdge()setWorseSlack()getSlackIndex()getFPGADistanceByPart()getTimingCutPairKey()getNetCutMinSlackBucket()getEdgeMinSlackBucket()getMinSlackBucket()updateNetCutSlackOnEdgeMinChange()updateNetCutSlackStatsForEdges()m_parentm_localDatam_outerEdgeAllm_timingEdgeAllm_partInfom_cutDelaysm_fpgaDistancesm_edgeSlackBucketCntBasem_netPair2EdgeMinSlackBucketCntByNetBasem_netPair2MinSlackBucketByNetBasepartDeltaenableDeltaslackDeltam_hop2DataCntm_edgeSlackBucketCntDeltam_netPair2EdgeMinSlackBucketCntByNetDeltam_netPair2MinSlackBucketByNetDeltam_netCutSlack2CntkInvalidTimingCutPairKeykTimingCutPairKeyBasekInvalidSlackBucketHSFullTiming::HSTimingDelta::traceInfo
- Class HSTimingLocalData
- Nested Relationships
- Class Documentation
HSFullTiming::HSTimingLocalDataHSTimingLocalData()~HSTimingLocalData()clone()buildTimingEdge()setHasCutDelay()updatePartInfo()updatePartInfo()getPartInfo()updateTimingEdge()updateTimingEdge()updateTimingEdge()getTimingEdge()getOuterEdge()getCutDelays()getFPGADistances()setEnableRollback()rollbackUndo()compare()verifyHop2DataCnt()getMaxHop()getMaxHopDataCnt()estimateTopkMinSlackSum()setTopkMinSlackRatio()getTopkMinSlackRatio()getHop2DataCnt()getTopkMinSlack()getMinSlack()getPercentileSlack()getAverageSlack()printTopkPaths()dumpTopkSlackToFile()dumpNetCutSlackToFile()applyDelta()setCutDelays()setFPGADistances()getParent()getCutDelay()getFPGADistance()addSlackUndo()removeDataCnt()addDataCnt()setCutWeights()computeCutDelta()getId()setTdmEstimate()updateCutDelays()isEmptyIO()getWorstIndex()getCriticalCut()getNetPair2MinSlackBucketByNet()getEdgeSlackBucketCnt()getNetPair2EdgeMinSlackBucketCntByNet()getNetCutSlack2Cnt()getOldCutDelay()getOldFPGADistance()clearTimingEdge()initTimingEdge()updateTimingEdge()rebuildNetCutSlackStats()updateNetCutSlackStatsForEdges()getTimingCutPairKey()getNetCutMinSlackBucket()getEdgeMinSlackBucket()getMinSlackBucket()updateNetCutSlackOnEdgeMinChange()getSlackIndex()getFPGADistanceByPart()m_parentm_outerEdgeAllm_timingEdgeAllm_partInfom_cutDelaysm_fpgaDistancesm_hasCutDelaym_cutWeightsm_tdmEstimatem_hop2DataCntm_netCutSlack2Cntm_edgeSlackBucketCntm_netPair2EdgeMinSlackBucketCntByNetm_netPair2MinSlackBucketByNetm_enableRollbackm_incUpdatem_partUndom_enableUndom_slackUndom_hop2DataCntUndom_edgeSlackBucketCntUndom_netPair2EdgeMinSlackBucketCntUndom_netPair2MinSlackBucketUndom_netCutSlack2CntUndom_topkMinSlackRatiokInvalidTimingCutPairKeykTimingCutPairKeyBasekInvalidSlackBucketkDefaultTopkMinSlackRatioHSFullTiming::HSTimingLocalData::traceInfo
- Class Initial
- Class Documentation
InitialInitial()initialPartition()COCP_ILP()constructGraph()improvedSPFA()selectInitialNodes()randomPart()greedyPart()progressiveMinCutPart()calculateGain()growPart()globalGrowPart()sequentialGrowPart()roundRobinGrowPart()initialPartitionTopo()has_fixforce_topomultilevel_idmax_hopnum_initial_solutionsnum_best_initial_solutionshypergraph
- Class Documentation
- Template Class MovePriorityQueue
- Class Documentation
MovePriorityQueueMovePriorityQueue()clear()compare_element()heap_up()heap_down()change_priority()insert()top()pop()remove()get()check()get_active()set_active()get_total()MapTypemapGet()mapSet()mapErase()mapHas()mapClear()active_g_total_max_level_vertices_map_gains_keyOf()Parent()Left()Right()
- Class Documentation
- Class MultilevelCoarsener
- Class Documentation
MultilevelCoarsenerbuildGroupedGraph()deduplicateHyperedges()setCoarsenOrder()setMultilevelId()getMultilevelId()COCP_coarsen()MultilevelCoarsener()multilevelCoarsening()levelisolated_nodesgraphsmapsmap2originscalTimingPathForGroup()computeGroupGraph()candidatePropagation()intersection()coarsening()contraction()parallelContraction()fpgasfpga_numindexmultilevel_idhas_fixhas_regionhas_ioforce_topohas_timinglarge_net_thresholdbetacoarsening_ratiocoarsen_methodenable_weight_penaltythr_coarsen_verticeseedthreadresources_in_one_FPGAcoarsen_orderscore_mapmatched_score_maptmp_netstmp_incident_nodeshyperedge_cluster_id_vec_maps
- Class Documentation
- Class Routing
- Class Documentation
RoutingLinkTypeRouting()edge_lib()die_routing()die_routing_1()die_routing_huang()board_routing_huang()die_routing_old()die_routing_direction()die_routing_synergistic_paper()die_routing_near_optimal_paper()board_routing_synergistic_paper()board_routing_near_optimal_paper()die_routing_negotiation_paper()export_routing_trees()die_graph_from_connections()build_board_capacity_from_connections()init_mat()ensure_type_aware_mats()typed_edge_weight()dijkstra_typed()apply_path_and_update()route_one_net_gio_mgt()route_nets_gio_mgt_min_delay()adjust_die_graph_direction()adjust_die_graph_direction_old()adjust_die_graph_direction_contest()adjust_die_graph_direction_update()check_cut()calc_die_dist()routing_huang_impl()export_cut_info()build_target_net_order()recompute_cut_slack()classify_critical_nets()routing()lib_delay()lib_slope()delay_scope_for_parts()scoped_lib_delay()scoped_lib_slope()finestdie_partsfpgasdie_connectionsmul_clock_attrsimpleTimingsroute_treesroute_trees_edgescut_timing_pathscut_netscut_matboard_capacitydie_graphdie_physical_linksdie_gio_linksdie_mgt_linkscost_matinc_matdie_distrouting_graphcut_to_tp_iddelayLibtdm_matcutweightscut_delaytdm_delaydie_delaytdm_awaretiming_routing_cost_modetiming_hop_penalty_multiplierhas_dieclock_periodchannel_grouping_capacitydisabled_edgesload_gioload_mgtdelayLibReadyabcmax_negotiation_iterfreecong_alphacong_lambdalambda_jumpINFWtotalimprove_epscontestuse_hierarchy_delayINF_COSTflatten_id()unflatten_id()routing_cost_factor
- Class Documentation
- Class Tdm
- Class Documentation
Tdmroute_treesdie_physical_linksdie_gio_linksdie_mgt_linksdie_graphcut_timing_pathscut_netscut_matmul_clock_attrcut_to_tp_idfinestnode_to_route_partdie_connectionsboard_capacityroute_trees_edgeslib_delay()lib_slope()delay_scope_for_parts()scoped_lib_delay()scoped_lib_slope()lib_rmin()lib_rmax()is_mgt_ratio()is_bypass_ratio()mgt_benefit_from_ratio()relief_pack_one_dir()lib_from_ratio()choices_for()tdm_assign()tdm_assign_optimized_legacy()tdm_assign_optimized()tdm_assign_optimized_contest()tdm_assign_avg_only()tdm_assign_optimized_1()tdm_assign_optimized_2()tdm_assign_optimized_3()init_average()build_try_ratios_from_lib()tdm_continuous_assignment_optimized()assign_continuous_paper()discretise_dp_paper()compute_RW_net()legalize_per_group()tdm_discretization_dp()compute_RW()init_net_criticality()tdm_assign_paper()refine_continuous_paper()tdm_assign_synergistic_paper()tdm_assign_near_optimal_paper()enter_paper_experiment_mode()build_paper_timing_path_edges()legalize_paper_wire_assignment()mgt_benefit()make_subgroup_single_dir()required_roots_bestcase()pack_subset_assign()build_try_ratios_from_lib()select_and_pack_one_dir()discretize_group_separate_libs()discretize_group_gio_baseline()discretize_pure_gio_then_sequential_mgt()improve_all_groups_with_mgt_slack_guided()improve_one_dir_slack_guided()set_continuous_capacity_baseline()build_edge_in_any_cut_path()log_timing_vs_non_timing_tdm_usage()mgt_lanes_needed_same_clock()mgt_assign_feasible_same_clock()mgt_lanes_needed_mixed_ratio()mgt_channel_packable_dir()pack_dir_by_sets()repack_dir_by_lib_sets()split_group_base()split_group()apply_gio_root_split()optimize_group_gio_root_split()apply_final_polish()apply_gio_capacity_fill()apply_mgt_channel_polish()legalize_all_gio_dir_bucket_overflow()apply_score_batch_reallocation()apply_score_polish()socket_packable_dir()socket_packable_dir_with_map()socket_packable_dir()update_edge_mu_for_worst_slack()tdm_root_split_enabled()tdm_final_polish_enabled()tdm_postprocess_enabled()tdm_mu_slack_enabled()pick_choice()get_min_bound_typed()get_min_wire_typed()get_min_wire_common()get_min_bound_common()get_end_idx()get_min_wire()get_min_bound()get_min_bound_lib()get_min_wire_lib()eval_worst_delay_discrete()eval_worst_net_rw_current()eval_worst_net_rw_discrete()log_contest_worst_nets()eval_min_slack_discrete()export_tdm_solution()export_contest_outputs()assign_group_sockets()build_tdm()buildGraphEdges()topological_sort_kahn()tdm_local_search()compute_arrival_times()log_worst_slack_path()log_cut_worst_slack_path()log_ratio_comparison()format_fpga_die()collect_group_sockets_from_connections()populate_timing_edge_ports()project_group_ratios_exact()seed_base_ratio_by_mu()edge_delay_from_assign()refresh_all_tdm_delay_from_assign()log_worst_cut_path_brief()get_worst_cut_path_eids()try_reduce_critical_edge_ratio()try_reduce_critical_edge_ratio_to_target()rescue_single_tdm_edge_worst_path()rescue_worst_path_edge_ratio()export_contest_route_result()export_contest_tdm_result()count_dir_bypass_channels_need()gio_cap_channels_from_roots()Tdm()tdm_group_mapnode_mapsedge_maptdm_groupstiming_edgestdm_choicesmgt_ratioscut_delaytdm_delaydie_delayclock_periodenable_netchannel_grouping_capacityis_directeddelayLibReadyhas_diehas_timingcontestdebug_modesolver_threadslog_topktdm_fast_modeuse_worst_slack_objectiveallow_mgt_on_non_timing_edgesuse_hierarchy_delaytdm_opt_modeboard_count_hintfpga_per_board_hintfpga_hierarchy_pathsINIT_LRMAX_LRMIN_LRTDM_RATIO_EPSmin_ratiomax_ratioR_STEPR_MAXR_MINdelayLibprepare_graph_and_topology()analyze_arrival_and_trace()init_dual_state_from_topology()normalize_and_rescue_tdm_assignments()compute_dst_arrival_from_current_delay()choose_lib_continuous_for_group()project_edges_with_capacity_()edge_lib()max_itersconvergence_thresholdconvergence_numstable_numdecay_factorinitial_learning_ratedecay_basedecay_rate
- Class Documentation
- Class tdm_group
- Class Documentation
tdm_groupleft_partright_partbackward_idcapacitycap_contedgesleft_socketsright_socketsforward_capacitybackward_capacitylambdalearning_rateis_mgtgio_linksmgt_linkschannel_capacity_modegio_channel_capacitymgt_channel_capacityfwd_cap_giobwd_cap_giofwd_cap_mgtbwd_cap_mgtcap_cont_giocap_cont_mgtcap_cont_gio_fwdcap_cont_gio_bwdcap_cont_mgt_fwdcap_cont_mgt_bwd
- Class Documentation
- Class timingEvaluator
- Class Documentation
timingEvaluatortimingEvaluator()timingEvaluator()timingEvaluator()timingEvaluator()~timingEvaluator()getNetTimingFactorCoarse()getNetTimingFactorRefine()getPathtimingfactor()getPathSnakingFactor()getTimingExpFactor()getGuardbandFlag()getTimingPropogateFlag()getPropogaEffortValue()getPathSlackUpdateMode()getEnablePartitionHSFulltiming()getSkipPathTiming()getMulClockStatus()getPinSlacks()getInsPinPaths()getTimingPaths()getOriginHgraph()getClockAttr()init()getCutOnPath()getTimingCutsOld()PrintPathStatsOld()getTimingCuts2()PrintSlackStats()PrintPathStats()getWorstSlackAfterCutsForOldSlack()getWorstSlackAfterCutsForOldSlackConsideringTDM()getWorstSlackAfterCuts()calCutNetgCost()calCutPathCost()getCutPathsCost()getCutHyperedges()updateTiming()preprocessPpath()getCutEdgeIds()convertPathToSimpleTiming()getCutEdgePath()contractionPath()getPathContraction()newInfoMerge()propogateOld1()propogateOld2()propogateNew()foutnet_timing_factor_coarsenet_timing_factor_refinepath_timing_factorpath_snaking_factortiming_exp_factorguardband_flaghas_timing_propogatepropogate_effort_valuepath_slack_update_modeenable_partition_HSFulltimingskip_path_timingpin_minslackpin_pathsoriginal_timing_pathsmulClock_statusoriginHgraphclockAttr
- Class Documentation