@@ -954,88 +954,77 @@ enum class e_move_type;
954
954
955
955
/* *
956
956
* @brief Various options for the placer.
957
- *
958
- * @param place_algorithm
959
- * Controls which placement algorithm is used.
960
- * @param place_quench_algorithm
961
- * Controls which placement algorithm is used
962
- * during placement quench.
963
- * @param timing_tradeoff
964
- * When in CRITICALITY_TIMING_PLACE mode, what is the
965
- * tradeoff between timing and wiring costs.
966
- * @param place_chan_width
967
- * The channel width assumed if only one placement is performed.
968
- * @param pad_loc_type
969
- * Are pins FREE or fixed randomly.
970
- * @param constraints_file
971
- * File that specifies locations of locked down (constrained)
972
- * blocks for placement. Empty string means no constraints file.
973
- * @param write_initial_place_file
974
- * Write the initial placement into this file. Empty string means
975
- * the initial placement is not written.
976
- * @param pad_loc_file
977
- * File to read pad locations from if pad_loc_type is USER.
978
- * @param place_freq
979
- * Should the placement be skipped, done once, or done
980
- * for each channel width in the binary search. (Default: ONCE)
981
- * @param recompute_crit_iter
982
- * How many temperature stages pass before we recompute
983
- * criticalities based on the current placement and its
984
- * estimated point-to-point delays.
985
- * @param inner_loop_crit_divider
986
- * (move_lim/inner_loop_crit_divider) determines how
987
- * many inner_loop iterations pass before a recompute
988
- * of criticalities is done.
989
- * @param td_place_exp_first
990
- * Exponent that is used in the CRITICALITY_TIMING_PLACE
991
- * mode to specify the initial value of `crit_exponent`.
992
- * After we map the slacks to criticalities, this value
993
- * is used to `sharpen` the criticalities, making connections
994
- * with worse slacks more critical.
995
- * @param td_place_exp_last
996
- * Value that the crit_exponent will be at the end.
997
- * @param doPlacement
998
- * True if placement is supposed to be done in the CAD flow.
999
- * False if otherwise.
1000
- * @param place_constraint_expand
1001
- * Integer value that specifies how far to expand the floorplan
1002
- * region when printing out floorplan constraints based on
1003
- * current placement.
1004
- * @param place_constraint_subtile
1005
- * True if subtiles should be specified when printing floorplan
1006
- * constraints. False if not.
1007
- * @param place_auto_init_t_scale
1008
- * When the annealer is using the automatic schedule, this option
1009
- * scales the initial temperature selected.
1010
957
*/
1011
958
struct t_placer_opts {
959
+ // / Controls which placement algorithm is used.
1012
960
t_place_algorithm place_algorithm;
961
+
962
+ // / Controls which placement algorithm is used during placement quench.
1013
963
t_place_algorithm place_quench_algorithm;
1014
- t_annealing_sched anneal_sched; // /<Placement option annealing schedule
964
+
965
+ // / Placement option annealing schedule
966
+ t_annealing_sched anneal_sched;
967
+
968
+ // / When in CRITICALITY_TIMING_PLACE mode, what is the tradeoff between timing and wiring costs.
1015
969
float timing_tradeoff;
970
+
1016
971
float congestion_factor;
1017
972
float congestion_rlim_trigger_ratio;
1018
973
float congestion_chan_util_threshold;
974
+
975
+ // / The channel width assumed if only one placement is performed.
1019
976
int place_chan_width;
977
+
978
+ // / Are pins FREE or fixed randomly.
1020
979
enum e_pad_loc_type pad_loc_type;
980
+
981
+ // / File that specifies locations of locked down (constrained) blocks for placement. Empty string means no constraints file.
1021
982
std::string constraints_file;
983
+
984
+ // / Write the initial placement into this file. Empty string means the initial placement is not written.
1022
985
std::string write_initial_place_file;
986
+
1023
987
std::string read_initial_place_file;
988
+
989
+ // / Should the placement be skipped, done once, or done for each channel width in the binary search. (Default: ONCE)
1024
990
enum pfreq place_freq;
991
+
992
+ // / How many temperature stages pass before we recompute criticalities
993
+ // / based on the current placement and its estimated point-to-point delays.
1025
994
int recompute_crit_iter;
995
+
996
+ // / (move_lim/inner_loop_crit_divider) determines how many inner_loop iterations pass before a recompute of criticalities is done.
1026
997
int inner_loop_recompute_divider;
998
+
1027
999
int quench_recompute_divider;
1000
+
1001
+ /* *
1002
+ * Exponent that is used in the CRITICALITY_TIMING_PLACE mode to specify the initial value of `crit_exponent`.
1003
+ * After we map the slacks to criticalities, this value is used to `sharpen` the criticalities, making
1004
+ * connections with worse slacks more critical.
1005
+ */
1028
1006
float td_place_exp_first;
1007
+
1029
1008
int seed;
1009
+
1010
+ // / Value that the crit_exponent will be at the end.
1030
1011
float td_place_exp_last;
1012
+
1013
+ // / True if placement is supposed to be done in the CAD flow. False if otherwise.
1031
1014
e_stage_action doPlacement;
1015
+
1032
1016
float rlim_escape_fraction;
1017
+
1033
1018
std::string move_stats_file;
1019
+
1034
1020
int placement_saves_per_temperature;
1021
+
1035
1022
e_place_effort_scaling effort_scaling;
1023
+
1036
1024
e_timing_update_type timing_update_type;
1037
1025
1038
1026
PlaceDelayModelType delay_model_type;
1027
+
1039
1028
e_reducer delay_model_reducer;
1040
1029
1041
1030
float delay_offset;
@@ -1050,23 +1039,40 @@ struct t_placer_opts {
1050
1039
1051
1040
std::string write_placement_delay_lookup;
1052
1041
std::string read_placement_delay_lookup;
1042
+
1053
1043
vtr::vector<e_move_type, float > place_static_move_prob;
1044
+
1054
1045
bool RL_agent_placement;
1055
1046
bool place_agent_multistate;
1056
1047
bool place_checkpointing;
1048
+
1057
1049
int place_high_fanout_net;
1050
+
1058
1051
e_place_bounding_box_mode place_bounding_box_mode;
1052
+
1059
1053
e_agent_algorithm place_agent_algorithm;
1054
+
1060
1055
float place_agent_epsilon;
1061
1056
float place_agent_gamma;
1062
1057
float place_dm_rlim;
1058
+
1063
1059
e_agent_space place_agent_space;
1060
+
1064
1061
std::string place_reward_fun;
1062
+
1065
1063
float place_crit_limit;
1064
+
1065
+
1066
+ // / Integer value that specifies how far to expand the floorplan region when
1067
+ // / printing out floorplan constraints based on current placement.
1066
1068
int place_constraint_expand;
1069
+
1070
+ // / True if subtiles should be specified when printing floorplan constraints. False if not.
1067
1071
bool place_constraint_subtile;
1072
+
1068
1073
int floorplan_num_horizontal_partitions;
1069
1074
int floorplan_num_vertical_partitions;
1075
+
1070
1076
bool place_quench_only;
1071
1077
1072
1078
int placer_debug_block;
@@ -1082,6 +1088,7 @@ struct t_placer_opts {
1082
1088
1083
1089
e_place_delta_delay_algorithm place_delta_delay_matrix_calculation_method;
1084
1090
1091
+ // / When the annealer is using the automatic schedule, this option scales the initial temperature selected.
1085
1092
float place_auto_init_t_scale;
1086
1093
};
1087
1094
@@ -1091,63 +1098,42 @@ struct t_placer_opts {
1091
1098
1092
1099
/* *
1093
1100
* @brief Various options for the Analytical Placer.
1094
- *
1095
- * @param doAnalyticalPlacement
1096
- * True if analytical placement is supposed to be done in the CAD
1097
- * flow. False if otherwise.
1098
- * @param analytical_solver_type
1099
- * The type of analytical solver the Global Placer in the AP flow
1100
- * will use.
1101
- * @param partial_legalizer_type
1102
- * The type of partial legalizer the Global Placer in the AP flow
1103
- * will use.
1104
- * @param full_legalizer_type
1105
- * The type of full legalizer the AP flow will use.
1106
- * @param detailed_placer_type
1107
- * The type of detailed placter the AP flow will use.
1108
- * @param ap_timing_tradeoff
1109
- * A trade-off parameter used to decide how focused the AP flow
1110
- * should be on optimizing timing over wirelength.
1111
- * @param ap_high_fanout_threshold;
1112
- * The threshold to ignore nets with higher fanout than that
1113
- * value while constructing the solver.
1114
- * @param ap_partial_legalizer_target_density
1115
- * Vector of strings passed by the user to configure the target
1116
- * density of different physical tiles on the device.
1117
- * @param appack_max_dist_th
1118
- * Array of string passed by the user to configure the max candidate
1119
- * distance thresholds.
1120
- * @param num_threads
1121
- * The number of threads the AP flow can use.
1122
- * @param log_verbosity
1123
- * The verbosity level of log messages in the AP flow, with higher
1124
- * values leading to more verbose messages.
1125
- * @param generate_mass_report
1126
- * Whether to generate a mass report during global placement or not.
1127
1101
*/
1128
1102
struct t_ap_opts {
1103
+ // / True if analytical placement is supposed to be done in the CAD flow. False if otherwise.
1129
1104
e_stage_action doAP;
1130
1105
1106
+ // / The type of analytical solver the Global Placer in the AP flow will use.
1131
1107
e_ap_analytical_solver analytical_solver_type;
1132
1108
1109
+ // / The type of partial legalizer the Global Placer in the AP flow will use.
1133
1110
e_ap_partial_legalizer partial_legalizer_type;
1134
1111
1112
+ // / The type of full legalizer the AP flow will use.
1135
1113
e_ap_full_legalizer full_legalizer_type;
1136
1114
1115
+ // / The type of detailed placer the AP flow will use.
1137
1116
e_ap_detailed_placer detailed_placer_type;
1138
1117
1118
+ // / A trade-off parameter used to decide how focused the AP flow should be on optimizing timing over wirelength.
1139
1119
float ap_timing_tradeoff;
1140
1120
1121
+ // / The threshold to ignore nets with higher fanout than that value while constructing the solver.
1141
1122
int ap_high_fanout_threshold;
1142
1123
1124
+ // / Vector of strings passed by the user to configure the target density of different physical tiles on the device.
1143
1125
std::vector<std::string> ap_partial_legalizer_target_density;
1144
1126
1127
+ // / Array of string passed by the user to configure the max candidate distance thresholds.
1145
1128
std::vector<std::string> appack_max_dist_th;
1146
1129
1130
+ // / The number of threads the AP flow can use.
1147
1131
unsigned num_threads;
1148
1132
1133
+ // / The verbosity level of log messages in the AP flow, with higher values leading to more verbose messages.
1149
1134
int log_verbosity;
1150
1135
1136
+ // / Whether to generate a mass report during global placement or not.
1151
1137
bool generate_mass_report;
1152
1138
};
1153
1139
0 commit comments