@@ -41,8 +41,8 @@ module axis_switch #
41
41
parameter DEST_WIDTH = $clog2(S_COUNT),
42
42
parameter USER_ENABLE = 1 ,
43
43
parameter USER_WIDTH = 1 ,
44
- parameter M_BASE = {32 'd3 , 32 'd2 , 32 'd1 , 32 'd0 },
45
- parameter M_TOP = {32 'd3 , 32 'd2 , 32 'd1 , 32 'd0 },
44
+ parameter M_BASE = {2 'd3 , 2 'd2 , 2 'd1 , 2 'd0 },
45
+ parameter M_TOP = {2 'd3 , 2 'd2 , 2 'd1 , 2 'd0 },
46
46
parameter M_CONNECT = {M_COUNT{{S_COUNT{1'b1 }}}},
47
47
parameter S_REG_TYPE = 0 ,
48
48
parameter M_REG_TYPE = 2 ,
@@ -93,24 +93,24 @@ initial begin
93
93
end
94
94
95
95
for (i = 0 ; i < M_COUNT; i = i + 1 ) begin
96
- if (M_BASE[i* 32 + : 32 ] < 0 || M_BASE[i* 32 + : 32 ] > 2 ** DEST_WIDTH- 1 || M_TOP[i* 32 + : 32 ] < 0 || M_TOP[i* 32 + : 32 ] > 2 ** DEST_WIDTH- 1 ) begin
96
+ if (M_BASE[i* DEST_WIDTH + : DEST_WIDTH ] < 0 || M_BASE[i* DEST_WIDTH + : DEST_WIDTH ] > 2 ** DEST_WIDTH- 1 || M_TOP[i* DEST_WIDTH + : DEST_WIDTH ] < 0 || M_TOP[i* DEST_WIDTH + : DEST_WIDTH ] > 2 ** DEST_WIDTH- 1 ) begin
97
97
$error("Error: value out of range" );
98
98
$finish ;
99
99
end
100
100
end
101
101
102
102
for (i = 0 ; i < M_COUNT; i = i + 1 ) begin
103
- if (M_BASE[i* 32 + : 32 ] > M_TOP[i* 32 + : 32 ]) begin
103
+ if (M_BASE[i* DEST_WIDTH + : DEST_WIDTH ] > M_TOP[i* DEST_WIDTH + : DEST_WIDTH ]) begin
104
104
$error("Error: invalid range" );
105
105
$finish ;
106
106
end
107
107
end
108
108
109
109
for (i = 0 ; i < M_COUNT; i = i + 1 ) begin
110
110
for (j = i+ 1 ; j < M_COUNT; j = j + 1 ) begin
111
- if (M_BASE[i* 32 + : 32 ] <= M_TOP[j* 32 + : 32 ] && M_BASE[j* 32 + : 32 ] <= M_TOP[i* 32 + : 32 ]) begin
112
- $display ("%d: %08x-%08x" , i, M_BASE[i* 32 + : 32 ], M_TOP[i* 32 + : 32 ]);
113
- $display ("%d: %08x-%08x" , j, M_BASE[j* 32 + : 32 ], M_TOP[j* 32 + : 32 ]);
111
+ if (M_BASE[i* DEST_WIDTH + : DEST_WIDTH ] <= M_TOP[j* DEST_WIDTH + : DEST_WIDTH ] && M_BASE[j* DEST_WIDTH + : DEST_WIDTH ] <= M_TOP[i* DEST_WIDTH + : DEST_WIDTH ]) begin
112
+ $display ("%d: %08x-%08x" , i, M_BASE[i* DEST_WIDTH + : DEST_WIDTH ], M_TOP[i* DEST_WIDTH + : DEST_WIDTH ]);
113
+ $display ("%d: %08x-%08x" , j, M_BASE[j* DEST_WIDTH + : DEST_WIDTH ], M_TOP[j* DEST_WIDTH + : DEST_WIDTH ]);
114
114
$error("Error: ranges overlap" );
115
115
$finish ;
116
116
end
@@ -153,7 +153,7 @@ generate
153
153
select_valid_next = 1'b0 ;
154
154
drop_next = 1'b1 ;
155
155
for (k = 0 ; k < M_COUNT; k = k + 1 ) begin
156
- if (int_s_axis_tdest[m* DEST_WIDTH + : DEST_WIDTH] >= M_BASE[k* 32 + : 32 ] && int_s_axis_tdest[m* DEST_WIDTH + : DEST_WIDTH] <= M_TOP[k* 32 + : 32 ] && (M_CONNECT & (1 << (m+ k* S_COUNT)))) begin
156
+ if (int_s_axis_tdest[m* DEST_WIDTH + : DEST_WIDTH] >= M_BASE[k* DEST_WIDTH + : DEST_WIDTH ] && int_s_axis_tdest[m* DEST_WIDTH + : DEST_WIDTH] <= M_TOP[k* DEST_WIDTH + : DEST_WIDTH ] && (M_CONNECT & (1 << (m+ k* S_COUNT)))) begin
157
157
select_next = k;
158
158
select_valid_next = 1'b1 ;
159
159
drop_next = 1'b0 ;
0 commit comments