@@ -55,7 +55,9 @@ struct t_port_power;
55
55
struct t_physical_tile_port ;
56
56
struct t_equivalent_site ;
57
57
struct t_physical_tile_type ;
58
+ typedef const t_physical_tile_type* t_physical_tile_type_ptr;
58
59
struct t_logical_block_type ;
60
+ typedef const t_logical_block_type* t_logical_block_type_ptr;
59
61
struct t_pb_type ;
60
62
struct t_pb_graph_pin_power ;
61
63
struct t_mode ;
@@ -521,27 +523,6 @@ enum class e_sb_type {
521
523
constexpr int NO_SWITCH = -1 ;
522
524
constexpr int DEFAULT_SWITCH = -2 ;
523
525
524
- /* Describes the type for a logical block
525
- * name: unique identifier for type
526
- * pb_type: Internal subblocks and routing information for this physical block
527
- * pb_graph_head: Head of DAG of pb_types_nodes and their edges
528
- *
529
- * index: Keep track of type in array for easy access
530
- * physical_tile_index: index of the corresponding physical tile type
531
- */
532
- struct t_logical_block_type {
533
- char * name = nullptr ;
534
-
535
- /* Clustering info */
536
- t_pb_type* pb_type = nullptr ;
537
- t_pb_graph_node* pb_graph_head = nullptr ;
538
-
539
- int index = -1 ; /* index of type descriptor in array (allows for index referencing) */
540
-
541
- int physical_tile_index = -1 ; /* index of the corresponding physical tile type */
542
- };
543
- typedef const t_logical_block_type* t_logical_block_type_ptr;
544
-
545
526
/* Describes the type for a physical tile
546
527
* name: unique identifier for type
547
528
* num_pins: Number of pins for the block
@@ -626,14 +607,13 @@ struct t_physical_tile_type {
626
607
627
608
int index = -1 ; /* index of type descriptor in array (allows for index referencing) */
628
609
629
- int logical_block_index = - 1 ; /* index of the corresponding logical block type */
630
-
631
- std::vector<t_equivalent_site> equivalent_sites ;
610
+ std::vector<std::string> equivalent_sites_names;
611
+ std::vector<t_logical_block_type_ptr> equivalent_sites;
612
+ std::unordered_map< int , std::unordered_map< int , int >> tile_block_pin_directs_map ;
632
613
633
614
/* Returns the indices of pins that contain a clock for this physical logic block */
634
615
std::vector<int > get_clock_pins_indices () const ;
635
616
};
636
- typedef const t_physical_tile_type* t_physical_tile_type_ptr;
637
617
638
618
/* * Describes I/O and clock ports of a physical tile type
639
619
*
@@ -668,17 +648,24 @@ struct t_physical_tile_port {
668
648
int tile_type_index;
669
649
};
670
650
671
- /* * Describes the equivalent sites related to a specific tile type
672
- *
673
- * It corresponds to the <tile> tags in the FPGA architecture description
651
+ /* Describes the type for a logical block
652
+ * name: unique identifier for type
653
+ * pb_type: Internal subblocks and routing information for this physical block
654
+ * pb_graph_head: Head of DAG of pb_types_nodes and their edges
674
655
*
656
+ * index: Keep track of type in array for easy access
657
+ * physical_tile_index: index of the corresponding physical tile type
675
658
*/
676
- struct t_equivalent_site {
677
- char * pb_type_name;
659
+ struct t_logical_block_type {
660
+ char * name = nullptr ;
661
+
662
+ /* Clustering info */
663
+ t_pb_type* pb_type = nullptr ;
664
+ t_pb_graph_node* pb_graph_head = nullptr ;
678
665
679
- // XXX Variables to hold information on mapping between site and tile
680
- // XXX as well as references to the belonging pb_type and tile_type
681
- // t_logical_block_type* block_type ;
666
+ int index = - 1 ; /* index of type descriptor in array (allows for index referencing) */
667
+
668
+ std::vector<t_physical_tile_type_ptr> equivalent_tiles ;
682
669
};
683
670
684
671
/* ************************************************************************************************
@@ -726,8 +713,9 @@ struct t_equivalent_site {
726
713
* modes: Different modes accepted
727
714
* ports: I/O and clock ports
728
715
* num_clock_pins: A count of the total number of clock pins
729
- * int num_input_pins: A count of the total number of input pins
730
- * int num_output_pins: A count of the total number of output pins
716
+ * num_input_pins: A count of the total number of input pins
717
+ * num_output_pins: A count of the total number of output pins
718
+ * num_pins: A count of the total number of pins
731
719
* timing: Timing matrix of block [0..num_inputs-1][0..num_outputs-1]
732
720
* parent_mode: mode of the parent block
733
721
* t_mode_power: ???
@@ -749,6 +737,8 @@ struct t_pb_type {
749
737
int num_input_pins = 0 ; /* inputs not including clock pins */
750
738
int num_output_pins = 0 ;
751
739
740
+ int num_pins = 0 ;
741
+
752
742
t_mode* parent_mode = nullptr ;
753
743
int depth = 0 ; /* depth of pb_type */
754
744
@@ -861,6 +851,7 @@ struct t_port {
861
851
862
852
int index;
863
853
int port_index_by_type;
854
+ int absolute_first_pin_index;
864
855
865
856
t_port_power* port_power;
866
857
};
0 commit comments