37 lines
1.3 KiB
C
37 lines
1.3 KiB
C
|
#ifndef CLUSTER_LEGALITY_H
|
||
|
#define CLUSTER_LEGALITY_H
|
||
|
|
||
|
/* Legalizes routing for a cluster
|
||
|
*/
|
||
|
void alloc_and_load_cluster_legality_checker(void);
|
||
|
|
||
|
void alloc_and_load_legalizer_for_cluster(INP t_block* clb, INP int clb_index, INP const t_arch *arch);
|
||
|
|
||
|
void free_legalizer_for_cluster(INP t_block* clb, boolean free_local_rr_graph);
|
||
|
|
||
|
void free_cluster_legality_checker(void);
|
||
|
|
||
|
void reset_legalizer_for_cluster(t_block *clb);
|
||
|
|
||
|
/* order of use: 1. save cluster 2. Add blocks. 3. route 4. save if successful, undo if not successful */
|
||
|
void save_and_reset_routing_cluster(void);
|
||
|
void setup_intracluster_routing_for_molecule(INP t_pack_molecule *molecule, INOUTP t_pb_graph_node **primitives_list);
|
||
|
boolean try_breadth_first_route_cluster(void);
|
||
|
void restore_routing_cluster(void);
|
||
|
void save_cluster_solution(void);
|
||
|
|
||
|
boolean is_pin_open(int i);
|
||
|
|
||
|
void set_pb_graph_mode(t_pb_graph_node *pb_graph_node, int mode, int isOn);
|
||
|
|
||
|
void alloc_and_load_rr_graph_for_pb_graph_node(INP t_pb_graph_node *pb_graph_node, INP const t_arch* arch, int mode);
|
||
|
|
||
|
|
||
|
/* Power user options */
|
||
|
void reload_ext_net_rr_terminal_cluster(void);
|
||
|
void force_post_place_route_cb_input_pins(int iblock);
|
||
|
void setup_intracluster_routing_for_logical_block(INP int iblock,
|
||
|
INP t_pb_graph_node *primitive);
|
||
|
|
||
|
#endif
|