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
Etc. 備忘録
YARR/bin に入っている解析scriptsを編集する際の手順.
- このbinary fileは YARR/src/tools 下に入っているC++をcompileすることで得られたもの.やりたい解析などがある場合はここをいじる.
-
$ cd YARR/build
-
$ source /opt/rh/devtoolset-7/enable
(cmakeのversionを変更)
-
$ cmake ../
-
$ make
(compileされたbinary fileは,YARR/build/bin下に入る)
-
$ make install
(YARR/binに反映)
Digital/Analog Power (LV)
RD53A Single Chip Cardには,digital/analog powerをdirectで与えるかregulatorを通して与える(regulator mode)かの2通りある.
Regulator Mode
- RD53A SCCのjumper pinで,VINAとVINDを選ぶ.
- LVは基本的には1.8V印加 (4pin MOLEXのconnect部分を正面にして,上側がhotで下側がGND,左側がanalogで右側がdigital)
- jumper pinの先とGNDでの電位差が1.2V程度なら問題なし.
Direct Mode
- RD53A SCCのjumper pinでは,VDDAとVDDDを選ぶ.
- LVは基本的に1.2V印加
Firmware?
160Mbps/640MbpsのFirmwareを使う場合,config fileのparameterを変更する必要がある.
160Mbps ->
CdrSelSerClk=3
640Mbps ->
CdsSelSerClk=0
#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