ME0 Segment �Finding Firmware
Andrew Peck�Boston University
2021
ME0
2
ME0 readout paths
3
EMTF Sector Processor
2 x 16 or 1 x 25 Gbps �per 40 degrees
LpGBTs
8 per ME0 layer
VFAT3
VFAT3
24x VFAT3
Per layer:
8x 10.24 Gbps
x 6 layers
x 2 chambers
320Mbps
elink x1
320Mbps
elink x8
DTH
Central DAQ
Worst case:
6 x 16 Gbps or 4 x 25 Gbps
per 40 degrees
Trigger links
DAQ/control links
ATCA Backend
40 degrees each,
18 cards total
Trigger & DAQ
DAQ
Trigger
A. Peck / N. McColl (UCLA), E. Juska (TAMU), G. De Lentdecker (ULB)
DAQ + Trigger
Segment Finding
4
Segment Identification
Sorting
Output Segments
Input Sbits
Fitting
Segment Finding Data Flow:
Naive Implementation
I am working on a very naive, "TMB-like" segment finding firmware
5
Data Flow
6
partition
Pattern Unit
Pattern Unit
Pattern Unit
Pattern Unit
Pattern Unit
Pattern Unit
x192
pre-sorting
choose best 1 segment for every N �(e.g. 8) neighboring strips�
1/strip
ghost cancellation��prevent retriggering on same segment in subsequent bx ��prevent triggering multiple times on neighboring strips
partition sorting ��choose best�N (e.g. 4) segments from each partition
chamber sorting ��choose best�N (e.g. 4) segments from entire chamber
fitting��non-
existent �right now
1536 pattern units /
chamber
1536 candidates /�chamber
192 candidates /�chamber
128 candidates / �chamber
16 candidates /
chamber
16 segments /
chamber
Data Flow
7
Clean structural implementation...
Partitions x8
First Stage Sorting
Final Sorting
Pattern Finding
����
8
Implementation Status
9
Resource utilization
10
Resource utilization
320MHz :
11
Resource utilization
12
Implemented in ME0 APEX with GEM_AMC firmware
VU13P (standalone)
Outstanding Firmware Work
13
Outstanding Software Work
14
Backup
15
Patterns
--pat=1 span=37
ly0 ----------------------------xxxxxxxxx
ly1 ------------------------xxxxxxxxx----
ly2 ----------------xxxxxxxxxxxx---------
ly3 ---------xxxxxxxx--------------------
ly4 ----xxxxxxxxx------------------------
ly5 xxxxxxxxx----------------------------
Casting very wide pattern nets compared to CSC pattern finding
e.g. span of 37, compared to span of 11 in CSC
specify as e.g.:�
constant pat_l7 : pat_unit_t := (
id => 2,
ly0 => (lo => -18, hi => -10),
ly1 => (lo => -14, hi => -6),
ly2 => (lo => -9, hi => 2),
ly3 => (lo => 2, hi => 9),
ly4 => (lo => 6, hi => 14),
ly5 => (lo => 10, hi => 18)
);
16
--pat=5 span=23
ly0 -------------------xxxx
ly1 ----------------xxxxx--
ly2 -----------xxxx--------
ly3 --------xxxx-----------
ly4 --xxxxx----------------
ly5 xxxx-------------------
--pat=7 span=17
ly0 -------------xxxx
ly1 ------------xxxx-
ly2 --------xxxx-----
ly3 ------xxxxx------
ly4 -xxxx------------
ly5 xxxx-------------
Patterns are arbitrary right now, � used to occupy the FPGA �
Need more careful consideration and study!!
Cross Partition Segment Finding
�My dumb approach right now is to just ORs together neighboring partitions (duplicates all segments)...
Cross-partition ghost cancellation trims duplicates
We need to think much more about this...
What we have now is probably good enough for a test stand
.... but really bad for LHC
17
ME0 trigger path: Opto-hybrid to Backend
ME0 trigger path: ATCA Backend to EMTF
18
A. Peck / N. McColl (UCLA), E. Juska (TAMU), G. De Lentdecker (ULB)
ME0 trigger path: ATCA Backend to EMTF
19
Mean # of Segments per 40 degrees per bx | ||||||
| PU=140 | PU=200 | PU=240 | |||
Neutrons x1 | 0.14 | 0.22 | 0.28 | |||
Neutrons x3 | 0.29 | 0.75 | 1.41 | |||
Compare to 21 or 28 stubs
A. Peck / N. McColl (UCLA), E. Juska (TAMU), G. De Lentdecker (ULB)
60°