Title: CMS GCT ESR: Firmware
1CMS GCT ESR Firmware
- Based on CMS GCT Algorithm Review
- Firmware Status Report
- by Magnus Hansen 2006-04-26
- Magnus Hansen, Greg Iles, Matt Stettler
- 10th May 2006, Version 3
2GCT Firmware
- VHDL written from high level perspective
- Does not use low level FPGA primatives except
BlockRAM - Makes code easier to understand change
- Let modern synthesis tools optimise the code
- Allows code to be generic (e.g. electron sort
could use same code as jet) - 2 processing channels
- Jet
- Electron
3Jet Data received from RCT by Jet-Leaf card
- 3 Leaf cards per Wheel card
- Leaf card receives data from
- 3 RCT crates
- Neighbouring leaf card
- Each RCT crate
- 2 units in phi (1 unit 20 degrees)
- 11 units in eta (1/2 of cms)
- JetFinder operates on RCT crate
- gt 3 JetFinders per Leaf
- gt 9 JetFinders per Wheel
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
JF
4Jet Leaf Processing(implemented)
- Receive data with MGT array
- Calculate Total Et
- Calculate Missing Et
- Create Clustered Jet
- See appendix for details of clustering algorithm
- Only pre-cluster at eta-0 boundary
- Calculate Ht from Clustered Jets
- Convert Et of Clustered Jets to rank
Leaf card contains most challenging firmware
Most subsquent functionality implemented in some
form
5Jet Wheel Processing (not implemented)
- Receive
- Up to 6 Complete Jets from 9 JetFinders
- Total Ht from 9 JetFinders
- Total Et Missing Et from 3 Leaf cards
- Distuingish between Central, Tau and Forward Jets
- Select 4 highest rank jets of each type
- Sum 9 values of Ht
- Sum 3 values of Total Et
- Sum 3 values of Missing Et
- Calculate JetCounts
6Jet Concentrator Processing (partly implemented)
- At eta-0 boundary
- Receive 9 un-finished clustered jets from each
wheel card (one per JetFinder - Create Clustered Jets
- Convert Et of Clustered Jets to rank
- Distinguish between Jets
- Sum Ht Clustered Jets
- Calculate Jet Count
- From wheel cards and eta-0
- Sort Complete Jets by rank
- Sum Ht, Missing Et Total Et
- Sum Jet Counts
7Elec Leaf Processing (not implemented)
- Receive from RCT 36 isolated and non-isolated
candidates per leaf card. - Sort by rank
- Forward to Concentrator
Elec Concentrator (not implemented)
- Sort by rank
- Forward to Global Trigger
8Concentrator (advanced stage)
- Additional functions
- VME64x interface to VME
- Master serial VME64x interface to rest of system
- Slink interface
- TTC distribution
9Schedule
- Source Card back end June
- Need USB access.
- Test firmware
- Leaf Card back mid July
- Leaf card firmware (electron sort priority)
- Also require USB to Serial VME64x
- Concentrator back beginning August
- Essential VME64x, TTC
- Electron Trigger Path
- Important dates
- October Source-Leaf-Concentrator Integration
- November Concentrator-GT interface
10Firmware status 1
- Pipeline / Derandomiser
- Advanced (Magnus)
- MGT array
- Advanced (Magnus with Input from T. Romanteau,
LLR, Paris) - Instantiation of MGT successfully simulated
- Including Loop-Back function for pattern
injection - Clock domain change circuitry implemented and
simulated - Includes data de-multiplexer
- Utilizes a Block RAM
- Latency programmable through simple interface
11Firmware status 2
- Jet Finder algorithm (Leaf Card)
- implemented, simulated, synthesized, and verified
in hardware - Bugs fixed with help from Greg Heath (Many
Thanks!) - Utilizes 2Mgates / Jet Finder (before bug
fixes) - Jet Selection
- Select the (4) best from (2) sources with (4)
features each - (numbers) passed as generics
- VHDL code written, simulated, and routed
- not tested in hardware
- Can be used also for electronsJet Selection
- Jet Finder algorithm (Concentrator Card)
- Not implemented
- Control interfaces
- Serial VME Advanced state (Matt)
- Slink Advanced state (Matt)
- Synchronous Control Advanced state (Greg I)
12Program until September
- Code assemblies for all FPGAs
- Electron leaf card
- U1, U2 Just started (Greg I, Matt, Magnus)
- Jet leaf card
- U1, U2 Ongoing (Greg I, Matt, Magnus)
- Wheel card
- Jet FPGA Just started (Greg I, Matt, Magnus)
- Some functionality moved from leaf card (minor)
- Energy summary FPGA not started (Greg I, Matt)
- Concentrator card
- Jet FPGA Started (Greg I, Matt, Magnus)
- Energy summary FPGA not started (Greg I, Matt)
- Control FPGA Started, advanced ( Greg I, Matt)
- VME / TTCrx interface from TTCci
- Testing VME64x TTC distribution in LTC
13Appendix (A)
- CMS GCT Algorithm Review
- Magnus Hansen
- 2006-04-26
14Functional description 1Energy Summary (Leaf
Card, Implemented)
- The sums for three RCT crates are performed on
each leaf card - Leaf card sum performed in Master FPGA
- The data format to the Energy Summary
- Two strips of 11 regions from one RCT crate
- Calculate Total Et
- Sum Et from all Regions
- Now keep 12 bits overflow
- Mod No truncation
- 10 4 1 bit in each leaf FPGA
- One more bit added on leaf card
- Calculate Missing Et
- For each of the two Region Strips, Sum Et
- 10 4 bits
- Using ROM, calculate Ex and Ey considering the
physical location of the - Keep 14 bits sign for each Ex and Ey
- Sum the Ex over all Region strips (idem Ey)
- Keep 14 2 bits sign overflow in each leaf
FPGA - Keep 16 bits sign overflow on leaf card
(excessive)
Eta10
Eta0
15Functional description 2 Jet Finder (Leaf Card,
Implemented)
Eta10
Eta0
- The data format on the input to the Jet Finder
- A 2 by 11 matrix of regions from one GCT crate
- Find Jet Seeds
- Compare every region with its neighbors within
the data set - Region considered as a jet seed if greater then
or greater than or equal to all neighbors as in
picture at the right
Eta
Seed GT?
Seed GT?
Seed GT?
Seed?
Seed GT?
Seed GT/EQ?
Seed GT/EQ?
Seed GT/EQ?
Seed GT/EQ?
Phi
16Functional description 3 Jet Finder (Leaf Card,
Implemented)
- Sort, allocate regions to seeds, Pre-cluster
seeds - Let the greatest jet seed absorb all its
neighbors - Let the second greatest absorb all its neighbors
that were not already taken - Etc.
- Truncation made to 10 bits Jet Et, overflowing to
0x3FF - Communicate with the two neighboring jet finders
in Phi - Store up to six pre-clustered jets on the
Receive edge in a pipe until receiving data
from neighbor(phi 1)s Send edge - Send up to six pre-clustered jets on the Send
edge to neighbor(phi 1)
Eta10
Eta0
Etc.
17Functional description 4 Jet Finder (Leaf Card,
Implemented)
- Find Jet Seeds
- Compare every Pre-clustered jet seed with its
neighbors within the new data set - Consisting of the Send edge from the
neighbor(phi 1) and my Receive edge - Sort, allocate regions to seeds, Cluster seeds
- Let the greatest Pre-clustered jet seed absorb
all its neighbors - Let the second greatest absorb all its neighbors
that were not already taken - Etc.
- Truncation made to 10 bits Jet Et , overflowing
to 0x3FF
Eta10
Eta0
Receive edge
Send edge
Receive edge
Send edge
18Functional description 5 Jet Finder (Leaf Card,
Implemented)
- Report Non-complete jet
- Clustered jet seed on Eta 0
- Sent to the Concentrator card
- Transform and then Report Complete jets and Ht to
Wheel card - Et -gt Rank transform using LUT
- One LUT per eta/phi combination
- Et, Tau veto bit on input
- Eta and Phi geographical
- Implements Threshold
- 6 bit Rank, 1 bit valid_Ht on output
- Total Ht calculated at this stage
- Not including Non-complete jets (Done in Conc.
card) - 13 bits Et overflow
Eta0
Eta10
Complete Jets
Non-complete jets
19Functional description 6 Jet Finder (Wheel card,
code exist)
9 6 jets from 9 Jet Finders on three Leaf cards
- Receive Complete jets from nine Jet Finders on
Leaf cards - Three leaf cards
- Distinguish between jet type
- Central, Tau, and Forward
- Create jet counts
- Select the four highest rank jets of each type
and report to Concentrator card
Jet type Distinction
Up to Four jets of each type to Concentrator card
Central
Tau
Forward
Central jets
Tau jets
Forward jets
20Functional description 7 Energy Summary (Wheel
card, not impl.)
- Calculate Total Et
- For three leaf cards
- 18 bits overflow (Three sources of 16 bits
overflow) - Calculate Total Ht
- For three leaf cards
- 16 bits overflow (Nine sources of 13 bits Et
overflow) - Calculate Missing Et
- For three leaf cards
- 2 17 bits overflow (Three sources of 2 16
bits overflow) - Report to Concentrator card
21Functional description 7 Jet Finder
(Concentrator card, not impl.)
- Receive nine Non-finished Clustered jets from
each wheel card - Actually, one from each Jet Finder
- Find Jet Seeds
- Compare every Clustered jet seed with its
neighbors within the data set - Arranged as a 2 by 18 tail-biting matrix of
Non-finished Clustered jets - Sort, allocate Non-finished Clustered jets to
seeds, Cluster these seeds - Let the greatest Clustered jet seed absorb all
its neighbors - Let the second greatest absorb all its neighbors
that were not already taken - Etc.
22Functional description 8 Jet Finder
(Concentrator card, not impl.)
- Transform Et to Rank
- Et -gt Rank transform using LUT
- One LUT per eta/phi combination
- Et, Tau veto bit on input
- Eta and Phi geographical
- 6 bit Rank on output
- Distinguish between jet type
- Central, Tau, and Forward
- Create jet counts
- Select the four highest rank jets of each type
- Total Ht for Non-complete jets calculated at this
stage
23Functional description 9(Concentrator card, not
implemented)
Wheel
Eta 0
To GT
- Wheel
- Select four highest Rank jets of each type
- And electrons, of course
- Finish Energy Summary, Jet counts, etc.
- Report to GT
24Functional block diagram of one Complete Jet
Finder
25Leaf card functional block diagram
- Three Complete Jet Finders
U2, contains JF1
U1, contains JF2 and JF3
26Appendix (B)
- CMS GCT Latency
- Brief algorithm description
- Magnus Hansen
- 2006-04-26
27Jet Step 1a Leaf card- Before communication
with neighbors
1 cp
1 cp
1 cp
3 cp
(31)/2 1 cp
Find jet Centers
Sort Allocate Regions
Pre- Cluster Jet seeds
Data exchange
2 bit gain 12 bit ADC
De-serialize
28Jet Step 1b Leaf card- After communication with
neighbors
1 cp
1 cp
1 cp
1 cp
1 cp
Find jet Centers
Sort Allocate Pre-clustered jets
Cluster Jets, Et-gtRank
SDR 2 DDR
Data formatting
29Jet Step 2 Wheel card
1 cp
1 cp
1 cp
Distinguish jet types and select four Greatest of
each
SDR 2 QDR
DDR 2 SDR
Wheel Jets
Complete Jets
0 cp
Forward un-finished Jets to Concentrator card
Un-finished Jets
30Jet Step 3a Concentrator card
1 cp
1 cp
1 cp
1 cp
1 cp
Find jet Centers
Sort Allocate Pre-clustered jets
Cluster Jets Et-gtrank
DDR 2 SDR
Distinguish jet types and select four Greatest of
each type
Un-finished Jets
Eta0 Jets
- Un-finished jets are not on critical path since
they arrive straight from leaf card without
passing through wheel card FPGA - 3 cp not spent
31Jet Step 3b Concentrator card
1 cp
1 cp
QDR 2 SDR
Select Four Greatest of each type
Wheel Jets
1 cp
SDR 2 DDR
Eta0 Jets
1 cp
QDR 2 SDR
Wheel - Jets
Virtex4 support this latency figure
- Three Jet Source regions at this stage
- Plus end of the barrel
- Minus end of the Barrel
- Eta 0 region
32Electrons Step 1 Leaf card
1 cp
1 cp
(31)/2 1 cp
Select four Greatest of each
SDR 2 DDR
De-serialize
1 cp
1 cp
(31)/2 1 cp
Select four Greatest of each
SDR 2 DDR
De-serialize
- Isolated and non-isolated mixed
- Isolated on one fiber
- Non-isolated on one fiber
- Mix on one fiber
33Electrons Step 2 Concentrator card
1 cp
1 cp
Select Four Greatest of each type
1 cp
DDR 2 SDR
DDR 2 SDR
Electrons b
Electrons a
1 cp
SDR 2 DDR
1 cp
1 cp
DDR 2 SDR
- Electrons b
DDR 2 SDR
- Electrons a
Virtex4 support this latency figure
34Concentrator card to GTDS92LV16
In GT 0.875 cp few ns
Any Output To GT
0.5 cp few ns
DS92LV16
DS92LV16
2m Cable delay
- DS92LV16
- Required technology
- Running on the border of specification
- Specified to 25 MHz to 80 MHz
- Operating at 80.16 MHz
- Prevision made to replace with other technology
- 8b10b or equivalent
- Latency may increase
35Conclusion
- Jet latency estimated to 25 cp
- Routed to speed in XC2V4000-6
- Requested contingency 3 cp for input alignment
- Optimization possible
- Electron latency estimated to 9 cp
- Subset of jet algorithm
- Requested contingency 3 cp for input alignment
- Optimization possible