CMX
CMX firmware code in-line documentation
 All Classes Namespaces Files Functions Variables
CMX_system_cable_input_module.vhd
Go to the documentation of this file.
1 ----------------------------------------------------------------------------------
13 ----------------------------------------------------------------------------------
14 
15 library IEEE;
16 use IEEE.STD_LOGIC_1164.ALL;
17 use IEEE.NUMERIC_STD.ALL;
18 
19 library UNISIM;
20 use UNISIM.VComponents.all;
21 
22 library work;
24 use work.CMXpackage.all;
26 
27 
29 
30  port(
31  --data in ds2 domain, *2 because data is DDR
32  data : out std_logic_vector( numbits_in_RTM_connector*2*num_RTM_cables - 1 downto 0);
33  parity_error_total : out std_logic;
34  ddr_data_in : in arr_RTM(num_RTM_cables-1 downto 0);
35  buf_clk40 : in std_logic;
36  buf_clk40_ds2 : in std_logic;
37  pll_locked : in std_logic;
38  pll_locked_ds2 : in std_logic;
39  quiet : in std_logic;
40  start_playback : in std_logic;
41  --inhibit signal for writing to the spy memories
42  spy_write_inhibit : in std_logic;
43  --VME control:
44  ncs : in std_logic;
45  rd_nwr : in std_logic;
46  ds : in std_logic;
47  addr_vme : in std_logic_vector (15 downto 0);
48  data_vme_in : in std_logic_vector (15 downto 0);
49  data_vme_out : out std_logic_vector (15 downto 0);
50  bus_drive : out std_logic
51  );
52 
53 end CMX_system_cable_input_module;
54 
55 
56 architecture Behavioral of CMX_system_cable_input_module is
57 
58  constant mem_select_addr_width : integer := addr_port_width(num_RTM_cables);
59 
61  generic (
62  numbits_in_cable_connector : integer);
63  port (
64  data : out std_logic_vector((numbits_in_cable_connector*2)-1 downto 0);
65  parity_error : out std_logic;
66  forwarded_clock : out std_logic;
67  ddr_data_in : in std_logic_vector(numbits_in_cable_connector downto 0);
68  buf_clk40 : in std_logic;
69  buf_clk200 : in std_logic;
70  pll_locked : in std_logic;
71  del_array : in cable_del_array_type(numbits_in_cable_connector downto 0);
72  upload_delays : in std_logic);
74 
75 
76  signal data_sdr_unmasked : arr_RTM_sdr;
77  signal data_sdr : arr_RTM_sdr;
78  signal data_sdr_r_SOURCE : arr_RTM_sdr;
79  signal data_sdr_r_SYSTEMDS2 : arr_RTM_sdr;
80  signal data_sdr_rr_SYSTEMDS2 : arr_RTM_sdr; --need this for
81  --comparison to data
82  --from RAM
83 
84  signal data_DS2 : arr_RTM_sdr; --output of the DS2 domain
85 
86  signal data_DS2_r_SYSTEM : arr_RTM_sdr;
87  signal data_DS2_rr_SYSTEM : arr_RTM_sdr; --again needed for comparison in
88  --VERIFY mode
89 
90  signal ch_quiet : std_logic_vector(num_RTM_cables-1 downto 0);
91 
92  signal channel_mask : std_logic_vector(num_RTM_cables-1 downto 0);
93 
94  --parity error calculated using the forwarded clock
95  signal parity_error_unmasked_sig : std_logic_vector(num_RTM_cables -1 downto 0);
96  signal parity_error_sig : std_logic_vector(num_RTM_cables -1 downto 0);
97  --then registered in the ds2 an ds1 system domains
98  signal parity_error_r_SYSTEMDS2 : std_logic_vector(num_RTM_cables -1 downto 0);
99  signal parity_error_r_SYSTEMDS2_r_SYSTEM : std_logic_vector(num_RTM_cables -1 downto 0);
100  signal parity_error_r_SYSTEMDS2_rr_SYSTEM : std_logic_vector(num_RTM_cables -1 downto 0);
101 
102  -- --parity error calculated from data captured in respective domains
103  -- signal parity_error_c_SYSTEMDS2 : std_logic_vector(num_RTM_cables -1 downto 0);
104  -- signal parity_error_c_SYSTEM : std_logic_vector(num_RTM_cables -1 downto 0);
105 
106 
107  signal forwarded_clock : std_logic_vector(num_RTM_cables - 1 downto 0);
108 
109 
110  component blk_mem_A8x52_B8x52_2clock is
111  port (
112  clka : IN STD_LOGIC;
113  ena : IN STD_LOGIC;
114  wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
115  addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
116  dina : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
117  douta : OUT STD_LOGIC_VECTOR(51 DOWNTO 0);
118  clkb : IN STD_LOGIC;
119  enb : IN STD_LOGIC;
120  web : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
121  addrb : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
122  dinb : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
123  doutb : OUT STD_LOGIC_VECTOR(51 DOWNTO 0));
124  end component blk_mem_A8x52_B8x52_2clock;
125 
126  component blk_mem_A8x52_B8x52_1clock is
127  port (
128  clka : IN STD_LOGIC;
129  ena : IN STD_LOGIC;
130  wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
131  addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
132  dina : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
133  douta : OUT STD_LOGIC_VECTOR(51 DOWNTO 0);
134  clkb : IN STD_LOGIC;
135  enb : IN STD_LOGIC;
136  web : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
137  addrb : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
138  dinb : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
139  doutb : OUT STD_LOGIC_VECTOR(51 DOWNTO 0));
140  end component blk_mem_A8x52_B8x52_1clock;
141 
142 
144  component Stretch_10 is
145  port (
146  unstretched_IN : in std_logic;
147  stretched_OUT : out std_logic;
148  clk : in std_logic);
149  end component Stretch_10;
150 
152 
153  signal data_from_vme_REG_RW_RTM_INPUT_COUNTER_RESET : std_logic_vector (15 downto 0); --actual value is
154  --ignored but
155  --supplied for sw check
156  signal data_to_vme_REG_RW_RTM_INPUT_COUNTER_RESET : std_logic_vector (15 downto 0);
157 
158 
159  signal data_from_vme_REG_RW_RTM_INPUT_CHANNEL_MASK : std_logic_vector(15 downto 0);
160  signal data_to_vme_REG_RW_RTM_INPUT_CHANNEL_MASK : std_logic_vector(15 downto 0);
161 
162  signal all_null : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
163 
165  generic (
169  num_external_RAMS : positive);
170  port (
171  clk : in std_logic;
172  ncs : in std_logic;
173  rd_nwr : in std_logic;
174  ds : in std_logic;
175  addr_vme : in std_logic_vector (15 downto 0);
176  data_vme_in : in std_logic_vector (15 downto 0);
177  data_vme_out : out std_logic_vector (15 downto 0);
178  bus_drive : out std_logic;
179  mode_control : out std_logic_vector(3 downto 0);
180  ena : out std_logic;
181  wea : out std_logic;
182  addra : out std_logic_vector(7 DOWNTO 0);
183  mem_select_address : out std_logic_vector(addr_port_width(num_external_RAMS)-1 downto 0);
184  dina : out std_logic_vector;
185  douta : in std_logic_vector;
186  port_b_master_inhibit : out std_logic);
187  end component CMX_generic_spy_mem_control_FSM;
188 
189  signal mode_control_RTM_SPY_SOURCE : std_logic_vector(3 downto 0);
190  signal ena_RTM_SPY_SOURCE : std_logic;
191  signal wea_RTM_SPY_SOURCE : std_logic;
192  signal addra_RTM_SPY_SOURCE : std_logic_vector(7 DOWNTO 0);
193  signal mem_select_address_RTM_SPY_SOURCE : std_logic_vector(addr_port_width(num_RTM_cables)-1 downto 0);
194  signal dina_RTM_SPY_SOURCE : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
195  signal douta_RTM_SPY_SOURCE : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
197 
198  signal ena_rtm_spy_source_individual : std_logic_vector(num_RTM_cables-1 downto 0);
199  signal wea_rtm_spy_source_individual : arr_1(num_RTM_cables-1 downto 0);
200  signal douta_rtm_spy_source_individual : arr_RTM_sdr;
201  signal clkb_rtm_spy_source_individual : std_logic_vector(num_RTM_cables-1 downto 0);
202  signal enb_rtm_spy_source_individual : std_logic_vector(num_RTM_cables-1 downto 0);
203  signal web_rtm_spy_source_individual : arr_1(num_RTM_cables-1 downto 0);
204  signal addrb_rtm_spy_source_individual : arr_8(num_RTM_cables-1 downto 0);
205  signal dinb_rtm_spy_source_individual : arr_RTM_sdr;
206  signal doutb_rtm_spy_source_individual : arr_RTM_sdr;
207 
208  signal addrb_RTM_SPY_SOURCE_counter : arr_ctr_8bit(num_RTM_cables-1 downto 0);
209 
210 
211  signal port_b_master_inhibit_rtm_spy_source_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
212  signal web_rtm_spy_source_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
213  signal enb_rtm_spy_source_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
214  signal web_rtm_spy_source_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
215  signal enb_rtm_spy_source_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
216  signal port_b_master_inhibit_rtm_spy_source_split : std_logic_vector(num_RTM_cables-1 downto 0);
217  signal web_rtm_spy_source_split : std_logic_vector(num_RTM_cables-1 downto 0);
218  signal enb_rtm_spy_source_split : std_logic_vector(num_RTM_cables-1 downto 0);
219  signal port_b_master_inhibit_rtm_spy_source_r_system_rr_source : std_logic_vector(num_RTM_cables-1 downto 0);
220  signal port_b_master_inhibit_rtm_spy_source_r_system_r_source : std_logic_vector(num_RTM_cables-1 downto 0);
221  signal web_rtm_spy_source_rr_source : std_logic_vector(num_RTM_cables-1 downto 0);
222  signal web_rtm_spy_source_r_source : std_logic_vector(num_RTM_cables-1 downto 0);
223  signal enb_rtm_spy_source_rr_source : std_logic_vector(num_RTM_cables-1 downto 0);
224  signal enb_rtm_spy_source_r_source : std_logic_vector(num_RTM_cables-1 downto 0);
225  signal enb_rtm_spy_source : std_logic;
226  signal web_rtm_spy_source : std_logic;
227 
228 
229 
230 
231  signal mode_control_RTM_SPY_SYSTEM : std_logic_vector(3 downto 0);
232  signal ena_RTM_SPY_SYSTEM : std_logic;
233  signal wea_RTM_SPY_SYSTEM : std_logic;
234  signal addra_RTM_SPY_SYSTEM : std_logic_vector(7 DOWNTO 0);
235  signal mem_select_address_RTM_SPY_SYSTEM : std_logic_vector(addr_port_width(num_RTM_cables)-1 downto 0);
236  signal dina_RTM_SPY_SYSTEM : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
237  signal douta_RTM_SPY_SYSTEM : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
239 
240  signal ena_rtm_spy_system_individual : std_logic_vector(num_RTM_cables-1 downto 0);
241  signal wea_rtm_spy_system_individual : arr_1(num_RTM_cables-1 downto 0);
242  signal douta_rtm_spy_system_individual : arr_RTM_sdr;
243  signal enb_rtm_spy_system_individual : std_logic_vector(num_RTM_cables-1 downto 0);
244  signal web_rtm_spy_system_individual : arr_1(num_RTM_cables-1 downto 0);
245  signal addrb_rtm_spy_system_individual : arr_8(num_RTM_cables-1 downto 0);
246  signal dinb_rtm_spy_system_individual : arr_RTM_sdr;
247  signal doutb_rtm_spy_system_individual : arr_RTM_sdr;
248 
249  signal addrb_RTM_SPY_SYSTEM_counter : arr_ctr_8bit(num_RTM_cables-1 downto 0);
250 
251  signal port_b_master_inhibit_rtm_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
252  signal web_rtm_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
253  signal enb_rtm_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
254  signal port_b_master_inhibit_rtm_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
255  signal enb_rtm_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
256  signal web_rtm_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
257  signal enb_rtm_spy_system : std_logic;
258  signal web_rtm_spy_system : std_logic;
259 
260 
261  signal mode_control_RTM_SPY_SYSTEMDS2 : std_logic_vector(3 downto 0);
262  signal ena_RTM_SPY_SYSTEMDS2 : std_logic;
263  signal wea_RTM_SPY_SYSTEMDS2 : std_logic;
264  signal addra_RTM_SPY_SYSTEMDS2 : std_logic_vector(7 DOWNTO 0);
265  signal mem_select_address_RTM_SPY_SYSTEMDS2 : std_logic_vector(addr_port_width(num_RTM_cables)-1 downto 0);
266  signal dina_RTM_SPY_SYSTEMDS2 : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
267  signal douta_RTM_SPY_SYSTEMDS2 : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
269 
270  signal ena_rtm_spy_systemds2_individual : std_logic_vector(num_RTM_cables-1 downto 0);
271  signal wea_rtm_spy_systemds2_individual : arr_1(num_RTM_cables-1 downto 0);
273  signal enb_rtm_spy_systemds2_individual : std_logic_vector(num_RTM_cables-1 downto 0);
274  signal web_rtm_spy_systemds2_individual : arr_1(num_RTM_cables-1 downto 0);
275  signal addrb_rtm_spy_systemds2_individual : arr_8(num_RTM_cables-1 downto 0);
276  signal dinb_rtm_spy_systemds2_individual : arr_RTM_sdr;
278 
279  signal addrb_RTM_SPY_SYSTEMDS2_counter : arr_ctr_8bit(num_RTM_cables-1 downto 0);
280 
281  signal port_b_master_inhibit_rtm_spy_systemds2_r_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
282  signal web_rtm_spy_systemds2_r_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
283  signal enb_rtm_spy_systemds2_r_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
284  signal port_b_master_inhibit_rtm_spy_systemds2_rr_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
285  signal web_rtm_spy_systemds2_rr_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
286  signal enb_rtm_spy_systemds2_rr_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
287  signal web_rtm_spy_systemds2 : std_logic;
288  signal enb_rtm_spy_systemds2 : std_logic;
289 
290 
291  signal port_b_master_inhibit_rtm_spy_systemds2_split : std_logic_vector(num_RTM_cables-1 downto 0);
292  signal web_rtm_spy_systemds2_split : std_logic_vector(num_RTM_cables-1 downto 0);
293  signal enb_rtm_spy_systemds2_split : std_logic_vector(num_RTM_cables-1 downto 0);
294 
295 
296  signal spy_write_inhibit_r_system_r_source : std_logic_vector(num_RTM_cables-1 downto 0);
297  signal spy_write_inhibit_r_system_rr_source : std_logic_vector(num_RTM_cables-1 downto 0);
298  signal spy_write_inhibit_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
299  signal spy_write_inhibit_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
300  signal spy_write_inhibit_r_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
301  signal spy_write_inhibit_rr_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
302 
303 
304  signal start_playback_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
305  signal start_playback_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
306  signal start_playback_r_system_r_source : std_logic_vector(num_RTM_cables-1 downto 0);
307  signal start_playback_r_system_rr_source : std_logic_vector(num_RTM_cables-1 downto 0);
308  signal start_playback_r_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
309  signal start_playback_rr_systemds2 : std_logic_vector(num_RTM_cables-1 downto 0);
310 
311  signal par_err_counter_next : arr_ctr_32bit(num_RTM_cables-1 downto 0);
312  signal par_err_counter : arr_ctr_32bit(num_RTM_cables-1 downto 0);
313 
314  component vme_local_switch is
315  port (
316  data_vme_up : out std_logic_vector (15 downto 0);
317  data_vme_from_below : in arr_16;
318  bus_drive_up : out std_logic;
319  bus_drive_from_below : in std_logic_vector);
320  end component vme_local_switch;
321 
322  signal data_vme_from_below : arr_16(4+9*num_RTM_cables+2 downto 0);
323  signal bus_drive_from_below : std_logic_vector(4+9*num_RTM_cables+2 downto 0);
324 
325 
326  component vme_inreg_notri is
327  generic (
328  ia_vme : integer;
329  width : integer);
330  port (
331  clk : in std_logic;
332  ncs : in std_logic;
333  rd_nwr : in std_logic;
334  ds : in std_logic;
335  addr_vme : in std_logic_vector (15 downto 0);
336  data_vme_in : in std_logic_vector (15 downto 0);
337  data_vme_out : out std_logic_vector (15 downto 0);
338  bus_drive : out std_logic;
339  data_from_vme : out std_logic_vector (width-1 downto 0);
340  data_to_vme : in std_logic_vector (width-1 downto 0);
341  read_detect : out std_logic;
342  write_detect : out std_logic);
343  end component vme_inreg_notri;
344 
346  generic (
347  ia_vme : integer;
348  width : integer);
349  port (
350  ncs : in std_logic;
351  rd_nwr : in std_logic;
352  ds : in std_logic;
353  addr_vme : in std_logic_vector (15 downto 0);
354  data_vme_in : in std_logic_vector (15 downto 0);
355  data_vme_out : out std_logic_vector (15 downto 0);
356  bus_drive : out std_logic;
357  data_from_vme : out std_logic_vector (width-1 downto 0);
358  data_to_vme : in std_logic_vector (width-1 downto 0));
359  end component vme_inreg_notri_async;
360 
361  component vme_outreg_notri is
362  generic (
363  ia_vme : integer;
364  width : integer);
365  port (
366  clk : in std_logic;
367  ncs : in std_logic;
368  rd_nwr : in std_logic;
369  ds : in std_logic;
370  addr_vme : in std_logic_vector (15 downto 0);
371  data_vme : out std_logic_vector (15 downto 0);
372  bus_drive : out std_logic;
373  data_to_vme : in std_logic_vector (width-1 downto 0);
374  read_detect : out std_logic);
375  end component vme_outreg_notri;
376 
377 
379  generic (
380  ia_vme : integer;
381  width : integer);
382  port (
383  ncs : in std_logic;
384  rd_nwr : in std_logic;
385  ds : in std_logic;
386  addr_vme : in std_logic_vector (15 downto 0);
387  data_vme : out std_logic_vector (15 downto 0);
388  bus_drive : out std_logic;
389  data_to_vme : in std_logic_vector (width-1 downto 0));
390  end component vme_outreg_notri_async;
391 
392 
393 
394  signal data_to_vme_REG_RW_RTM_SPY_SOURCE_MEM_START_ADDRESS : arr_16(num_RTM_cables-1 downto 0);
395  signal data_to_vme_REG_RW_RTM_SPY_SYSTEM_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
396  signal data_to_vme_REG_RW_RTM_SPY_SYSTEMDS2_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
397  signal data_from_vme_REG_RW_RTM_SPY_SOURCE_MEM_START_ADDRESS : arr_16(num_RTM_cables-1 downto 0);
398  signal data_from_vme_REG_RW_RTM_SPY_SYSTEM_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
399  signal data_from_vme_REG_RW_RTM_SPY_SYSTEMDS2_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
400 
401  signal data_to_vme_reg_ro_rtm_spy_source_mem_check_error_0 : arr_16(num_RTM_cables-1 downto 0);
402  signal data_to_vme_reg_ro_rtm_spy_source_mem_check_error_1 : arr_16(num_RTM_cables-1 downto 0);
403  signal data_to_vme_reg_ro_rtm_spy_system_mem_check_error_0 : arr_16(num_RTM_cables-1 downto 0);
404  signal data_to_vme_reg_ro_rtm_spy_system_mem_check_error_1 : arr_16(num_RTM_cables-1 downto 0);
405  signal data_to_vme_reg_ro_rtm_spy_systemds2_mem_check_error_0 : arr_16(num_RTM_cables-1 downto 0);
406  signal data_to_vme_reg_ro_rtm_spy_systemds2_mem_check_error_1 : arr_16(num_RTM_cables-1 downto 0);
407 
408  signal bit_error_counter_source_next : arr_ctr_32bit(num_RTM_cables-1 downto 0);
409  signal bit_error_counter_source : arr_ctr_32bit(num_RTM_cables-1 downto 0);
410  signal bit_error_latch_source : arr_26(num_RTM_cables-1 downto 0);
411  signal bit_error_detect_source : arr_52(num_RTM_cables-1 downto 0);
412 
413  signal bit_error_counter_system_next : arr_ctr_32bit(num_RTM_cables-1 downto 0);
414  signal bit_error_counter_system : arr_ctr_32bit(num_RTM_cables-1 downto 0);
415  signal bit_error_latch_system : arr_26(num_RTM_cables-1 downto 0);
416  signal bit_error_detect_system : arr_52(num_RTM_cables-1 downto 0);
417 
418  signal bit_error_counter_systemds2_next : arr_ctr_32bit(num_RTM_cables-1 downto 0);
419  signal bit_error_counter_systemds2 : arr_ctr_32bit(num_RTM_cables-1 downto 0);
420  signal bit_error_latch_systemds2 : arr_26(num_RTM_cables-1 downto 0);
421  signal bit_error_detect_systemds2 : arr_52(num_RTM_cables-1 downto 0);
422 
423  component or_all is
424  generic (
425  numbits : integer);
426  port (
427  DATA : in std_logic_vector(numbits - 1 downto 0);
428  or_all : out std_logic);
429  end component or_all;
430 
431 begin
432 
433  all_null<=(others=>'0');
434 
435  vme_local_switch_inst: entity work.vme_local_switch
436  port map (
441 
443  generic map (
444  ia_vme => ADDR_REG_RW_RTM_INPUT_COUNTER_RESET ,
445  width => 16)
446  port map (
447  clk => buf_clk40 ,
448  ncs => ncs,
449  rd_nwr => rd_nwr,
450  ds => ds,
453  addr_vme => addr_vme,
454  read_detect => open,
459  );
460 
462 
464  port map (
467  clk => buf_clk40 );
468 
469 
470 
471  CMX_generic_spy_mem_control_FSM_inst_SOURCE: entity work.CMX_generic_spy_mem_control_FSM
472  generic map (
473  ADDR_REG_RW_GENERIC_SPY_MEM_WORD => ADDR_REG_RW_RTM_SPY_SOURCE_MEM_WORD,
474  ADDR_REG_RW_GENERIC_SPY_MEM_CONTROL => ADDR_REG_RW_RTM_SPY_SOURCE_MEM_CONTROL,
475  ADDR_REG_RO_GENERIC_SPY_MEM_STATUS => ADDR_REG_RO_RTM_SPY_SOURCE_MEM_STATUS,
476  num_external_RAMS => num_RTM_cables)
477  port map (
478  clk => buf_clk40,
479  ncs => ncs,
480  rd_nwr => rd_nwr,
481  ds => ds,
482  addr_vme => addr_vme,
494 
495 
496  CMX_generic_spy_mem_control_FSM_inst_SYSTEM: entity work.CMX_generic_spy_mem_control_FSM
497  generic map (
498  ADDR_REG_RW_GENERIC_SPY_MEM_WORD => ADDR_REG_RW_RTM_SPY_SYSTEM_MEM_WORD,
499  ADDR_REG_RW_GENERIC_SPY_MEM_CONTROL => ADDR_REG_RW_RTM_SPY_SYSTEM_MEM_CONTROL,
500  ADDR_REG_RO_GENERIC_SPY_MEM_STATUS => ADDR_REG_RO_RTM_SPY_SYSTEM_MEM_STATUS,
501  num_external_RAMS => num_RTM_cables)
502  port map (
503  clk => buf_clk40,
504  ncs => ncs,
505  rd_nwr => rd_nwr,
506  ds => ds,
507  addr_vme => addr_vme,
519 
520  CMX_generic_spy_mem_control_FSM_inst_SYSTEMDS2: entity work.CMX_generic_spy_mem_control_FSM
521  generic map (
522  ADDR_REG_RW_GENERIC_SPY_MEM_WORD => ADDR_REG_RW_RTM_SPY_SYSTEMDS2_MEM_WORD,
523  ADDR_REG_RW_GENERIC_SPY_MEM_CONTROL => ADDR_REG_RW_RTM_SPY_SYSTEMDS2_MEM_CONTROL ,
524  ADDR_REG_RO_GENERIC_SPY_MEM_STATUS => ADDR_REG_RO_RTM_SPY_SYSTEMDS2_MEM_STATUS,
525  num_external_RAMS => num_RTM_cables)
526  port map (
527  clk => buf_clk40,
528  ncs => ncs,
529  rd_nwr => rd_nwr,
530  ds => ds,
531  addr_vme => addr_vme,
543 
544 
545  channel_gen: for channel in 0 to num_RTM_cables-1 generate
546 
547 
548 
549  --process to generate a local registers for the inhibit signal
550  process(forwarded_clock(channel),pll_locked)
551  begin
552  if pll_locked /='1' then
554  else
555  if rising_edge(forwarded_clock(channel)) then
557  end if;
558  end if;
559  end process;
560  process(forwarded_clock(channel))
561  begin
562  if rising_edge(forwarded_clock(channel)) then
564  end if;
565  end process;
566 
567 
568  --process to locally register the inhibit signal in system domain and yet again;
570  begin
571  if pll_locked/='1' then
572  spy_write_inhibit_r_SYSTEM(channel)<='0';
573  elsif rising_edge(buf_clk40) then
575  end if;
576  end process;
577  process(buf_clk40)
578  begin
579  if rising_edge(buf_clk40) then
581  end if;
582  end process;
583 
584 
585 
586  --process to locally register the inhibit signal in the DS2 domain using
587  --the system domain register as input;
589  begin
590  if pll_locked_ds2/='1' then
591  spy_write_inhibit_r_SYSTEMDS2(channel)<='0';
592  elsif rising_edge(buf_clk40_ds2) then
594  end if;
595  end process;
596  process(buf_clk40_ds2)
597  begin
598  if rising_edge(buf_clk40_ds2) then
600  end if;
601  end process;
602 
603 
604 
605  CMX_cable_clocked_80Mbps_input_module_inst: entity work.CMX_cable_clocked_80Mbps_input_module
606  generic map (
607  numbits_in_cable_connector => numbits_in_RTM_connector)
608  port map (
609  data => data_sdr_unmasked (channel),
611  forwarded_clock => forwarded_clock(channel),
612  ddr_data_in => ddr_data_in(channel),
613  buf_clk40 => buf_clk40,
614  buf_clk200 => '0',
616  del_array => (others=>(others =>'0')),
617  upload_delays => '0');
618 
619  parity_error_sig(channel)<=parity_error_unmasked_sig(channel) when channel_mask(channel)='0' else '0';
620  --PAR_ERROR(channel)<=PAR_ERROR_sig(channel);
621 
622  ch_quiet(channel) <= '1' when channel_mask(channel)='1' or (quiet='1' and parity_error_unmasked_sig(channel)='1') else '0';
623  data_sdr(channel) <= data_sdr_unmasked(channel) when ch_quiet(channel)/='1' else x"8000002000000";
624 
625  blk_mem_A8x52_B8x52_2clock_SOURCE: blk_mem_A8x52_B8x52_2clock
626  port map (
627  clka => buf_clk40,
628  ena => ena_RTM_SPY_SOURCE_individual(channel),
629  wea => wea_RTM_SPY_SOURCE_individual(channel),
630  addra => addra_RTM_SPY_SOURCE ,
631  dina => dina_RTM_SPY_SOURCE ,
632  douta => douta_RTM_SPY_SOURCE_individual(channel),
633  clkb => clkb_RTM_SPY_SOURCE_individual(channel),
634  enb => enb_RTM_SPY_SOURCE_individual(channel),
635  web => web_RTM_SPY_SOURCE_individual(channel),
636  addrb => addrb_RTM_SPY_SOURCE_individual(channel),
637  dinb => dinb_RTM_SPY_SOURCE_individual(channel),
638  doutb => doutb_RTM_SPY_SOURCE_individual(channel));
639 
640 
641  -- select the control signals based on the value of the mem_select_address_RTM_SPY_SOURCE
643  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
644 
646  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
647 
648  --this should generate a n-1 multiplexer with douta_RTM_SPY_SOURCE as output
649  --if there are moren than 1 rtm sources; if there is just one rtm source
650  --I expect the 1-1 'mux' will be optimized out.
652  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else (others=>'Z');
653 
654 
655  dinb_RTM_SPY_SOURCE_individual(channel)<=data_sdr(channel);
657  addrb_RTM_SPY_SOURCE_individual(channel)<=std_logic_vector(addrb_RTM_SPY_SOURCE_counter(channel));
658 
659 
660 
661  blk_mem_A8x52_B8x52_1clock_SYSTEM: blk_mem_A8x52_B8x52_1clock
662  port map (
663  clka => buf_clk40,
664  ena => ena_RTM_SPY_SYSTEM_individual(channel),
665  wea => wea_RTM_SPY_SYSTEM_individual(channel),
666  addra => addra_RTM_SPY_SYSTEM ,
667  dina => dina_RTM_SPY_SYSTEM ,
668  douta => douta_RTM_SPY_SYSTEM_individual(channel),
669  clkb => buf_clk40,
670  enb => enb_RTM_SPY_SYSTEM_individual(channel),
671  web => web_RTM_SPY_SYSTEM_individual(channel),
672  addrb => addrb_RTM_SPY_SYSTEM_individual(channel),
673  dinb => dinb_RTM_SPY_SYSTEM_individual(channel),
674  doutb => doutb_RTM_SPY_SYSTEM_individual(channel));
675 
676 
677  -- select the control signals based on the value of the mem_select_address_RTM_SPY_SYSTEM
679  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
680 
682  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
683 
684  --this should generate a n-1 multiplexer with douta_RTM_SPY_SYSTEM as output
685  --if there are moren than 1 rtm sources; if there is just one rtm source
686  --I expect the 1-1 'mux' will be optimized out.
688  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else (others=>'Z');
689 
690 
692  addrb_RTM_SPY_SYSTEM_individual(channel)<=std_logic_vector(addrb_RTM_SPY_SYSTEM_counter(channel));
693 
694 
695 
696  blk_mem_A8x52_B8x52_2clock_SYSTEMDS2: blk_mem_A8x52_B8x52_2clock
697  port map (
698  clka => buf_clk40,
699  ena => ena_RTM_SPY_SYSTEMDS2_individual(channel),
700  wea => wea_RTM_SPY_SYSTEMDS2_individual(channel),
701  addra => addra_RTM_SPY_SYSTEMDS2,
702  dina => dina_RTM_SPY_SYSTEMDS2,
703  douta => douta_RTM_SPY_SYSTEMDS2_individual(channel),
704  clkb => buf_clk40_ds2 ,
705  enb => enb_RTM_SPY_SYSTEMDS2_individual(channel),
706  web => web_RTM_SPY_SYSTEMDS2_individual(channel),
707  addrb => addrb_RTM_SPY_SYSTEMDS2_individual(channel),
708  dinb => dinb_RTM_SPY_SYSTEMDS2_individual(channel),
709  doutb => doutb_RTM_SPY_SYSTEMDS2_individual(channel));
710 
711 
712  -- select the control signals based on the value of the mem_select_address_RTM_SPY_SYSTEMDS2
714  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
715 
717  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
718 
719  --this should generate a n-1 multiplexer with douta_RTM_SPY_SYSTEMDS2 as output
720  --if there are moren than 1 rtm sources; if there is just one rtm source
721  --I expect the 1-1 'mux' will be optimized out.
723  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else (others=>'Z');
724 
725 
727  addrb_RTM_SPY_SYSTEMDS2_individual(channel)<=std_logic_vector(addrb_RTM_SPY_SYSTEMDS2_counter(channel));
728 
729 
730 
732  generic map (
733  ia_vme => ADDR_REG_RW_RTM_SPY_SOURCE_MEM_START_ADDRESS+2*channel,
734  width =>16)
735  port map (
736  ncs => ncs,
737  rd_nwr => rd_nwr,
738  ds => ds,
739  addr_vme => addr_vme,
741  data_vme_out => data_vme_from_below(4+9*channel),
742  bus_drive => bus_drive_from_below(4+9*channel),
746 
747 
748 
749 
750 
751 
753  begin
754  if pll_locked/='1' then
755  start_playback_r_SYSTEM(channel)<='0';
756  elsif rising_edge(buf_clk40) then
758  end if;
759  end process;
760  process(buf_clk40)
761  begin
762  if rising_edge(buf_clk40) then
763  --a local register (one copy for each of the memories)to ease timing
765  end if;
766  end process;
767 
768  --synchronisation of the start playback signal to the source domain
769  process(forwarded_clock(channel), pll_locked)
770  begin
771  if pll_locked/='1' then
772  start_playback_r_SYSTEM_r_SOURCE(channel)<='0';
773  else
774  if rising_edge(forwarded_clock(channel)) then
776  end if;
777  end if;
778  end process;
779  process(forwarded_clock(channel))
780  begin
781  if rising_edge(forwarded_clock(channel)) then
783  end if;
784  end process;
785 
786  --synchronisation of the start playback signal to the system ds2 domain
788  begin
789  if pll_locked_ds2/='1' then
790  start_playback_r_SYSTEMDS2(channel)<='0';
791  else
792  if rising_edge(buf_clk40_ds2) then
794  end if;
795  end if;
796  end process;
797  process(buf_clk40_ds2)
798  begin
799  if rising_edge(buf_clk40_ds2) then
801  end if;
802  end process;
803 
804 
805 
807  begin
808  if rising_edge(forwarded_clock(channel)) then
809  if start_playback_r_SYSTEM_rr_SOURCE(channel)='0' then
811  else
812  addrb_RTM_SPY_SOURCE_counter(channel)<=unsigned(
814  end if;
815  end if;
816  end process;
817 
819  begin
820  if rising_edge(buf_clk40) then
821  if start_playback_rr_SYSTEM(channel)='0' then
823  else
824  addrb_RTM_SPY_SYSTEM_counter(channel)<=unsigned(
826  end if;
827  end if;
828  end process;
829 
830 
832  begin
833  if rising_edge(buf_clk40_ds2) then
834  if start_playback_rr_SYSTEMDS2(channel)='0' then
836  else
837  addrb_RTM_SPY_SYSTEMDS2_counter(channel)<=unsigned(
839  end if;
840  end if;
841  end process;
842 
843 
844  --create local registers for the master inhibit to aid timing closure
846  begin
847  if pll_locked='0' then
849  web_RTM_SPY_SOURCE_rr_SYSTEM(channel)<='0';
850  enb_RTM_SPY_SOURCE_rr_SYSTEM(channel)<='0';
851  web_RTM_SPY_SOURCE_r_SYSTEM(channel)<='0';
852  enb_RTM_SPY_SOURCE_r_SYSTEM(channel)<='0';
853  elsif rising_edge(buf_clk40) then
859  end if;
860  end process local_buf_master_inhibit;
861  process(forwarded_clock(channel))
862  begin
863  if rising_edge(forwarded_clock(channel)) then
870  end if;
871  end process;
872 
873 
876 
880 
881 
882  --create local registers for the master inhibit to aid timing closure
884  begin
885  if pll_locked='0' then
887  web_RTM_SPY_SYSTEM_r_SYSTEM(channel)<='0';
888  enb_RTM_SPY_SYSTEM_r_SYSTEM(channel)<='0';
889  elsif rising_edge(buf_clk40) then
893  end if;
895 
898 
899 
903 
904 
905 
906  --create local registers for the master inhibit to aid timing closure
908  begin
909  if pll_locked_ds2='0' then
911  web_RTM_SPY_SYSTEMDS2_r_SYSTEMDS2(channel)<='0';
912  enb_RTM_SPY_SYSTEMDS2_r_SYSTEMDS2(channel)<='0';
913  elsif rising_edge(buf_clk40_ds2) then
917  end if;
920  begin
921  if rising_edge(buf_clk40_ds2) then
925  end if;
927 
930 
931 
935 
936 
937 
939  begin
940  if pll_locked_ds2/='1' then
941 
942  data_sdr_r_SYSTEMDS2(channel)<=(others=>'0');
943  data_sdr_rr_SYSTEMDS2(channel)<=(others=>'0');
944 
945  parity_error_r_SYSTEMDS2(channel)<='0';
946  data_DS2(channel)<=(others=>'0');
947 
948  elsif rising_edge(buf_clk40_ds2) then
949 
950  data_sdr_rr_SYSTEMDS2(channel)<=data_sdr_r_SYSTEMDS2(channel);
951  data_sdr_r_SYSTEMDS2(channel)<=data_sdr(channel);
952 
953  --WTF 20150209 push the mux before the register
954  if mode_control_RTM_SPY_SYSTEMDS2/=CONST_DPR_CONTROL_PLAYBACK then
955  data_DS2(channel)<=data_sdr(channel);
956  else
957  data_DS2(channel)<=doutb_RTM_SPY_SYSTEMDS2_individual(channel);
958  end if;
959 
960 
961  if mode_control_RTM_SPY_SYSTEMDS2/=CONST_DPR_CONTROL_PLAYBACK then
962  parity_error_r_SYSTEMDS2(channel)<=parity_error_sig(channel);
963  else
964  parity_error_r_SYSTEMDS2(channel)<='0';
965  end if;
966 
967  end if;
968  end process;
969 
970  --WTF 20150209 push the mux before the register
971  --select the data going out from the DS2 domain -
972  --data_DS2(channel)<=data_sdr_r_SYSTEMDS2(channel) when mode_control_RTM_SPY_SYSTEMDS2/=CONST_DPR_CONTROL_PLAYBACK
973  -- else
974  -- doutb_RTM_SPY_SYSTEMDS2_individual(channel);
975 
977  begin
978  if pll_locked/='1' then
979 
980  data_DS2_r_SYSTEM(channel)<=(others=>'0');
981  data_DS2_rr_SYSTEM(channel)<=(others=>'0');
982 
984  parity_error_r_SYSTEMDS2_r_SYSTEM(channel)<='0';
985 
986  elsif rising_edge(buf_clk40) then
987 
988  data_DS2_rr_SYSTEM(channel)<=data_DS2_r_SYSTEM(channel);
989  data_DS2_r_SYSTEM(channel)<=data_DS2(channel);
990 
992 
993  if mode_control_RTM_SPY_SYSTEM/=CONST_DPR_CONTROL_PLAYBACK then
995  else
996  parity_error_r_SYSTEMDS2_r_SYSTEM(channel)<='0';
997  end if;
998 
999  end if;
1000  end process;
1001 
1002  process(forwarded_clock(channel))
1003  begin
1004  if rising_edge(forwarded_clock(channel)) then
1005  data_sdr_r_SOURCE(channel)<=data_sdr(channel);
1006  end if;
1007  end process;
1008 
1009 
1010  --another mux to finally present the data on the output
1011  --either take data from SYSTEM RAM or from DS2 (register or memory)
1012  --no additional registers are implemented between the DS2 and rest of the logic
1013  data(numbits_in_RTM_connector*2*(channel+1)-1 downto numbits_in_RTM_connector*2*channel)
1014  <=data_DS2(channel) when mode_control_RTM_SPY_SYSTEM/=CONST_DPR_CONTROL_PLAYBACK
1015  else
1017 
1018  --WTF 20150209 This is incorrect timing:
1019  --parity_error(channel)<=parity_error_r_SYSTEMDS2_rr_SYSTEM(channel);
1020 
1021 
1022  --parity error counter
1023 
1025  generic map (
1026  ia_vme => ADDR_REG_RO_RTM_PARITY_ERROR_COUNTER+4*channel,
1027  width => 16)
1028  port map (
1029  addr_vme => addr_vme,
1030  ncs => ncs,
1031  rd_nwr => rd_nwr,
1032  ds => ds,
1033  data_to_vme => std_logic_vector(par_err_counter(channel)(15 downto 0)),
1034  data_vme => data_vme_from_below(4+9*channel+1),
1035  bus_drive => bus_drive_from_below(4+9*channel+1));
1036 
1037 
1039  generic map (
1040  ia_vme => ADDR_REG_RO_RTM_PARITY_ERROR_COUNTER+4*channel+2,
1041  width => 16)
1042  port map (
1043  addr_vme => addr_vme,
1044  ncs => ncs,
1045  rd_nwr => rd_nwr,
1046  ds => ds,
1047  data_to_vme => std_logic_vector(par_err_counter(channel)(31 downto 16)),
1048  data_vme => data_vme_from_below(4+9*channel+2),
1049  bus_drive => bus_drive_from_below(4+9*channel+2));
1050 
1051  par_err_counter_next(channel)<=par_err_counter(channel)+1;
1052  process(buf_clk40)
1053  begin
1054  if rising_edge(buf_clk40) then
1055  if counter_reset_rr_SYSTEM(channel) /= '1' then
1056  if par_err_counter(channel) /= max_ctr32 then
1057  if parity_error_r_SYSTEMDS2_rr_SYSTEM(channel) = '1' then
1058  par_err_counter(channel)<=par_err_counter_next(channel);
1059  end if;
1060  else
1061  par_err_counter(channel)<=max_ctr32;
1062  end if;
1063  else
1064  par_err_counter(channel)<=to_unsigned(0,32);
1065  end if;
1066  end if;
1067  end process;
1068 
1069 
1070  --this will make an error detection register that in turn will be used to
1071  --generate a latch; also an no-error run length counter is made in this process
1073  begin
1074  if rising_edge(forwarded_clock(channel)) then
1075  if counter_reset_rr_SYSTEM_rr_SOURCE(channel)/='1' then
1076  if bit_error_latch_source(channel)/=all_null
1077  or bit_error_counter_source(channel)=max_ctr32 then
1079  else
1081  end if;
1082  else
1083  bit_error_counter_source_next(channel)<=to_unsigned(0,32);
1084  end if;
1087  end if;
1088  end process error_detect_process_source;
1089 
1090  gen_err_latch_bit_source: for i_bit in 0 to numbits_in_RTM_connector -1 generate
1091  --resettable 'latch' (so not really a latch) that is set if there is an error
1092  --on a given bit
1093  process(forwarded_clock(channel))
1094  begin
1095  if rising_edge(forwarded_clock(channel)) then
1096  if counter_reset_rr_SYSTEM_rr_SOURCE(channel)/='1' then
1097  if bit_error_detect_source(channel)(i_bit)='1' or bit_error_detect_source(channel)(i_bit+numbits_in_RTM_connector)='1' then
1098  bit_error_latch_source(channel)(i_bit)<='1';
1099  end if;
1100  else
1101  bit_error_latch_source(channel)(i_bit)<='0';
1102  end if;
1103  end if;
1104  end process;
1105  end generate gen_err_latch_bit_source;
1106 
1107 
1108 
1110  begin
1111  if rising_edge(buf_clk40) then
1112  if counter_reset_rr_SYSTEM(channel)/='1' then
1113  if bit_error_latch_system(channel)/=all_null or bit_error_counter_system(channel)=max_ctr32 then
1115  else
1117  end if;
1118  else
1119  bit_error_counter_system_next(channel)<=to_unsigned(0,32);
1120  end if;
1123  end if;
1124  end process error_detect_process_system;
1125 
1126  gen_err_latch_bit_system: for i_bit in 0 to numbits_in_RTM_connector -1 generate
1127  --resettable 'latch' (so not really a latch) that is set if there is an error
1128  --on a given bit
1129  process(buf_clk40)
1130  begin
1131  if rising_edge(buf_clk40) then
1132  if counter_reset_rr_SYSTEM(channel)/='1' then
1133  if bit_error_detect_system(channel)(i_bit)='1' or bit_error_detect_system(channel)(i_bit+numbits_in_RTM_connector)='1' then
1134  bit_error_latch_system(channel)(i_bit)<='1';
1135  end if;
1136  else
1137  bit_error_latch_system(channel)(i_bit)<='0';
1138  end if;
1139  end if;
1140  end process;
1141  end generate gen_err_latch_bit_system;
1142 
1143 
1145  begin
1146  if rising_edge(forwarded_clock(channel)) then
1147  if counter_reset_rr_SYSTEM_rr_SYSTEMDS2(channel)/='1' then
1148  if bit_error_latch_systemds2(channel)/=all_null
1149  or bit_error_counter_systemds2(channel)=max_ctr32 then
1151  else
1153  end if;
1154  else
1155  bit_error_counter_systemds2_next(channel)<=to_unsigned(0,32);
1156  end if;
1159  end if;
1160  end process error_detect_process_systemds2;
1161 
1162  gen_err_latch_bit_systemds2: for i_bit in 0 to numbits_in_RTM_connector -1 generate
1163  --resettable 'latch' (so not really a latch) that is set if there is an error
1164  --on a given bit
1165  process(forwarded_clock(channel))
1166  begin
1167  if rising_edge(forwarded_clock(channel)) then
1168  if counter_reset_rr_SYSTEM_rr_SYSTEMDS2(channel)/='1' then
1169  if bit_error_detect_systemds2(channel)(i_bit)='1' or bit_error_detect_systemds2(channel)(i_bit+numbits_in_RTM_connector)='1' then
1170  bit_error_latch_systemds2(channel)(i_bit)<='1';
1171  end if;
1172  else
1173  bit_error_latch_systemds2(channel)(i_bit)<='0';
1174  end if;
1175  end if;
1176  end process;
1177  end generate gen_err_latch_bit_systemds2;
1178 
1179 
1180  -- create counter reset registers
1181  --double register to close timing
1182  process(buf_clk40)
1183  begin
1184  if rising_edge(buf_clk40) then
1186  end if;
1187  end process;
1189  begin
1190  if pll_locked/='1' then
1191  counter_reset_r_SYSTEM(channel)<='0';
1192  elsif rising_edge(buf_clk40) then
1194  end if;
1195  end process;
1196 
1197  --double register in the source domain
1198  process(forwarded_clock(channel))
1199  begin
1200  if rising_edge(forwarded_clock(channel)) then
1202  end if;
1203  end process;
1204  process(forwarded_clock(channel),pll_locked)
1205  begin
1206  if pll_locked/='1' then
1207  counter_reset_rr_SYSTEM_r_SOURCE(channel)<='0';
1208  elsif rising_edge(forwarded_clock(channel)) then
1210  end if;
1211  end process;
1212 
1213  --double register in the systemds2 domain
1214  process(buf_clk40_ds2)
1215  begin
1216  if rising_edge(buf_clk40_ds2) then
1218  end if;
1219  end process;
1221  begin
1222  if pll_locked_ds2/='1' then
1224  elsif rising_edge(buf_clk40_ds2) then
1226  end if;
1227  end process;
1228 
1229 
1230  --assign latches as data to the registers
1232  data_to_vme_REG_RO_RTM_SPY_SOURCE_MEM_CHECK_ERROR_1(channel)(numbits_in_RTM_connector-16-1 downto 0)<=bit_error_latch_source(channel)(numbits_in_RTM_connector-1 downto 16);
1233  data_to_vme_REG_RO_RTM_SPY_SOURCE_MEM_CHECK_ERROR_1(channel)(15 downto numbits_in_RTM_connector-16)<=(others=>'0');
1234 
1236  data_to_vme_REG_RO_RTM_SPY_SYSTEM_MEM_CHECK_ERROR_1(channel)(numbits_in_RTM_connector-16-1 downto 0)<=bit_error_latch_system(channel)(numbits_in_RTM_connector-1 downto 16);
1237  data_to_vme_REG_RO_RTM_SPY_SYSTEM_MEM_CHECK_ERROR_1(channel)(15 downto numbits_in_RTM_connector-16)<=(others=>'0');
1238 
1240  data_to_vme_REG_RO_RTM_SPY_SYSTEMDS2_MEM_CHECK_ERROR_1(channel)(numbits_in_RTM_connector-16-1 downto 0)<=bit_error_latch_systemds2(channel)(numbits_in_RTM_connector-1 downto 16);
1241  data_to_vme_REG_RO_RTM_SPY_SYSTEMDS2_MEM_CHECK_ERROR_1(channel)(15 downto numbits_in_RTM_connector-16)<=(others=>'0');
1242 
1244  generic map (
1245  ia_vme => ADDR_REG_RO_RTM_SPY_SOURCE_MEM_CHECK_ERROR+(4*channel),
1246  width => 16)
1247  port map (
1248  addr_vme => addr_vme,
1249  ncs => ncs,
1250  rd_nwr => rd_nwr,
1251  ds => ds,
1253  data_vme => data_vme_from_below(4+9*channel+3),
1254  bus_drive => bus_drive_from_below(4+9*channel+3));
1255 
1257  generic map (
1258  ia_vme => ADDR_REG_RO_RTM_SPY_SOURCE_MEM_CHECK_ERROR+(4*channel)+2,
1259  width => 16)
1260  port map (
1261  addr_vme => addr_vme,
1262  ncs => ncs,
1263  rd_nwr => rd_nwr,
1264  ds => ds,
1266  data_vme => data_vme_from_below(4+9*channel+4),
1267  bus_drive => bus_drive_from_below(4+9*channel+4));
1268 
1269 
1271  generic map (
1272  ia_vme => ADDR_REG_RO_RTM_SPY_SYSTEM_MEM_CHECK_ERROR+(4*channel),
1273  width => 16)
1274  port map (
1275  addr_vme => addr_vme,
1276  ncs => ncs,
1277  rd_nwr => rd_nwr,
1278  ds => ds,
1280  data_vme => data_vme_from_below(4+9*channel+5),
1281  bus_drive => bus_drive_from_below(4+9*channel+5));
1282 
1284  generic map (
1285  ia_vme => ADDR_REG_RO_RTM_SPY_SYSTEM_MEM_CHECK_ERROR+(4*channel)+2,
1286  width => 16)
1287  port map (
1288  addr_vme => addr_vme,
1289  ncs => ncs,
1290  rd_nwr => rd_nwr,
1291  ds => ds,
1293  data_vme => data_vme_from_below(4+9*channel+6),
1294  bus_drive => bus_drive_from_below(4+9*channel+6));
1295 
1296 
1298  generic map (
1299  ia_vme => ADDR_REG_RO_RTM_SPY_SYSTEMDS2_MEM_CHECK_ERROR+(4*channel),
1300  width => 16)
1301  port map (
1302  addr_vme => addr_vme,
1303  ncs => ncs,
1304  rd_nwr => rd_nwr,
1305  ds => ds,
1307  data_vme => data_vme_from_below(4+9*channel+7),
1308  bus_drive => bus_drive_from_below(4+9*channel+7));
1309 
1311  generic map (
1312  ia_vme => ADDR_REG_RO_RTM_SPY_SYSTEMDS2_MEM_CHECK_ERROR+(4*channel)+2,
1313  width => 16)
1314  port map (
1315  addr_vme => addr_vme,
1316  ncs => ncs,
1317  rd_nwr => rd_nwr,
1318  ds => ds,
1320  data_vme => data_vme_from_below(4+9*channel+8),
1321  bus_drive => bus_drive_from_below(4+9*channel+8));
1322 
1323 
1324 
1325  end generate channel_gen;
1326 
1327 
1328  or_all_parity_error_total: entity work.or_all
1329  generic map (
1330  numbits => num_RTM_cables )
1331  port map (
1334 
1335  --port enables - we enable B port when verifying, spying and playing back. Write
1336  --is enabled only when spying
1337  --no playback for the source spy
1338  enb_RTM_SPY_SOURCE <='1' when mode_control_RTM_SPY_SOURCE=CONST_DPR_CONTROL_SPY
1339  or mode_control_RTM_SPY_SOURCE=CONST_DPR_CONTROL_VERIFY
1340  else '0';
1341  web_RTM_SPY_SOURCE<='1' when mode_control_RTM_SPY_SOURCE=CONST_DPR_CONTROL_SPY else '0';
1342 
1343 
1344  enb_RTM_SPY_SYSTEM <='1' when mode_control_RTM_SPY_SYSTEM=CONST_DPR_CONTROL_SPY
1345  or mode_control_RTM_SPY_SYSTEM=CONST_DPR_CONTROL_VERIFY
1346  or mode_control_RTM_SPY_SYSTEM=CONST_DPR_CONTROL_PLAYBACK
1347  else '0';
1348  web_RTM_SPY_SYSTEM<='1' when mode_control_RTM_SPY_SYSTEM=CONST_DPR_CONTROL_SPY else '0';
1349 
1350 
1351  enb_RTM_SPY_SYSTEMDS2 <='1' when mode_control_RTM_SPY_SYSTEMDS2=CONST_DPR_CONTROL_SPY
1352  or mode_control_RTM_SPY_SYSTEMDS2=CONST_DPR_CONTROL_VERIFY
1353  or mode_control_RTM_SPY_SYSTEMDS2=CONST_DPR_CONTROL_PLAYBACK
1354  else '0';
1355  web_RTM_SPY_SYSTEMDS2<='1' when mode_control_RTM_SPY_SYSTEMDS2=CONST_DPR_CONTROL_SPY else '0';
1356 
1357 
1358 
1359 
1360 
1362  generic map (
1363  ia_vme => ADDR_REG_RW_RTM_SPY_SYSTEM_MEM_START_ADDRESS,
1364  width =>16)
1365  port map (
1366  ncs => ncs,
1367  rd_nwr => rd_nwr,
1368  ds => ds,
1369  addr_vme => addr_vme,
1371  data_vme_out => data_vme_from_below(4+9*num_RTM_cables),
1372  bus_drive => bus_drive_from_below(4+9*num_RTM_cables),
1376 
1377 
1378 
1380  generic map (
1381  ia_vme => ADDR_REG_RW_RTM_SPY_SYSTEMDS2_MEM_START_ADDRESS,
1382  width =>16)
1383  port map (
1384  ncs => ncs,
1385  rd_nwr => rd_nwr,
1386  ds => ds,
1387  addr_vme => addr_vme,
1389  data_vme_out => data_vme_from_below(4+9*num_RTM_cables+1),
1390  bus_drive => bus_drive_from_below(4+9*num_RTM_cables+1),
1394 
1395 
1397  generic map (
1398  ia_vme => ADDR_REG_RW_RTM_INPUT_CHANNEL_MASK,
1399  width =>16)
1400  port map (
1401  ncs => ncs,
1402  rd_nwr => rd_nwr,
1403  ds => ds,
1404  addr_vme => addr_vme,
1406  data_vme_out => data_vme_from_below(4+9*num_RTM_cables+2),
1407  bus_drive => bus_drive_from_below(4+9*num_RTM_cables+2),
1411  channel_mask<=data_from_vme_REG_RW_RTM_INPUT_CHANNEL_MASK(num_RTM_cables-1 downto 0);
1412 
1413 
1414 
1415 
1416 end Behavioral;
std_logic_vector (num_RTM_cables - 1 downto 0) ch_quiet
std_logic_vector (addr_port_width (num_RTM_cables) - 1 downto 0) mem_select_address_RTM_SPY_SYSTEM
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_r_system_rr_source
arr_ctr_8bit (num_RTM_cables - 1 downto 0) addrb_RTM_SPY_SYSTEM_counter
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_system_mem_check_error_0vme_outreg_reg_ro_rtm_spy_system_mem_check_error_0
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_system_split
std_logic_vector (num_RTM_cables - 1 downto 0) ena_rtm_spy_source_individual
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) douta_RTM_SPY_SYSTEM)
out read_detectstd_logic
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_systemds2_mem_check_error_0
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_system_r_system
in addr_vmestd_logic_vector (15 downto 0)
arr_16 (4 + 9 * num_RTM_cables + 2 downto 0) data_vme_from_below)
arr_1 (num_RTM_cables - 1 downto 0) wea_rtm_spy_system_individual
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_system_mem_check_error_0
out data_vmestd_logic_vector (15 downto 0)
out data_vme_outstd_logic_vector (15 downto 0)
arr_26 (num_RTM_cables - 1 downto 0) bit_error_latch_systemds2
out datastd_logic_vector ((numbits_in_cable_connector * 2) - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_rr_system
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_r_system_r_source
in addr_vmestd_logic_vector (15 downto 0)
arr_ctr_32bit (num_RTM_cables - 1 downto 0) par_err_counter_next
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_rr_system
Stretch_10 stretch_10_counter_resetstretch_10_counter_reset
out stretched_OUTstd_logic
Definition: Stretch_10.vhd:23
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_systemds2_next
arr_16 (num_RTM_cables - 1 downto 0) data_from_vme_REG_RW_RTM_SPY_SOURCE_MEM_START_ADDRESS
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_rr_systemds2
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_source_r_system
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_r_system
vme_inreg_notri vme_inreg_reg_rw_rtm_input_counter_resetvme_inreg_reg_rw_rtm_input_counter_reset
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_systemds2_individual
std_logic_vector (num_RTM_cables - 1 downto 0) parity_error_unmasked_sig
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_source_rr_system
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_systemds2_mem_check_error_0vme_outreg_reg_ro_rtm_spy_systemds2_mem_check_error_0
std_logic_vector (num_RTM_cables - 1 downto 0) parity_error_r_SYSTEMDS2_r_SYSTEM
blk_mem_a8x52_b8x52_1clock blk_mem_a8x52_b8x52_1clock_systemblk_mem_a8x52_b8x52_1clock_system
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_rr_source
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_system
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_SPY_SYSTEM_MEM_START_ADDRESS
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM
out data_from_vmestd_logic_vector (width - 1 downto 0)
arr_ctr_8bit (num_RTM_cables - 1 downto 0) addrb_RTM_SPY_SOURCE_counter
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_systemds2_split
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_systemds2_rr_systemds2
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_SPY_SYSTEMDS2_MEM_START_ADDRESS
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_source_rr_source
arr_1 (num_RTM_cables - 1 downto 0) wea_rtm_spy_source_individual
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_system_mem_check_error_1
in data_vme_from_belowarr_16
--! inputs from local registers and from
out data_from_vmestd_logic_vector (width - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_source_r_system_r_source
std_logic_vector (num_RTM_cables - 1 downto 0) channel_mask
arr_8 (num_RTM_cables - 1 downto 0) addrb_rtm_spy_systemds2_individual
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_source_r_source
vme_inreg_notri_async vme_inreg_reg_rw_rtm_input_channel_maskvme_inreg_reg_rw_rtm_input_channel_mask
out data_vmestd_logic_vector (15 downto 0)
vme_outreg_notri_async vme_outreg_reg_ro_rtm_parity_error_counter_0vme_outreg_reg_ro_rtm_parity_error_counter_0
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_r_system
in data_vme_instd_logic_vector (15 downto 0)
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) douta_RTM_SPY_SYSTEMDS2)
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_split
out write_detectstd_logic
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_systemds2_rr_systemds2
std_logic_vector (num_RTM_cables - 1 downto 0) ena_rtm_spy_systemds2_individual
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_source_next
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_systemds2_rr_systemds2
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM_rr_SOURCE
arr_ctr_32bit (num_RTM_cables - 1 downto 0) par_err_counter
in clkstd_logic
Definition: Stretch_10.vhd:24
std_logic_vector (num_RTM_cables - 1 downto 0) parity_error_sig
blk_mem_a8x52_b8x52_2clock blk_mem_a8x52_b8x52_2clock_sourceblk_mem_a8x52_b8x52_2clock_source
std_logic_vector (numactchan - 1 downto 0) counter_reset_r_SYSTEM
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_source_r_system
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_r_systemds2
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) dina_RTM_SPY_SYSTEM)
in ddr_data_inarr_RTM (num_RTM_cables - 1 downto 0)
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_SPY_SYSTEMDS2_MEM_START_ADDRESS
out or_allstd_logic
Definition: or_all.vhd:35
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_systemds2
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_systemds2_r_systemds2
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_source_split
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_individual
numbitsinteger :=2
Definition: or_all.vhd:31
in data_to_vmestd_logic_vector (width - 1 downto 0)
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) all_null)
std_logic_vector (4 + 9 * num_RTM_cables + 2 downto 0) bus_drive_from_below)
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_rr_systemds2
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_systemds2_mem_check_error_1
arr_52 (num_RTM_cables - 1 downto 0) bit_error_detect_source
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) dina_RTM_SPY_SOURCE)
out data_vme_upstd_logic_vector (15 downto 0)
--! connect this to
in del_arraycable_del_array_type (numbits_in_cable_connector downto 0)
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM_rr_SYSTEMDS2
out data_vme_outstd_logic_vector (15 downto 0)
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_source
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_rr_system
integer :=addr_port_width (num_RTM_cables) mem_select_addr_width
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_INPUT_COUNTER_RESET
in addr_vmestd_logic_vector (15 downto 0)
arr_1 (num_RTM_cables - 1 downto 0) web_rtm_spy_source_individual
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_r_systemds2
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_systemds2_mem_check_error_1vme_outreg_reg_ro_rtm_spy_systemds2_mem_check_error_1
arr_52 (num_RTM_cables - 1 downto 0) bit_error_detect_system
in data_to_vmestd_logic_vector (width - 1 downto 0)
arr_26 (num_RTM_cables - 1 downto 0) bit_error_latch_system
out bus_drive_upstd_logic
or of all bus drive requests from below
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_REG_RW_RTM_SPY_SOURCE_MEM_START_ADDRESS
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_system_individual
vme_inreg_notri_async vme_inreg_reg_rw_rtm_spy_system_mem_start_addressvme_inreg_reg_rw_rtm_spy_system_mem_start_address
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_INPUT_CHANNEL_MASK
in data_vme_instd_logic_vector (15 downto 0)
out datastd_logic_vector (numbits_in_RTM_connector * 2 * num_RTM_cables - 1 downto 0)
arr_1 (num_RTM_cables - 1 downto 0) wea_rtm_spy_systemds2_individual
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_system_mem_check_error_1vme_outreg_reg_ro_rtm_spy_system_mem_check_error_1
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_INPUT_COUNTER_RESET
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_r_system_rr_source
arr_1 (num_RTM_cables - 1 downto 0) web_rtm_spy_system_individual
out mem_select_addressstd_logic_vector (addr_port_width (num_external_RAMS) - 1 downto 0)
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_source_mem_check_error_1
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_source_r_source
arr_8 (num_RTM_cables - 1 downto 0) addrb_rtm_spy_source_individual
std_logic_vector (num_RTM_cables - 1 downto 0) clkb_rtm_spy_source_individual
std_logic_vector (num_RTM_cables - 1 downto 0) forwarded_clock
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_systemds2_split
in addr_vmestd_logic_vector (15 downto 0)
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_system_next
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM_r_SOURCE
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) douta_RTM_SPY_SOURCE)
vme_inreg_notri_async vme_inreg_reg_rw_rtm_spy_source_mem_start_addressvme_inreg_reg_rw_rtm_spy_source_mem_start_address
in DATAstd_logic_vector (numbits - 1 downto 0)
Definition: or_all.vhd:34
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_system_r_system
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) dina_RTM_SPY_SYSTEMDS2)
in data_to_vmestd_logic_vector (width - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) parity_error_r_SYSTEMDS2_rr_SYSTEM
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_system_r_system
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_spy_systemds2_r_systemds2
arr_ctr_8bit (num_RTM_cables - 1 downto 0) addrb_RTM_SPY_SYSTEMDS2_counter
out data_vme_outstd_logic_vector (15 downto 0)
vme_outreg_notri_async vme_outreg_reg_ro_rtm_parity_error_counter_1vme_outreg_reg_ro_rtm_parity_error_counter_1
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_source_mem_check_error_1vme_outreg_reg_ro_rtm_spy_source_mem_check_error_1
vme_outreg_notri_async vme_outreg_reg_ro_rtm_spy_source_mem_check_error_0vme_outreg_reg_ro_rtm_spy_source_mem_check_error_0
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_system_split
std_logic_vector (num_RTM_cables - 1 downto 0) parity_error_r_SYSTEMDS2
std_logic_vector (addr_port_width (num_RTM_cables) - 1 downto 0) mem_select_address_RTM_SPY_SOURCE
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_systemds2_split
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_system_split
arr_1 (num_RTM_cables - 1 downto 0) web_rtm_spy_systemds2_individual
arr_8 (num_RTM_cables - 1 downto 0) addrb_rtm_spy_system_individual
out bus_drivestd_logic
in addr_vmestd_logic_vector (15 downto 0)
in ddr_data_instd_logic_vector (numbits_in_cable_connector downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_source_split
blk_mem_a8x52_b8x52_2clock blk_mem_a8x52_b8x52_2clock_systemds2blk_mem_a8x52_b8x52_2clock_systemds2
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_r_system
vme_inreg_notri_async vme_inreg_reg_rw_rtm_spy_systemds2_mem_start_addressvme_inreg_reg_rw_rtm_spy_systemds2_mem_start_address
test registers
std_logic_vector (addr_port_width (num_RTM_cables) - 1 downto 0) mem_select_address_RTM_SPY_SYSTEMDS2
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_INPUT_CHANNEL_MASK
in data_vme_instd_logic_vector (15 downto 0)
arr_52 (num_RTM_cables - 1 downto 0) bit_error_detect_systemds2
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_reg_ro_rtm_spy_source_mem_check_error_0
out read_detectstd_logic
in data_to_vmestd_logic_vector (width - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_spy_systemds2_r_systemds2
in unstretched_INstd_logic
Definition: Stretch_10.vhd:22
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_SPY_SYSTEM_MEM_START_ADDRESS
arr_26 (num_RTM_cables - 1 downto 0) bit_error_latch_source
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_r_system_r_source
std_logic_vector (num_RTM_cables - 1 downto 0) ena_rtm_spy_system_individual
local_buf_master_inhibit_systemds2_rbuf_clk40_ds2,pll_locked_ds2
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM_r_SYSTEMDS2
in bus_drive_from_belowstd_logic_vector
std_logic_vector (3 downto 0) mode_control_RTM_SPY_SYSTEMDS2
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_spy_source_r_system_rr_source