55
66#include " physical_types.h"
77
8- /* Lists all the important information about an rr switch type. *
9- * The s_rr_switch_inf describes a switch derived from a switch described *
10- * by s_arch_switch_inf. This indirection allows us to vary properties of a *
11- * given switch, such as varying delay with switch fan-in. *
12- * buffered: Does this switch isolate it's input/output into separate *
13- * DC-connected sub-circuits? *
14- * configurable: Is this switch is configurable (i.e. can the switch can be *
15- * turned on or off)?. This allows modelling of non-optional *
16- * switches (e.g. fixed buffers, or shorted connections) which *
17- * must be used (e.g. expanded by the router) if a connected *
18- * segment is used. *
19- * R: Equivalent resistance of the buffer/switch. *
20- * Cin: Input capacitance. *
21- * Cout: Output capacitance. *
22- * Cinternal: Internal capacitance, see the definition above. *
23- * Tdel: Intrinsic delay. The delay through an unloaded switch is *
24- * Tdel + R * Cout. *
25- * mux_trans_size: The area of each transistor in the segment's driving mux *
26- * measured in minimum width transistor units *
27- * buf_size: The area of the buffer. If set to zero, area should be *
28- * calculated from R
29- * intra_tile: Indicate whether this rr_switch is a switch type used inside *
30- * clusters. These switch types are not specified in the *
31- * architecture description file and are added when flat router *
32- * is enabled */
8+ /* *
9+ * @brief Lists all the important information about an RR switch type.
10+ *
11+ * The t_rr_switch_inf describes a switch derived from a switch described
12+ * by t_arch_switch_inf. This indirection allows us to vary properties of a
13+ * given switch, such as varying delay with switch fan-in.
14+ */
3315struct t_rr_switch_inf {
16+ // / Equivalent resistance of the buffer/switch.
3417 float R = 0 .;
18+ // / Input capacitance.
3519 float Cin = 0 .;
20+ // / Output capacitance.
3621 float Cout = 0 .;
22+ // / Internal capacitance.
3723 float Cinternal = 0 .;
24+ // / Intrinsic delay. The delay through an unloaded switch is Tdel + R * Cout.
3825 float Tdel = 0 .;
26+ // / The area of each transistor in the segment's driving mux measured in minimum width transistor units
3927 float mux_trans_size = 0 .;
28+ // / The area of the buffer. If set to zero, area should be calculated from R
4029 float buf_size = 0 .;
4130 std::string name;
4231 e_power_buffer_type power_buffer_type = POWER_BUFFER_TYPE_UNDEFINED;
4332 float power_buffer_size = 0 .;
4433
34+ // / Indicate whether this rr_switch is a switch type used inside clusters.
35+ // / These switch types are not specified in the architecture description file
36+ // / and are added when flat router is enabled.
4537 bool intra_tile = false ;
4638
47- public:
39+ public: // Getters
4840 // / Returns the type of switch
4941 e_switch_type type () const ;
5042
5143 // / Returns true if this switch type isolates its input and output into
5244 // / separate DC-connected subcircuits
5345 bool buffered () const ;
5446
55- // / Returns true if this switch type is configurable
47+ // / Returns true if this switch type is configurable (i.e. can the switch can be turned on or off)
48+ // / This allows modelling of non-optional switches (e.g. fixed buffers, or shorted connections)
49+ // / which must be used (e.g. expanded by the router) if a connected segment is used.
5650 bool configurable () const ;
5751
5852 bool operator ==(const t_rr_switch_inf& other) const ;
@@ -67,7 +61,7 @@ struct t_rr_switch_inf {
6761 std::size_t operator ()(const t_rr_switch_inf& s) const ;
6862 };
6963
70- public:
64+ public: // Setters
7165 void set_type (e_switch_type type_val);
7266
7367 private:
0 commit comments