RD53A DAQ 
 Memo & Log 
  
 Useful links 
  
 Preparation 
 Firmware 
Firmwareのversionが古い場合,新しいversionをもってくる. 
 
FirmwareをXpressk7にflashする. 
-  (Ohio cardのそれぞれのPortに載っているパーツがAC or DCか確認する)
  -  JTAGをXpressk7とPCのUSBポートに接続.
  -  
$ source /opt/Xilinx/Vivado/2019.02/setting64.sh
  -  
$ cd YARR-FW-20yymmdd/scripts
  -  
$ ./flash.sh or $ python flash.py 
-  flash.shの場合は,該当するbit fileをstrageからinstallする.old versionやFNAL versionなどはない.
  -  flash.pyの場合は,YARR-FW-20yymmdd下にあるbit fileから選ぶことができる.よく,syn/xpressk7下に置いたりする(?)
 
 
  -  基本的に以下のversionを選択する. 
-  Xpressk7_325 (現在持っているXpressk7のversionが325というものらしい)
  -  Ohio card
  -  160Mbps
  -  4x4 (data line数)(FNALのように1つtrigger用=DCだと3x4)
 
 
  -  問題なく焼き終えたらreboot.(焼くのにだいたい10分くらいかかる)
 
 
 Check Communication with XpressK7 
Softwareが古い場合,新しいversionのを持ってくる. 
 
RD53にconfigを通す前に,Xpressk7とPCIe communicationできているか確認する. 
-  
$ cd YARR-20yymmdd
  -  
$ ./bin/specBenchmarkDma
 
 
 Config File 
scanをする際にcontroller configやconnectivity config, scan configを指定する必要がある.
connectivity config 
-  Xpressk7 (Ohio card)のどのportを使い,どのchip config fileを使うかを指定.
  -  "config": 使用するchip config file. 存在しない場合は自動的にdefaultのが作られる.
  -  "tx": talk channel. (0,1,2,3)=port(A,B,C,D)
  -  "rx": read channel. (0,1,2,3)=port(A,B,C,D)
  -  "enable": 使用するか否か.0 or 1
  -  "locked": chip config fileの書き換えの有効化.0 or 1
 
 
scan config 
 
 chip config (主要なものだけ説明) 
-  EnCoreCol [Diff1,2/Lin1,2/Sync]: Front Endごとにマスクするなら,65535->0, 1->0にする.
  -  DiffLcc (En): Leakage Current Compensation bias (En: 1 is enable)
  -  Sldo[Analog/Digital]Trim: analog or digital regulator output voltage trim. 
-  RD53A とのcommunicationでinvalid dataを受け取る場合,この数値を変えると解決する場合がある.(22->19とか)
 
 
  -  Name: scan結果のデータやhistogramの名称.
 
 
-- 
 
 Katsuya Sato  - 2020-08-19 
 Configure Chip and Run Scan, Tune 
参照:https://gitlab.cern.ch/YARR/YARR/-/blob/master/docs/rd53a.md
基本的にscanをする際は,
$ ./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/CONNECTIVITY.json -s configs/scans/rd53a/SCAN.json [OPTION]
[OPTION] 
-  -p: histogram plotting enable
  -  -m 0: No change masks
  -  -m 1: reset masks
  -  (no add -m: add masks)
 
 
 Digital / Analog Scan 
$./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_digitalscan.json -p
$ ./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_analogscan.json -p
 Threshold Scan 
$ ./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_thresholdscan.json -p
Range 
-  defaultでは,Vcal:50-300 i.e. 500e-3000eしか測れない.
  -  scans/rd53a/std_thresholdscan.jsonの中の"parameter":"InjVcalDiff"のmax,minを変更すればよい.
  -  inject charge [e]~Vcal*10
 
 
ちなみに,analog/digital scanでは100発injectしているが,threshold scanの場合は50発
 ToT (Time over Threshold) Scan 
$ ./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_thresholdscan.json -p -t [CHARGE] [Target ToT ]
ToT Scanをする際はinject charge=MIPが落とすcharge~10k[e]を入力する.(1um siliconに対しておよそ80electrons)
 Tune 
Tunigはscriptsが用意されている.(詳しくは中を見てほしい)これには引数が必要で,
$ ./scripts/tune-rd53a.sh [1st Target Threshold] [2nd Target Threshold] [Inject Charge] [Target ToT ] configs/controller/specCfg.json configs/connectivity/example_rd53a_setup.json 
-  [1st Target Threshold]: Linear Front Endをtuningする際に使われる.final targer thresholdが1500eの場合は,[1st Target Threshold]=2000とか?
  -  [2nd Targer Threshold]: final target threshold.
  -  [Inject Charge]: 10000 (10k[e])
  -  [Targer ToT ]: 7 or 8 [b.c]とか.(final thresholdと関係する)
  -  controller configやconnectivity configの前に"-r"や"-c"は不要.
 
 
Sync F.E.やLinear F.E.使わない場合は,shell scriptの中身をcomment outすれば時間短縮になる.だいたい10分くらいかかる?
 Cross-Talk Scan 
$ ./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_crosstalk_scan.json -p
Inject Pattern 
-  scan configの中の"maskSize"
  -  readout pixel (center)に対して上下左右どのpixelにchargeをinject (max:40ke)するか指定する.
  -  maskSize=(0,1,2,3,4,5,6,7,8,9,10,11)
 
 
Mask Stage 
-  defaultだと全てのpixelを読んでくれるわけではない.analog scanのようにすべてのpixelを読み込むためには,
  -  "loopAction": "Rd53aMaskLoop"の中の"max":1536->64に変更すればよい.
  -  "loopAction": "Rd53aCoreColLoop"の中の"nSteps"は1でも問題なく動く.(analogscanは5で,これにするととても時間がかかる)
 
 
 Source Scan 
参照: 
SelfTriggerScan
参照: 
ExtTriggerScanFNAL
Scan後に.raw dataを作成させるには,scan configに"algorithm": "DataArchiver"の項を追加する必要がある.
(.raw dataを解析するのは,plotting/read_rawData or bin/analyseRawDataを使えばよい)
-- 
 
 Katsuya Sato  - 2020-08-19 
 #OLD# preparation 
 
-  source /opt/Xilinx/Vivado/2016.4/settings64.shをして、vivadoでVivadoを起動
  -  Open Hardware Manegerに入り、Open targetのAuto connectをクリック
  -  xcf7k325t_1を右クリックし、Program Deviceをする
  -  ~/work/FNALTestbeam2018/XpressK7_RD53A/YARR-FW/syn/xpressk7/bram_rd53a_quad_lbnl-325内のrd53a_quad_lbnl_passive_325_160Mbps_pixregro.bitを焼いてPCをreboot
  -  src内で"./bin/test"を実行して正常に動くかを確認
 
 
vivado をsource した後にpython flash.py をするとbitファイルのリストが表示されるので、ここでファイルを指定しても焼くことができる。この場合はメモリにも書かれるので少し時間がかかる。焼いた後は同じくreboot必須。
./bin/test が問題なく動いたらRD53Aと接続、電源を投入して ./bin/rd53a_test を実行し、
[Data] : COL(12) ROW(1) PAR(1) TOT(15,11,15,15)
→ここでのCOL,ROWはcore column,core rowのことなので注意(core column/rowについてはmanualのPixel Addressingを参照)
のような結果が得られれば、config が通っている。(current dig:0.325A , ana:~0.460A)
※YARRのversionでinjectionしているpixelが変わっていることがあるのでversion up等された場合は必ずrd53a_testの中身を確認すること!
 #OLD# How to configure chips and run scan 
[digitalscan]
./primlist/scan53.sh digitalscan KEK53-〇
or
./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_digitalscan.json -p
現状KEK53-3においてdirect modeでVDDD=1.23V , VDDA=1.2Vだときれい
[analogscan]
./primlist/scan53.sh analogscan KEK53-〇
or
./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_analogscan.json -p
[thresholdscan]
./primlist/scan53.sh thresholdscan KEK53-〇 -f std(lin,diff)
or
./bin/scanConsole -r configs/controller/specCfg.json -c configs/connectivity/example_rd53a_setup.json -s configs/scans/rd53a/std_thresholdscan.json -p
stdだと全FEに対してscanされlinだとlinear FE、diffだとdifferential FEのみscanされる syncは未実装
[tune threshold]
./primlist/scan53.sh tune_globalthreshold KEK53-〇 -t {target threshold} -f std(lin,diff)
[ToT scan]
./primlist/scan53.sh totscan KEK53-〇 -t {injection charge}
-- 
 
 Koji Nakamura  - 2018-03-26 
 Comments