HSIO2 Instruction 
 Useful links 
  
 Hardware and Software setup 
 
-  HSIOHardwareSetup
  -  HSIOForPixelReadout
 
 
 Artix7にFirmwareを焼く 
1. 新しいターミナルで:
bash> source /opt/Xilinx/Vivado/2015.4/settings64.sh
bash> vivado &
2.
Open Hardware Managerを開く
3.
open target -> auto connect
だめだったら、open target -> ~ connectで選択
4.
xc7a200t_0(1)を右クリック -> Program Device... ->
Bitstream file: /home/atlasj/Dropbox/SiliconMemo/memo/HSIO2/HsioCosmic_00000003.bit
-> Program
5. caliserver&calibGuiを立ち上げ直して確認
※電源を落とすとFPGAに書き込んだものは失われてしまう. FPGA & memoryに書き込む必要有.
 メモリーに書き込む 
xc7a200t_0(1)を右クリック -> Add Configuration Memory Device
All,1024, bpi, x16, -> ok,ok
HsioCosmic _00000003.mcs
(eraseからのprogramming)
 Tuning & Source scan 
 CalibGuiの立ち上げ方 
Running calibserver on the RCE:
bash> ssh rce0 -l root
root> source setup.sh
root> calibserver &
On the linux host:
bash> source ~/daq/rce/scripts/setup-gen3.sh
bash> calibGui &
 Tuning Manual 
calibGuiが立ち上がってから...
1) コンフィグファイルについて
/home/atlasj/Dropbox/FEI4tunings/HSIO2/macro/single_tuning_orgをコピーしてきて, 入ってるモジュールの名前にする。(ex. KEK82_KEK83)
rceconf/KEK*.cfg, config/KEK*_primlist_4_local__fe0.cfgを編集。
・rceconf/KEK*.cfg(全体のconfig)
rceに繋がっているセンサーを変える。
数字の意味は, (enable, inlink, outlink, gomi, gomi)
・config/KEK*_primlist_4_local__fe0.cfg (chipのconfig file) 
ModuleID, Adress, Chip_SNを変える
2) calibGuiにおいて、
・Config Root Dir ... Browse → KEK~のディレクトリにいって、"rceconf"とタイプしてOpen
・Data Dir ... Browse → "data"とタイプしてOpen
・Load ... KEK~/rceconf/KEK~.cfgを選択してOpen
Config Halfstave A タブに選択したモジュールが入っているか確認(前の設定が残ってたら一回Quitする, そしたら治る)
3) Scan Configを選択(Digital, Analog, etc.)
4) Start Run → 結果は、Plotsタブに表示される
5) Prim Listを使いたいときはLoad Primlistでファイルを選択。
(/scratch/atlasj/Dropbox/FEI4tunings/HSIO2/primlist)
 Tuningの手順 
1) DIGITAL_TEST, ANALOG_TESTを確認
2) THRESHOLD_SCANをとってみて、KEK*_primlist_4_local__fe*.cfgのパラメータを調節しながら合わせる。
変えるパラメータは、Vthin_AltCoarse、Vthin_AltFineの2つ。Vthin_AltCoarseはthreshldを大まかに決めるパラメータで、0-3のどれかを入力。
Vthin_AltFineはthresholdを細かく決めるパラメータで、0-255の間で入力。
3)tuning targetに合わせてprimlistを読み込む。(例:fasttune_th3000_ToT7at10ke.pk)
4)thresold scan,ToT scanなどをしてtuning結果を確かめる
Hardware connection & software setup
 Config file template 
 Mask 
1.ANALOG_TESTを実行後、noisyなピクセルを確認。
2.CalibGuiの上のにあるUpdateを押し、maskを適用する。
3.noise scanを実行。
4.scanが終わったら、mask対象がどれくらいあるか確認(maskのヒストグラムを見る)。
5.mask対象が適切なら、同様手順でmaskをかける。 (noiseが多すぎるとコアダンプすることがあるので、その場合はnoise scan selftriggerを回し、これでmaskする。)
6.noiseがほとんど見えなくなったらソーススキャン("selftrigger")をする。
 Tips 
 
-  リセット方法
-> HSIO-IIにあるボタン(SOFT RST, COLD BOOT, DTM BOOTの三段階)
  -  Threhoshold scanの範囲等を変える↓↓
THRESHOLD_SCAN,FEI4B,THRESHOLDTARGETVALUE=3000,TOTTARGETCHARGE=21000,TOTTARGETVALUE=7,MASKSTAGEMODE=FEI4_ENA_BCAP,LOOPVARVALUES=0[0;200;101]
(FEI4_ENA_BCAP...大きい方のcapacitorも入れる。)
 
 
 Troubleshooting 
基本的にlenovoでHSIO2を動かすこと前提です。。。
〇rce0にpingが通らない
 ・HSIO2に電源が入っているか
  →電源を入れて下さい
 ・電源が入っているのに通らない
  →/etc/sysconfig/network-scripts/ifcfg-eth0 をsudoで開いて"BOOTPROTO=dhcp"部分をコメントアウトし、HSIO2用の該当部分(for HSIO2や#####HSIO2#####などで分かりやすくなっているハズ)のコメントアウトを解除
   sudo service network restart を実行
   service dhcpd status でdhcpサーバーの状態を確認
    →止まっていたらsudo service dhcpd start
   /etc/hosts のrce0が正しいdtm番号の場所にいるか確認(いつも使ってるHSIO2のdtm番号は50 or 56)し、必要なら直して保存
〇rce0が見つからない
 /sbin/ifconfig -a でeth0が無いことを確認(代わりに他のeth5とかがいたりする)
 /etc/udev/rules.d/70-persistent-net.rules を開いて NAME="eth0" と書いてあるPCI deviceの行を削除し、NAME="eth5"(上で代わりにいたethの名前)と書かれている部分をeth0に書き換えてサーバー再起動
 /sbin/ifconfig -a でeth0のMACアドレス(HWaddr)を取得し、/etc/sysconfig/network-scripts/ifcfg-eth0 内のHWADDRを取得したものに書き換え
 sudo service network restart でeth0がいるのを確認
 EUTelescope Integration 
-- 
 
 Koji Nakamura  - 2016-03-14