eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
ipbus_decode_efex_cntrl_data_path.vhd
1 ---------------------------------------------------------------------------------
2 -- Address decode logic for IPbus fabric.
3 --
4 -- This file has been AUTOGENERATED from the address table - do not
5 -- hand edit.
6 --
7 -- We assume the synthesis tool is clever enough to recognise
8 -- exclusive conditions in the if statement.
9 ---------------------------------------------------------------------------------
10 
11 library ieee;
12 use ieee.std_logic_1164.all;
13 use ieee.numeric_std.all;
14 
16 
17 -- START automatically generated VHDL (Tue Sep 3 11:28:00 2024)
18  constant IPBUS_SEL_WIDTH: positive := 6;
19 -- END automatically generated VHDL
20 
21  subtype ipbus_sel_t is std_logic_vector(IPBUS_SEL_WIDTH - 1 downto 0);
22  function ipbus_sel_efex_cntrl_data_path(addr : in std_logic_vector(31 downto 0)) return ipbus_sel_t;
23 
24 -- START automatically generated VHDL (Tue Sep 3 11:28:00 2024)
25  constant N_SLV_CONTROL: integer := 0;
26  constant N_SLV_FIFO_CONTROL: integer := 1;
27  constant N_SLV_TOB_MGT_STATUS_P0: integer := 2;
28  constant N_SLV_TOB_MGT_STATUS_P1: integer := 3;
29  constant N_SLV_TOB_MGT_STATUS_P2: integer := 4;
30  constant N_SLV_TOB_MGT_STATUS_P3: integer := 5;
31  constant N_SLV_RAW_MGT_STATUS_P0: integer := 6;
32  constant N_SLV_RAW_MGT_STATUS_P1: integer := 7;
33  constant N_SLV_RAW_MGT_STATUS_P2: integer := 8;
34  constant N_SLV_RAW_MGT_STATUS_P3: integer := 9;
35  constant N_SLV_TOB_FIFO_STATUS_A_P0: integer := 10;
36  constant N_SLV_TOB_FIFO_STATUS_A_P1: integer := 11;
37  constant N_SLV_TOB_FIFO_STATUS_A_P2: integer := 12;
38  constant N_SLV_TOB_FIFO_STATUS_A_P3: integer := 13;
39  constant N_SLV_TOB_FIFO_STATUS_B_P0: integer := 14;
40  constant N_SLV_TOB_FIFO_STATUS_B_P1: integer := 15;
41  constant N_SLV_TOB_FIFO_STATUS_B_P2: integer := 16;
42  constant N_SLV_TOB_FIFO_STATUS_B_P3: integer := 17;
43  constant N_SLV_RAW_FIFO_STATUS_P0: integer := 18;
44  constant N_SLV_RAW_FIFO_STATUS_P1: integer := 19;
45  constant N_SLV_RAW_FIFO_STATUS_P2: integer := 20;
46  constant N_SLV_RAW_FIFO_STATUS_P3: integer := 21;
47  constant N_SLV_TOB_MERGER_STATUS_A_MERGER: integer := 22;
48  constant N_SLV_TOB_MERGER_STATUS_A_P0: integer := 23;
49  constant N_SLV_TOB_MERGER_STATUS_A_P1: integer := 24;
50  constant N_SLV_TOB_MERGER_STATUS_A_P2: integer := 25;
51  constant N_SLV_TOB_MERGER_STATUS_A_P3: integer := 26;
52  constant N_SLV_TOB_MERGER_STATUS_B_MERGER: integer := 27;
53  constant N_SLV_TOB_MERGER_STATUS_B_P0: integer := 28;
54  constant N_SLV_TOB_MERGER_STATUS_B_P1: integer := 29;
55  constant N_SLV_TOB_MERGER_STATUS_B_P2: integer := 30;
56  constant N_SLV_TOB_MERGER_STATUS_B_P3: integer := 31;
57  constant N_SLV_MERGED_FIFO_STATUS_A_TOB: integer := 32;
58  constant N_SLV_MERGED_FIFO_STATUS_A_DEBUG: integer := 33;
59  constant N_SLV_MERGED_FIFO_STATUS_B_TOB: integer := 34;
60  constant N_SLV_MERGED_FIFO_STATUS_B_DEBUG: integer := 35;
61  constant N_SLV_MUX_STATUS_A_MUX_ACTIVE: integer := 36;
62  constant N_SLV_MUX_STATUS_A_TOB: integer := 37;
63  constant N_SLV_MUX_STATUS_A_DEBUG: integer := 38;
64  constant N_SLV_MUX_STATUS_A_RAW_0: integer := 39;
65  constant N_SLV_MUX_STATUS_A_RAW_1: integer := 40;
66  constant N_SLV_MUX_STATUS_A_RAW_2: integer := 41;
67  constant N_SLV_MUX_STATUS_A_RAW_3: integer := 42;
68  constant N_SLV_MUX_STATUS_B_MUX_ACTIVE: integer := 43;
69  constant N_SLV_MUX_STATUS_B_TOB: integer := 44;
70  constant N_SLV_MUX_STATUS_B_DEBUG: integer := 45;
71  constant N_SLV_MUX_STATUS_B_RAW_0: integer := 46;
72  constant N_SLV_MUX_STATUS_B_RAW_1: integer := 47;
73  constant N_SLV_MUX_STATUS_B_RAW_2: integer := 48;
74  constant N_SLV_MUX_STATUS_B_RAW_3: integer := 49;
75  constant N_SLV_TOB_MGT_P0_SPY_RAM: integer := 50;
76  constant N_SLV_TOB_MGT_P1_SPY_RAM: integer := 51;
77  constant N_SLV_TOB_MGT_P2_SPY_RAM: integer := 52;
78  constant N_SLV_TOB_MGT_P3_SPY_RAM: integer := 53;
79  constant N_SLV_RAW_MGT_P0_SPY_RAM: integer := 54;
80  constant N_SLV_RAW_MGT_P1_SPY_RAM: integer := 55;
81  constant N_SLV_RAW_MGT_P2_SPY_RAM: integer := 56;
82  constant N_SLV_RAW_MGT_P3_SPY_RAM: integer := 57;
83  constant N_SLV_AURORA_CHANNEL0_SPY_RAM: integer := 58;
84  constant N_SLV_AURORA_CHANNEL1_SPY_RAM: integer := 59;
85  constant N_SLV_TOB_MERGER_A_DEBUG_SPY_RAM: integer := 60;
86  constant N_SLV_TOB_MERGER_B_DEBUG_SPY_RAM: integer := 61;
87  constant N_SLAVES: integer := 62;
88 -- END automatically generated VHDL
89 
91 
93 
94  function ipbus_sel_efex_cntrl_data_path(addr : in std_logic_vector(31 downto 0)) return ipbus_sel_t is
95  variable sel: ipbus_sel_t;
96  begin
97 
98 -- START automatically generated VHDL (Tue Sep 3 11:28:00 2024)
99  if std_match(addr, "------------0000------0000000---") then
100  sel := ipbus_sel_t(to_unsigned(N_SLV_CONTROL, IPBUS_SEL_WIDTH)); -- control / base 0x00000000 / mask 0x000f03f8
101  elsif std_match(addr, "------------0000------000010----") then
102  sel := ipbus_sel_t(to_unsigned(N_SLV_FIFO_CONTROL, IPBUS_SEL_WIDTH)); -- fifo_control / base 0x00000020 / mask 0x000f03f0
103  elsif std_match(addr, "------------0000------0010000---") then
104  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_STATUS_P0, IPBUS_SEL_WIDTH)); -- tob_mgt_status.p0 / base 0x00000080 / mask 0x000f03f8
105  elsif std_match(addr, "------------0000------0010010---") then
106  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_STATUS_P1, IPBUS_SEL_WIDTH)); -- tob_mgt_status.p1 / base 0x00000090 / mask 0x000f03f8
107  elsif std_match(addr, "------------0000------0010100---") then
108  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_STATUS_P2, IPBUS_SEL_WIDTH)); -- tob_mgt_status.p2 / base 0x000000a0 / mask 0x000f03f8
109  elsif std_match(addr, "------------0000------0010110---") then
110  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_STATUS_P3, IPBUS_SEL_WIDTH)); -- tob_mgt_status.p3 / base 0x000000b0 / mask 0x000f03f8
111  elsif std_match(addr, "------------0000------0011000---") then
112  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_STATUS_P0, IPBUS_SEL_WIDTH)); -- raw_mgt_status.p0 / base 0x000000c0 / mask 0x000f03f8
113  elsif std_match(addr, "------------0000------0011010---") then
114  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_STATUS_P1, IPBUS_SEL_WIDTH)); -- raw_mgt_status.p1 / base 0x000000d0 / mask 0x000f03f8
115  elsif std_match(addr, "------------0000------0011100---") then
116  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_STATUS_P2, IPBUS_SEL_WIDTH)); -- raw_mgt_status.p2 / base 0x000000e0 / mask 0x000f03f8
117  elsif std_match(addr, "------------0000------0011110---") then
118  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_STATUS_P3, IPBUS_SEL_WIDTH)); -- raw_mgt_status.p3 / base 0x000000f0 / mask 0x000f03f8
119  elsif std_match(addr, "------------0000------010000----") then
120  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_A_P0, IPBUS_SEL_WIDTH)); -- tob_fifo_status_a.p0 / base 0x00000100 / mask 0x000f03f0
121  elsif std_match(addr, "------------0000------010001----") then
122  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_A_P1, IPBUS_SEL_WIDTH)); -- tob_fifo_status_a.p1 / base 0x00000110 / mask 0x000f03f0
123  elsif std_match(addr, "------------0000------010010----") then
124  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_A_P2, IPBUS_SEL_WIDTH)); -- tob_fifo_status_a.p2 / base 0x00000120 / mask 0x000f03f0
125  elsif std_match(addr, "------------0000------010011----") then
126  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_A_P3, IPBUS_SEL_WIDTH)); -- tob_fifo_status_a.p3 / base 0x00000130 / mask 0x000f03f0
127  elsif std_match(addr, "------------0000------010100----") then
128  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_B_P0, IPBUS_SEL_WIDTH)); -- tob_fifo_status_b.p0 / base 0x00000140 / mask 0x000f03f0
129  elsif std_match(addr, "------------0000------010101----") then
130  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_B_P1, IPBUS_SEL_WIDTH)); -- tob_fifo_status_b.p1 / base 0x00000150 / mask 0x000f03f0
131  elsif std_match(addr, "------------0000------010110----") then
132  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_B_P2, IPBUS_SEL_WIDTH)); -- tob_fifo_status_b.p2 / base 0x00000160 / mask 0x000f03f0
133  elsif std_match(addr, "------------0000------010111----") then
134  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_FIFO_STATUS_B_P3, IPBUS_SEL_WIDTH)); -- tob_fifo_status_b.p3 / base 0x00000170 / mask 0x000f03f0
135  elsif std_match(addr, "------------0000------011000----") then
136  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_FIFO_STATUS_P0, IPBUS_SEL_WIDTH)); -- raw_fifo_status.p0 / base 0x00000180 / mask 0x000f03f0
137  elsif std_match(addr, "------------0000------011001----") then
138  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_FIFO_STATUS_P1, IPBUS_SEL_WIDTH)); -- raw_fifo_status.p1 / base 0x00000190 / mask 0x000f03f0
139  elsif std_match(addr, "------------0000------011010----") then
140  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_FIFO_STATUS_P2, IPBUS_SEL_WIDTH)); -- raw_fifo_status.p2 / base 0x000001a0 / mask 0x000f03f0
141  elsif std_match(addr, "------------0000------011011----") then
142  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_FIFO_STATUS_P3, IPBUS_SEL_WIDTH)); -- raw_fifo_status.p3 / base 0x000001b0 / mask 0x000f03f0
143  elsif std_match(addr, "------------0000------01110000--") then
144  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_A_MERGER, IPBUS_SEL_WIDTH)); -- tob_merger_status_a.merger / base 0x000001c0 / mask 0x000f03fc
145  elsif std_match(addr, "------------0000------01110001--") then
146  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_A_P0, IPBUS_SEL_WIDTH)); -- tob_merger_status_a.p0 / base 0x000001c4 / mask 0x000f03fc
147  elsif std_match(addr, "------------0000------01110010--") then
148  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_A_P1, IPBUS_SEL_WIDTH)); -- tob_merger_status_a.p1 / base 0x000001c8 / mask 0x000f03fc
149  elsif std_match(addr, "------------0000------01110011--") then
150  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_A_P2, IPBUS_SEL_WIDTH)); -- tob_merger_status_a.p2 / base 0x000001cc / mask 0x000f03fc
151  elsif std_match(addr, "------------0000------01110100--") then
152  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_A_P3, IPBUS_SEL_WIDTH)); -- tob_merger_status_a.p3 / base 0x000001d0 / mask 0x000f03fc
153  elsif std_match(addr, "------------0000------01111000--") then
154  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_B_MERGER, IPBUS_SEL_WIDTH)); -- tob_merger_status_b.merger / base 0x000001e0 / mask 0x000f03fc
155  elsif std_match(addr, "------------0000------01111001--") then
156  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_B_P0, IPBUS_SEL_WIDTH)); -- tob_merger_status_b.p0 / base 0x000001e4 / mask 0x000f03fc
157  elsif std_match(addr, "------------0000------01111010--") then
158  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_B_P1, IPBUS_SEL_WIDTH)); -- tob_merger_status_b.p1 / base 0x000001e8 / mask 0x000f03fc
159  elsif std_match(addr, "------------0000------01111011--") then
160  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_B_P2, IPBUS_SEL_WIDTH)); -- tob_merger_status_b.p2 / base 0x000001ec / mask 0x000f03fc
161  elsif std_match(addr, "------------0000------01111100--") then
162  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_STATUS_B_P3, IPBUS_SEL_WIDTH)); -- tob_merger_status_b.p3 / base 0x000001f0 / mask 0x000f03fc
163  elsif std_match(addr, "------------0000------100000----") then
164  sel := ipbus_sel_t(to_unsigned(N_SLV_MERGED_FIFO_STATUS_A_TOB, IPBUS_SEL_WIDTH)); -- merged_fifo_status_a.tob / base 0x00000200 / mask 0x000f03f0
165  elsif std_match(addr, "------------0000------100001----") then
166  sel := ipbus_sel_t(to_unsigned(N_SLV_MERGED_FIFO_STATUS_A_DEBUG, IPBUS_SEL_WIDTH)); -- merged_fifo_status_a.debug / base 0x00000210 / mask 0x000f03f0
167  elsif std_match(addr, "------------0000------100010----") then
168  sel := ipbus_sel_t(to_unsigned(N_SLV_MERGED_FIFO_STATUS_B_TOB, IPBUS_SEL_WIDTH)); -- merged_fifo_status_b.tob / base 0x00000220 / mask 0x000f03f0
169  elsif std_match(addr, "------------0000------100011----") then
170  sel := ipbus_sel_t(to_unsigned(N_SLV_MERGED_FIFO_STATUS_B_DEBUG, IPBUS_SEL_WIDTH)); -- merged_fifo_status_b.debug / base 0x00000230 / mask 0x000f03f0
171  elsif std_match(addr, "------------0000------10010000--") then
172  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_MUX_ACTIVE, IPBUS_SEL_WIDTH)); -- mux_status_a.mux_active / base 0x00000240 / mask 0x000f03fc
173  elsif std_match(addr, "------------0000------10010001--") then
174  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_TOB, IPBUS_SEL_WIDTH)); -- mux_status_a.tob / base 0x00000244 / mask 0x000f03fc
175  elsif std_match(addr, "------------0000------10010010--") then
176  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_DEBUG, IPBUS_SEL_WIDTH)); -- mux_status_a.debug / base 0x00000248 / mask 0x000f03fc
177  elsif std_match(addr, "------------0000------10010011--") then
178  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_RAW_0, IPBUS_SEL_WIDTH)); -- mux_status_a.raw_0 / base 0x0000024c / mask 0x000f03fc
179  elsif std_match(addr, "------------0000------10010100--") then
180  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_RAW_1, IPBUS_SEL_WIDTH)); -- mux_status_a.raw_1 / base 0x00000250 / mask 0x000f03fc
181  elsif std_match(addr, "------------0000------10010101--") then
182  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_RAW_2, IPBUS_SEL_WIDTH)); -- mux_status_a.raw_2 / base 0x00000254 / mask 0x000f03fc
183  elsif std_match(addr, "------------0000------10010110--") then
184  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_A_RAW_3, IPBUS_SEL_WIDTH)); -- mux_status_a.raw_3 / base 0x00000258 / mask 0x000f03fc
185  elsif std_match(addr, "------------0000------10100000--") then
186  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_MUX_ACTIVE, IPBUS_SEL_WIDTH)); -- mux_status_b.mux_active / base 0x00000280 / mask 0x000f03fc
187  elsif std_match(addr, "------------0000------10100001--") then
188  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_TOB, IPBUS_SEL_WIDTH)); -- mux_status_b.tob / base 0x00000284 / mask 0x000f03fc
189  elsif std_match(addr, "------------0000------10100010--") then
190  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_DEBUG, IPBUS_SEL_WIDTH)); -- mux_status_b.debug / base 0x00000288 / mask 0x000f03fc
191  elsif std_match(addr, "------------0000------10100011--") then
192  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_RAW_0, IPBUS_SEL_WIDTH)); -- mux_status_b.raw_0 / base 0x0000028c / mask 0x000f03fc
193  elsif std_match(addr, "------------0000------10100100--") then
194  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_RAW_1, IPBUS_SEL_WIDTH)); -- mux_status_b.raw_1 / base 0x00000290 / mask 0x000f03fc
195  elsif std_match(addr, "------------0000------10100101--") then
196  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_RAW_2, IPBUS_SEL_WIDTH)); -- mux_status_b.raw_2 / base 0x00000294 / mask 0x000f03fc
197  elsif std_match(addr, "------------0000------10100110--") then
198  sel := ipbus_sel_t(to_unsigned(N_SLV_MUX_STATUS_B_RAW_3, IPBUS_SEL_WIDTH)); -- mux_status_b.raw_3 / base 0x00000298 / mask 0x000f03fc
199  elsif std_match(addr, "------------0001----------------") then
200  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_P0_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_mgt_p0.spy_ram / base 0x00010000 / mask 0x000f0000
201  elsif std_match(addr, "------------0010----------------") then
202  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_P1_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_mgt_p1.spy_ram / base 0x00020000 / mask 0x000f0000
203  elsif std_match(addr, "------------0011----------------") then
204  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_P2_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_mgt_p2.spy_ram / base 0x00030000 / mask 0x000f0000
205  elsif std_match(addr, "------------0100----------------") then
206  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MGT_P3_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_mgt_p3.spy_ram / base 0x00040000 / mask 0x000f0000
207  elsif std_match(addr, "------------0101----------------") then
208  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_P0_SPY_RAM, IPBUS_SEL_WIDTH)); -- raw_mgt_p0.spy_ram / base 0x00050000 / mask 0x000f0000
209  elsif std_match(addr, "------------0110----------------") then
210  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_P1_SPY_RAM, IPBUS_SEL_WIDTH)); -- raw_mgt_p1.spy_ram / base 0x00060000 / mask 0x000f0000
211  elsif std_match(addr, "------------0111----------------") then
212  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_P2_SPY_RAM, IPBUS_SEL_WIDTH)); -- raw_mgt_p2.spy_ram / base 0x00070000 / mask 0x000f0000
213  elsif std_match(addr, "------------1000----------------") then
214  sel := ipbus_sel_t(to_unsigned(N_SLV_RAW_MGT_P3_SPY_RAM, IPBUS_SEL_WIDTH)); -- raw_mgt_p3.spy_ram / base 0x00080000 / mask 0x000f0000
215  elsif std_match(addr, "------------1001----------------") then
216  sel := ipbus_sel_t(to_unsigned(N_SLV_AURORA_CHANNEL0_SPY_RAM, IPBUS_SEL_WIDTH)); -- aurora_channel0.spy_ram / base 0x00090000 / mask 0x000f0000
217  elsif std_match(addr, "------------1010----------------") then
218  sel := ipbus_sel_t(to_unsigned(N_SLV_AURORA_CHANNEL1_SPY_RAM, IPBUS_SEL_WIDTH)); -- aurora_channel1.spy_ram / base 0x000a0000 / mask 0x000f0000
219  elsif std_match(addr, "------------1011----------------") then
220  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_A_DEBUG_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_merger_a_debug.spy_ram / base 0x000b0000 / mask 0x000f0000
221  elsif std_match(addr, "------------1100----------------") then
222  sel := ipbus_sel_t(to_unsigned(N_SLV_TOB_MERGER_B_DEBUG_SPY_RAM, IPBUS_SEL_WIDTH)); -- tob_merger_b_debug.spy_ram / base 0x000c0000 / mask 0x000f0000
223  else
224  sel := ipbus_sel_t(to_unsigned(N_SLAVES, IPBUS_SEL_WIDTH));
225  end if;
226 -- END automatically generated VHDL
227 
228  return sel;
229 
230  end function ipbus_sel_efex_cntrl_data_path;
231 
233 
234 ---------------------------------------------------------------------------------