Presentation is loading. Please wait.

Presentation is loading. Please wait.

9/11/01 CDRZ Fitter1 Z Fitter Algorithm and Implementation Masahiro Morii, Harvard U. Requirements, I/O Algorithm Implementation Resources & Latency.

Similar presentations


Presentation on theme: "9/11/01 CDRZ Fitter1 Z Fitter Algorithm and Implementation Masahiro Morii, Harvard U. Requirements, I/O Algorithm Implementation Resources & Latency."— Presentation transcript:

1 9/11/01 CDRZ Fitter1 Z Fitter Algorithm and Implementation Masahiro Morii, Harvard U. Requirements, I/O Algorithm Implementation Resources & Latency

2 9/11/01 CDRZ Fitter2 Executive Summary Z Fitter measures track’s z 0, p T, tan Algorithm demonstrated in C++ emulation LUTs reduce real-time computation to minimum Resource and timing evaluated Use 4% of CLBs in XC2V4000 Can process 3 seeds/CLK4 in pipeline Latency < 1 CLK4 for each seed FPGA implementation ready to start

3 9/11/01 CDRZ Fitter3 Functionality Fit seed tracks from the Finder to a helix A seed track = a set of 10 TSF segments Measure z 0, p T, tan  Decision Module segment fitted track z0z0

4 9/11/01 CDRZ Fitter4 I/O Inputs from Seed Finder TSF segments, hit map Curvature  (or 1/p T ), tan FPGA internal bus Outputs to Decision Module Fit results: z 0, z 0 error, , tan Hit map Sent over 10 traces at 45 MHz

5 9/11/01 CDRZ Fitter5 Inputs TSF segments 10 bit  and 4 bit error  is relative to the seed segment  Only 9 segments/seed are needed Error is not used by the Fitter Hit map Which layer had a segment  10 bits

6 9/11/01 CDRZ Fitter6 Inputs Curvature  Fitter needs a 1 st guess of  from the Finder 6-bit resolution tan Not used by the Fitter Finder provides 6-bit resolution

7 9/11/01 CDRZ Fitter7 Outputs Fit results Hit map Passed through from input QuantityUnitResolutionLimits z0z0 cm8 bits±127 cm z 0 errorcm4 bits0 to 15 cm  2 -12 cm - 1 8 bits|p T | > 145 MeV/c tan 2 -5 8 bits |tan | < 3.97

8 9/11/01 CDRZ Fitter8 Algorithm Step 1: r-  fit Ignore stereo information 6 measurements of  at different r Find seed  and  that minimize  2 in r-  Step 2: z 0 fit Use stereo information 6 measurements of z at different r Find z 0 and tan that minimize  2 in r-z

9 9/11/01 CDRZ Fitter9 r-  Fit Merge stereo layers  virtual axial layers 3 U+V pairs plus 3 axial  6 r-  measurements  = 0 Subtract shift due to curvature using input  Residuals are due to errors in  and  (seed)

10 9/11/01 CDRZ Fitter10 r-  Fit  residual Calculate and minimize Error of  Error of seed   =  + 

11 9/11/01 CDRZ Fitter11 z 0 Fit Go back to 6 stereo layers Apply corrections for  and   =  Subtract shift due to curvature using fitted  Residuals are due to stereo angles

12 9/11/01 CDRZ Fitter12 z 0 Fit  residual 6 z i make a straight line in d-z plane Stereo angle z d z0z0

13 9/11/01 CDRZ Fitter13 z 0 Fit Minimize Assume error

14 9/11/01 CDRZ Fitter14 Implementation Biggest concern: Speed Pre-compute as much as possible Most computation packed in LUTs Only additions and multiplications at run time First step: Software emulation Bit-wise emulation of what hardware will do Validate the algorithm Study and optimize the performance

15 9/11/01 CDRZ Fitter15 Software Emulation bool L1DczNIFitter::zFitter(const L1DczNIFtable* table, int hitmap, const int* segphi, int rhoin, int &z0, int &z0err, int &rhoout, int &dipout) const { if (!table->fitok(hitmap)) { z0 = -128; z0err = 15; rhoout = -128; dipout = -128; return false; } int phi[9]; int rh = table->rh5(rhoin); int hitax = table->hitax(hitmap); int sumr2phi = 0; int sumr2phidpdr = 0; int i; for (i = 0; i < 9; i++) { phi[i] = (segphi[i]*table->phiconv(i))>>13; phi[i] += table->twistzero(i); if (rhoin >= 0) phi[i] += table->curvcorr(i,rh); else phi[i] -= table->curvcorr(i,rh); if (table->useax(hitax,i)) { sumr2phi += table->wr2(i)*phi[i]; sumr2phidpdr += table->wr2dpdr(i,rh)*phi[i]; } int dPhi1 = (sumr2phi*table->sumr2dpdr2(hitax,rh))>>13; int dPhi2 = (sumr2phidpdr*table->sumr2dpdr(hitax,rh))>>13; int dPhi3 = (dPhi1-dPhi2)*table->denomrp(hitax,rh); int dPhi = dPhi3>>16; int dRho1 = (sumr2phi*table->sumr2dpdr(hitax,rh))>>14; int dRho2 = (sumr2phidpdr*table->sumr2(hitax))>>14; int dRho3 = (dRho1-dRho2)*table->denomrp(hitax,rh); int dRho = dRho3>>16; rhoout = (rhoin<<2) + dRho; hitmap &= 63; rh = table->rh3(rhoout); int sumzs2 = 0; int sumzds2 = 0; for (i = 0; i < 6; i++) { phi[i] += -dPhi + ((table->dphidrho(i,rh)*dRho)>>6); int z = (table->rstereo(i)*phi[i])>>8; if (hitmap & (1<<i)) { sumzs2 += z*table->sigma2z(i); sumzds2 += z*table->dsigma2z(i,rh); } int z01 = (sumzs2*table->sumd2s2(hitmap,rh))>>6; int z02 = (sumzds2*table->sumds2(hitmap,rh))>>6; z0 = ((z01-z02)*table->denomzt(hitmap,rh))>>16; int td1 = (sumzds2*table->sums2(hitmap))>>1; int td2 = (sumzs2*table->sumds2(hitmap,rh))>>1; dipout = ((td1-td2)*table->denomzt(hitmap,rh))>>16; z0err = table->z0err(hitmap,rh); return true; } The whole code (58 lines C++) is made of LUTs, additions, multiplications and bit shifts

16 9/11/01 CDRZ Fitter16 Engineering Constraints FPGA: Xilinx Virtex-II XC2V4000 chosen for the Seed Track Finder Allow much smaller resources than Finder As few as possible CLBs Latency: as short as possible Ideally < 1 CLK4 FPGA runs at 180 MHz  48 ticks/CLK4 Most logic operations take 1 tick 18-bit multiplication takes 2 ticks

17 9/11/01 CDRZ Fitter17 Seed Counting 12 seeds/module/CLK4  4 Engines Each Finder/Fitter pair processes 3 seeds Fitter receives a new seed every 1/3 CLK4 Fitting takes ~3/4 CLK4 for each seed  Pipeline processing Finder Fitter ~3/4 CLK4 A seed arriving every 1/3 CLK4 Decision Module

18 9/11/01 CDRZ Fitter18 Data Flow r-  fit z 0 fit

19 9/11/01 CDRZ Fitter19 r-  Fit Block Input 9 segments 3 segs/pipeline Unit conversion Stereo cancellation Curvature subtraction Accumulate Carry stereo segments to z 0 Fit

20 9/11/01 CDRZ Fitter20 Accumulator Accumulate 2 quantities from 3 sources arriving every 2 ticks Pipeline 1 Pipeline 2 Pipeline 3

21 9/11/01 CDRZ Fitter21  and  Calculation 6 multiplications and 2 additions in 5 ticks

22 9/11/01 CDRZ Fitter22 z 0 Fit Block  and  from r-  Fit 6 Stereo segments 3 segs/pipeline ,  correction   z conversion Accumulate Done!

23 9/11/01 CDRZ Fitter23 Resources Dominated by the LUTs

24 9/11/01 CDRZ Fitter24 Timing Input arrives r-  pipeline  and  calculated DPM z 0 pipeline z 0 and tan calculated 37 ticks Input arrives Next seed arrives Time is in CLK180 ticks

25 9/11/01 CDRZ Fitter25 Timing and Latency Separation between two input seeds  15 OK to process 3 seeds/CLK4 @ 180 MHz 2 seeds/CLK4 if 120 MHz (same as Finder) Latency for z 0 and tan = 37 ticks ~3/4 CLK4 @ 180 MHz Output will add ~5 ticks  Still < 1 CLK4 If 120 MHz, ~1.3 CLK4

26 9/11/01 CDRZ Fitter26 Executive Summary Z Fitter measures track’s z 0, p T, tan Algorithm demonstrated in C++ emulation LUTs reduce real-time computation to minimum Resource and timing evaluated Use 4% of CLBs in XC2V4000 Can process 3 seeds/CLK4 in pipeline Latency < 1 CLK4 for each seed FPGA implementation ready to start


Download ppt "9/11/01 CDRZ Fitter1 Z Fitter Algorithm and Implementation Masahiro Morii, Harvard U. Requirements, I/O Algorithm Implementation Resources & Latency."

Similar presentations


Ads by Google