@@ -705,17 +705,75 @@ enum e_stage_action {
705705/* *
706706 * @brief Options for packing
707707 *
708- * TODO: document each packing parameter
708+ * @param circuit_file_name
709+ * Path to technology mapped user circuit in BLIF format.
710+ * @param output_file
711+ * Path to packed user circuit in net format.
712+ * @param timing_driven
713+ * Whether or not to do timing driven clustering. (Default: on)
714+ * @param timing_gain_weight
715+ * Controls the optimization of timing vs area in timing driven
716+ * clustering.
717+ * A value of 0 focuses only on area; 1 focuses only on timing.
718+ * (Default: 0.75)
719+ * @param connection_gain_weight
720+ * Controls the optimization of smaller net absorption vs. signal
721+ * sharing in connection driven clustering.
722+ * A value of 0 focuses solely on signal sharing; a value of 1
723+ * focuses solely on absorbing smaller nets into a cluster.
724+ * (Default: 0.9)
725+ * @param cluster_seed_type
726+ * Selection algorithm for selecting next seed. (Default: blend2 if
727+ * timing_driven is on; max_inputs otherwise)
728+ * @param target_device_utilization
729+ * Sets the target device utilization. (Default: 1.0)
730+ * @param allow_unrelated_clustering
731+ * Allows primitives which have no attraction to the given cluster
732+ * to be packed into it. (Default: auto)
733+ * @param connection_driven
734+ * Controls whether or not packing prioritizes the absorption of nets
735+ * with fewer connections into a complex logic block over nets with
736+ * more connections. (Default: on)
737+ * @param pack_verbosity
738+ * Controls how verbose clustering's output is. (Default: 2)
739+ * @param enable_pin_feasibility_filter
740+ * Counts the number of available pins in groups/classes of mutually
741+ * connected pins within a cluster, then filters out candidate
742+ * primitives/atoms/molecules for which the cluster has insufficient
743+ * pins to route (without performing a full routing). (Default: on)
744+ * @param balance_block_type_utilization
745+ * If enabled, when a primitive can potentially be mapped to multiple
746+ * block types the packer will pick the block type which (currently)
747+ * has the lowest utilization. (Default: auto)
748+ * @param target_external_pin_util
749+ * Sets the external pin utilization target. (Default: auto)
750+ * @param prioritize_transitive_connectivity
751+ * Whether transitive connectivity is prioritized over high-fanout
752+ * connectivity. (Default: on)
753+ * @param feasible_block_array_size
754+ * Max size of the priority queue for candidates that pass the early
755+ * filter legality test, but not the more detailed routing test.
756+ * (Default: 30)
757+ * @param doPacking
758+ * Run packing stage.
759+ * @param device_layout
760+ * Controls which device layout/floorplan is used from the
761+ * architecture file. (Default: smallest device which satisfies the
762+ * circuit's resource requirements)
763+ * @param timing_update_type
764+ * Controls how timing analysis updates are performed. (Default: auto)
765+ * @param load_flat_placement
766+ * Whether to reconstruct a packing solution from a flat placement
767+ * file. (Default: off; on if <stage option: --legalize> is on)
709768 */
710769struct t_packer_opts {
711770 std::string circuit_file_name;
712771 std::string sdc_file_name;
713772 std::string output_file;
714- bool global_clocks;
715773 bool timing_driven;
716774 enum e_cluster_seed cluster_seed_type;
717- float alpha ;
718- float beta ;
775+ float timing_gain_weight ;
776+ float connection_gain_weight ;
719777 float target_device_utilization;
720778 e_unrelated_clustering allow_unrelated_clustering;
721779 bool connection_driven;
@@ -730,9 +788,6 @@ struct t_packer_opts {
730788 e_stage_action doPacking;
731789 std::string device_layout;
732790 e_timing_update_type timing_update_type;
733- bool use_attraction_groups;
734- int pack_num_moves;
735- std::string pack_move_type;
736791 bool load_flat_placement = false ;
737792};
738793
0 commit comments