ATLAS Offline Software
Loading...
Searching...
No Matches
jFexBits.h
Go to the documentation of this file.
1// Dear emacs, this is -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5*/
6
7
8#ifndef L1CALOFEXBYTESTREAM_JFEXBITS_H
9#define L1CALOFEXBYTESTREAM_JFEXBITS_H
10
11#include <cstdint>
12
13namespace LVL1::jFEXBits {
14/************ Words in Trailers ************/
16 static constexpr uint32_t ROD_WORDS = 2;
17 static constexpr uint32_t jFEX2ROD_WORDS = 2;
18
19 // For RoI data
20 static constexpr uint32_t TOB_TRAILERS = 2;
21
22 // For input data
23 static constexpr uint32_t DATA_BLOCKS = 60;
24 static constexpr uint32_t DATA_WORDS_PER_BLOCK = 8;
25
26
27/************ Calo source scheme ************/
28 static constexpr uint32_t EMB = 0;
29 static constexpr uint32_t TILE = 1;
30 static constexpr uint32_t EMEC = 2;
31 static constexpr uint32_t HEC = 3;
32 static constexpr uint32_t FCAL1 = 4;
33 static constexpr uint32_t FCAL2 = 5;
34 static constexpr uint32_t FCAL3 = 6;
35
36/************ FPGA scheme ************/
37 static constexpr uint32_t FPGA_U1 = 0;
38 static constexpr uint32_t FPGA_U2 = 1;
39 static constexpr uint32_t FPGA_U3 = 2;
40 static constexpr uint32_t FPGA_U4 = 3;
41
42/************ TOB,XTOB Counter Trailer ************/
43
45 static constexpr uint32_t TOB_COUNTS_6b = 0x3f;
47 static constexpr uint32_t TOB_COUNTS_1b = 0x1;
49 static constexpr uint32_t jJ_TOB_COUNTS = 1;
50 static constexpr uint32_t jLJ_TOB_COUNTS = 7;
51 static constexpr uint32_t jTau_TOB_COUNTS = 13;
52 static constexpr uint32_t jEM_TOB_COUNTS = 19;
53 static constexpr uint32_t jTE_TOB_COUNTS = 25;
54 static constexpr uint32_t jXE_TOB_COUNTS = 26;
55
56/************ jFEX to ROD Header ************/
57
59 static constexpr uint32_t ROD_HEADER_3b = 0x7;
60 static constexpr uint32_t ROD_HEADER_8b = 0xff;
61 static constexpr uint32_t ROD_HEADER_9b = 0x1ff;
62 static constexpr uint32_t ROD_HEADER_12b = 0xfff;
63 static constexpr uint32_t ROD_HEADER_24b = 0xffffff;
64
66 static constexpr uint32_t L1CALO_STREAM_ID_ROD_HEADER = 0;
67 static constexpr uint32_t L1CALO_STREAM_ID_SLOT_ROD_HEADER = 0;
68 static constexpr uint32_t L1CALO_STREAM_ID_FPGA_ROD_HEADER = 4;
69 static constexpr uint32_t L1CALO_STREAM_ID_INFO_ROD_HEADER = 6;
70 static constexpr uint32_t BCN_ROD_HEADER = 8;
71 static constexpr uint32_t CRC_ROD_HEADER = 20;
72 static constexpr uint32_t VERS_ROD_HEADER = 29;
73
74 static constexpr uint32_t L1ID_ROD_HEADER = 0;
75 static constexpr uint32_t ECRID_ROD_HEADER = 24;
76
77/************ jFEX to ROD Trailer ************/
78
80 static constexpr uint32_t ROD_TRAILER_1b = 0x1;
81 static constexpr uint32_t ROD_TRAILER_2b = 0x3;
82 static constexpr uint32_t ROD_TRAILER_4b = 0xf;
83 static constexpr uint32_t ROD_TRAILER_6b = 0x3f;
84 static constexpr uint32_t ROD_TRAILER_16b = 0xffff;
85 static constexpr uint32_t ROD_TRAILER_20b = 0xfffff;
86
88 static constexpr uint32_t PAYLOAD_ROD_TRAILER = 0;
89 static constexpr uint32_t FPGA_ROD_TRAILER = 18;
90 static constexpr uint32_t jFEX_ROD_TRAILER = 20;
91 static constexpr uint32_t RO_ROD_TRAILER = 24;
92 static constexpr uint32_t TSN_ROD_TRAILER = 28;
93
94 static constexpr uint32_t ERROR_ROD_TRAILER = 0;
95 static constexpr uint32_t CRC_ROD_TRAILER = 12;
96
97 static constexpr uint32_t ERROR_CORR_TRAILER = 5; // For corrective trailer bit in the jFEX to ROD Error bits
98 static constexpr uint32_t ERROR_SAFE_MODE = 4; // For safe mode in the jFEX to ROD Error bits
99 static constexpr uint32_t ERROR_PROTOCOL_ERROR = 3; // For protocol error in the jFEX to ROD Error bits
100 static constexpr uint32_t ERROR_LENGTH_MISMATCH = 2; // For length mismatch in the jFEX to ROD Error bits
101 static constexpr uint32_t ERROR_HEADER_MISMATCH = 1; // For header mismatch in the jFEX to ROD Error bits
102 static constexpr uint32_t ERROR_PROC_TIMEOUT = 0; // For processor timeout in the jFEX to ROD Error bits
103
104/************ ROD Trailer ************/
105
107 static constexpr uint32_t ROD_TRAILER_7b = 0x7f;
108
109 static constexpr uint32_t ROD_ERROR_CORR_TRAILER = 6; // For corrective trailer bit error
110 static constexpr uint32_t ROD_ERROR_PAYLOAD_CRC = 5; // For payload CRC error
111 static constexpr uint32_t ROD_ERROR_HEADER_CRC = 4; // For header CRC error
112 static constexpr uint32_t ROD_ERROR_RESERVED = 3; // Does nothing for now
113 static constexpr uint32_t ROD_ERROR_LENGTH_MISMATCH = 2; // For length mismatch in the jFEX to ROD Error bits
114 static constexpr uint32_t ROD_ERROR_HEADER_MISMATCH = 1; // For header mismatch in the jFEX to ROD Error bits
115 static constexpr uint32_t ROD_ERROR_PROC_TIMEOUT = 0; // For processor timeout in the jFEX to ROD Error bits
116
117
118/************ Input Bulk Stream data ************/
119
121 static constexpr uint32_t BS_TRAILER_1b = 0x1;
122 static constexpr uint32_t BS_TRAILER_4b = 0xf;
123 static constexpr uint32_t BS_TRAILER_7b = 0x7f;
124 static constexpr uint32_t BS_TRAILER_8b = 0xff;
125 static constexpr uint32_t BS_TRAILER_9b = 0x1ff;
126 static constexpr uint32_t BS_TRAILER_12b = 0xfff;
127
129 static constexpr uint32_t BS_CHANNEL_TRAILER = 0;
130 static constexpr uint32_t BS_SATUR_0_TRAILER = 0;
131 static constexpr uint32_t BS_SATUR_1_TRAILER = 8;
132 static constexpr uint32_t BS_BCID_TRAILER = 16;
133 static constexpr uint32_t BS_CRC_TRAILER = 23;
134
135 //Bit positions input data Et
136 static constexpr uint32_t BS_ET_DATA_0 = 0;
137 static constexpr uint32_t BS_ET_DATA_1 = 12;
138 static constexpr uint32_t BS_ET_DATA_4 = 24;
139 static constexpr uint32_t BS_ET_DATA_7 = 28;
140
141 //Bit position to merge divided Et data bits
142 static constexpr uint32_t BS_MERGE_DATA = 8;
143
144 const std::unordered_map<uint32_t, std::vector<uint16_t> > tile_channels = {
145 {0, { 20, 21, 22, 23, 56, 57, 58, 59} },
146 {1, {16, 17, 18, 19, 20, 21, 22, 23, 52, 53, 54, 55, 56, 57, 58, 59} },
147 {2, {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59} },
148 {3, {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59} },
149 {4, {16, 17, 18, 19, 20, 21, 22, 23, 52, 53, 54, 55, 56, 57, 58, 59} },
150 {5, { 20, 21, 22, 23, 56, 57, 58, 59} }
151 };
152
153
154
155} // namespace LVL1::jFEXBits
156
157#endif // L1CALOFEXBYTESTREAM_JFEXBITS_H
static constexpr uint32_t ROD_HEADER_8b
Definition jFexBits.h:60
static constexpr uint32_t PAYLOAD_ROD_TRAILER
Bit positions for jFEX to ROB Trailer.
Definition jFexBits.h:88
static constexpr uint32_t ROD_TRAILER_20b
Definition jFexBits.h:85
static constexpr uint32_t BS_ET_DATA_4
Definition jFexBits.h:138
static constexpr uint32_t ROD_TRAILER_6b
Definition jFexBits.h:83
static constexpr uint32_t ERROR_SAFE_MODE
Definition jFexBits.h:98
static constexpr uint32_t BS_CHANNEL_TRAILER
Bit positions Input bulk stream.
Definition jFexBits.h:129
static constexpr uint32_t ERROR_HEADER_MISMATCH
Definition jFexBits.h:101
static constexpr uint32_t ROD_WORDS
Number of jFEX to ROD trailer words.
Definition jFexBits.h:16
static constexpr uint32_t jTE_TOB_COUNTS
Definition jFexBits.h:53
static constexpr uint32_t EMB
Definition jFexBits.h:28
static constexpr uint32_t BS_MERGE_DATA
Definition jFexBits.h:142
static constexpr uint32_t jXE_TOB_COUNTS
Definition jFexBits.h:54
static constexpr uint32_t BS_BCID_TRAILER
Definition jFexBits.h:132
static constexpr uint32_t CRC_ROD_HEADER
Definition jFexBits.h:71
static constexpr uint32_t jFEX_ROD_TRAILER
Definition jFexBits.h:90
static constexpr uint32_t BS_TRAILER_9b
Definition jFexBits.h:125
static constexpr uint32_t ERROR_ROD_TRAILER
Definition jFexBits.h:94
static constexpr uint32_t ROD_TRAILER_1b
Masking words.
Definition jFexBits.h:80
static constexpr uint32_t BS_TRAILER_7b
Definition jFexBits.h:123
static constexpr uint32_t DATA_WORDS_PER_BLOCK
Definition jFexBits.h:24
static constexpr uint32_t TOB_TRAILERS
Definition jFexBits.h:20
static constexpr uint32_t ROD_HEADER_12b
Definition jFexBits.h:62
static constexpr uint32_t BS_TRAILER_1b
Masking words.
Definition jFexBits.h:121
static constexpr uint32_t BS_TRAILER_12b
Definition jFexBits.h:126
static constexpr uint32_t jEM_TOB_COUNTS
Definition jFexBits.h:52
static constexpr uint32_t FCAL3
Definition jFexBits.h:34
static constexpr uint32_t BS_SATUR_0_TRAILER
Definition jFexBits.h:130
static constexpr uint32_t FCAL1
Definition jFexBits.h:32
static constexpr uint32_t RO_ROD_TRAILER
Definition jFexBits.h:91
static constexpr uint32_t FPGA_U1
Definition jFexBits.h:37
static constexpr uint32_t HEC
Definition jFexBits.h:31
static constexpr uint32_t ROD_ERROR_LENGTH_MISMATCH
Definition jFexBits.h:113
static constexpr uint32_t TSN_ROD_TRAILER
Definition jFexBits.h:92
static constexpr uint32_t TOB_COUNTS_6b
Masking for TOB/xTOB Counter Trailer of jEM, jTau, jJ and jLJ.
Definition jFexBits.h:45
static constexpr uint32_t FPGA_U3
Definition jFexBits.h:39
static constexpr uint32_t ROD_ERROR_HEADER_CRC
Definition jFexBits.h:111
static constexpr uint32_t jLJ_TOB_COUNTS
Definition jFexBits.h:50
static constexpr uint32_t ROD_TRAILER_2b
Definition jFexBits.h:81
static constexpr uint32_t TILE
Definition jFexBits.h:29
static constexpr uint32_t FPGA_U2
Definition jFexBits.h:38
static constexpr uint32_t ROD_TRAILER_7b
Masking words.
Definition jFexBits.h:107
static constexpr uint32_t BS_TRAILER_8b
Definition jFexBits.h:124
static constexpr uint32_t L1CALO_STREAM_ID_ROD_HEADER
Bit positions for jFEX to ROB Trailer.
Definition jFexBits.h:66
static constexpr uint32_t ECRID_ROD_HEADER
Definition jFexBits.h:75
static constexpr uint32_t ERROR_CORR_TRAILER
Definition jFexBits.h:97
static constexpr uint32_t L1CALO_STREAM_ID_INFO_ROD_HEADER
Definition jFexBits.h:69
static constexpr uint32_t BS_TRAILER_4b
Definition jFexBits.h:122
static constexpr uint32_t BS_ET_DATA_1
Definition jFexBits.h:137
static constexpr uint32_t jFEX2ROD_WORDS
Definition jFexBits.h:17
static constexpr uint32_t jTau_TOB_COUNTS
Definition jFexBits.h:51
static constexpr uint32_t VERS_ROD_HEADER
Definition jFexBits.h:72
static constexpr uint32_t L1ID_ROD_HEADER
Definition jFexBits.h:74
static constexpr uint32_t ROD_ERROR_HEADER_MISMATCH
Definition jFexBits.h:114
static constexpr uint32_t TOB_COUNTS_1b
Masking for TOB Counter Trailer of jXE and jTE.
Definition jFexBits.h:47
static constexpr uint32_t BS_SATUR_1_TRAILER
Definition jFexBits.h:131
static constexpr uint32_t jJ_TOB_COUNTS
Bit positions for TOB Counter Trailer.
Definition jFexBits.h:49
static constexpr uint32_t ROD_ERROR_PAYLOAD_CRC
Definition jFexBits.h:110
static constexpr uint32_t L1CALO_STREAM_ID_FPGA_ROD_HEADER
Definition jFexBits.h:68
static constexpr uint32_t BS_CRC_TRAILER
Definition jFexBits.h:133
const std::unordered_map< uint32_t, std::vector< uint16_t > > tile_channels
Definition jFexBits.h:144
static constexpr uint32_t FPGA_ROD_TRAILER
Definition jFexBits.h:89
static constexpr uint32_t ROD_HEADER_24b
Definition jFexBits.h:63
static constexpr uint32_t CRC_ROD_TRAILER
Definition jFexBits.h:95
static constexpr uint32_t ERROR_PROC_TIMEOUT
Definition jFexBits.h:102
static constexpr uint32_t ERROR_PROTOCOL_ERROR
Definition jFexBits.h:99
static constexpr uint32_t EMEC
Definition jFexBits.h:30
static constexpr uint32_t BS_ET_DATA_7
Definition jFexBits.h:139
static constexpr uint32_t ROD_ERROR_RESERVED
Definition jFexBits.h:112
static constexpr uint32_t ROD_TRAILER_4b
Definition jFexBits.h:82
static constexpr uint32_t BS_ET_DATA_0
Definition jFexBits.h:136
static constexpr uint32_t ROD_ERROR_CORR_TRAILER
Definition jFexBits.h:109
static constexpr uint32_t DATA_BLOCKS
Definition jFexBits.h:23
static constexpr uint32_t BCN_ROD_HEADER
Definition jFexBits.h:70
static constexpr uint32_t ROD_ERROR_PROC_TIMEOUT
Definition jFexBits.h:115
static constexpr uint32_t L1CALO_STREAM_ID_SLOT_ROD_HEADER
Definition jFexBits.h:67
static constexpr uint32_t ERROR_LENGTH_MISMATCH
Definition jFexBits.h:100
static constexpr uint32_t ROD_TRAILER_16b
Definition jFexBits.h:84
static constexpr uint32_t FPGA_U4
Definition jFexBits.h:40
static constexpr uint32_t ROD_HEADER_3b
Masking words.
Definition jFexBits.h:59
static constexpr uint32_t ROD_HEADER_9b
Definition jFexBits.h:61
static constexpr uint32_t FCAL2
Definition jFexBits.h:33