メモ
FPGA関連の国際会議投稿締切(太字: トップレベルカンファレンス)
- FCCM: 1月(開催地: US)
- FPL: 3月(開催地: 欧州)
- HEART: 3月(開催地: アジアか欧米)
- MCSoC: 4月(開催地: 各国)
- Euromicro-DSD: 4月(開催地: 欧州)
- Hetero-PAR: 5月(開催地: 欧州)
- ParaFPGA: 6月(奇数年) (開催地: 欧州)
- FSP: 6月(開催地: FPLと併設)
- FPT: 7月(開催地: アジア太平洋地域)
- ReConFig: 7月(開催地: ほぼメキシコ)
- NorCAS: 8月(開催地: スカンジナビア)
- IEEE-ISPA: 8月(開催地: 各国)
- ISFPGA: 9月(開催地: US)
- ARC: 11月(開催地: 各国)
Verilog
見切り発車の期限は霜月頭神無月頭.
2018/6/21 ubuntuを定期アップデートしたらgrub.cfgが書き換わったのか,一緒にインストールしていたcentosが起動しなくなった.-> update-grub2で直った.
FPGAボードZCU102のUSB UARTドライバの入手先: AR #33569
ubuntu-16.04,ISE-14.7でPlatform cable USB IIを使えるようにする方法
問題: windrvrのインストールができずケーブルを認識しない.
解決方法: これをエミュレートする別ドライバを使う.
(やり方: このページのInstalling Cable Driversの項とコメント欄や,XilinxのAR #64361に書いてある通りやるだけ.)
なお,CentOS-6は普通にwindrvrが使えるもよう(AR #68233).
その他に試したこと:
- XilinxのUG344に書いてある通りやる. -> fail
- ISEのインストールディレクトリの中にあるインストールスクリプト(/opt/Xilinx/14.7/ISE_DS/common/bin/lin64/install_script/install_drivers/install_drivers)を実行 -> fail
まず,"ヘッダファイルが見つからない"というエラーメッセージが出てドライバのビルドが止まる(これ自体はヘッダのパスを(シンボリックリンク等を利用して)修正すればOK).次に,"カーネルが新しすぎるから駄目"とかいうエラーメッセージを吐かれてそれ以上進まない.
- vivadoのxicomディレクトリにあるインストールスクリプトを実行(AR #59128) -> fail(ドライバのインストールは成功するがplatform cable USB IIは認識しない)
.matファイルについて:
ひとつ以上のmatlabの変数をファイルに保存したもの.ファイル形式はテキスト(ascii)もバイナリも可.
matファイル作成: save filename v1 v2 ... (octaveでやる場合は-mat-binaryというオプションをつける)
matファイル内の変数のロード: load filename
P3(ASCII)形式のPPMファイルの作成: convert [inputfile] -compress none [outputfile]
OpenCV
tgifで作ったepsファイル内のフォントをpdfに埋め込む方法:
eps2epsコマンドでフォントをアウトライン化.
$ eps2eps -r9600 hoge-in.eps hoge-out.eps
オプションの意味はよくわからない.なおSymbolフォントには効かない模様.
参考: http://d.hatena.ne.jp/DOSEI/20061225/p2
pdftkを使えば埋め込めた.ただし一部のフォントは代替フォントに置き換わる(私の環境にフォントがないだけ?).あと(tgifと関係ないけど)日本語フォントは埋め込めなかった.(2018.5.21)埋め込めない.勘違いしていた?(埋め込めたファイルはあるので何らかの方法で埋め込めたはず.結局acrobatでも使ったのかもしれない.)
これで埋め込めた:
$ gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=hoge_fix.pdf hoge.pdf
パワポをPDFに変換したら,ビューワのヘッダに(ファイル名以外の)意図しない文字列が入った.原因がわからないのでPDFファイルのメタデータを編集することにした(参考: このサイト).
1. メタデータの抜き出し
$ pdftk hoge_in.pdf dump_data > metadata.txt
2. ヘッダの編集
metadata.txtを開き,"InfoKey: Title" 直下の"InfoValue: <意図しない文字列>" を編集(<意図しない文字列>を消す).
3. metadata.txt の内容を PDF に適用
$ pdftk hoge_in.pdf update_info metadata.txt output hoge_out.pdf
上手くいったと思ったが,evinceで見ると消えているが,Adobe readerだと消えない.
2021.1以降のボードファイル配置場所
Vivadoのblock design
- block design を作成/編集
- create HDL wrapper
- ビットストリーム生成
- export hardware (include bitstream)
- あとはvitisでplatfrom projectとapplication projectを作る
Zybo-Z7向けLinux ImageをSDカードから起動
だいたいここに書かれている通り(petalinuxのセットアップで少しまごまごしたが無事セットアップできた.何がいけなかったかは忘れてしまった).ただし,Vivadoのバージョンが2020.xになってから以下の点が変わったもよう.
- hdfファイルがなくなり,xsaファイルに代わった(petalinux-config --get-hw-description=<xsaファイルのパス>).
- SDカードのルートディレクトリにコピーする必要があるファイルにboot.scrが加わった(UG1144の49ページ.上記の記事が書かれた時点ではBOOT.BIN,image.ubの2つだったようである).
2021.11.21: ↑の方法を別のZynqボードで試したところ,起動はしたがkernel panicを起こしてそれ以上進まない.以下のようにしたところ解決した.
- petalinux-configの際,rootfsのfilesystemにext4を追加
- SDカードにパーティションを2つ作成
- 片方はvfat,もう片方はext4でフォーマット.
- vfatの方にBOOT.BIN, image.ub, boot.scrを書き込む
- ext4の方にはrootfs.tar.gzの内容を展開 (代わりにddコマンドでrootfs.ext4をコピーというのを試したが,kernel panicのままだった)
参考にした記事はこれとこれ.
peta-linuxにgccを入れる方法: これ.ZynqのPSでコンパイルも出来た.
この記事だと「できないようだ」とあるが出来た.
SDカードにビルドイメージを書き込んだ後,ちゃんとアンマウントしないとzynqでの起動時に失敗した(変なメッセージが出る→5分停止→同じメッセージが出る→5分停止→・・・).
httpdを走らせる方法: これ.
Vitis
ubuntuにインストールする場合,libtinfo5が入っていないとインストールが止まる.詳細はAR #63794に記載.
サポート外のバージョンのOSにインストールする方法.
vitisが起動しなくなった(一瞬起動しかかってすぐ落ちる). /home/<username>/.Xilinx/ を消したら直った. 詳細はこれ.
math.hをインクルードする際の設定.
SDAccel
TUL KU115のセットアップで嵌ったこと.ホスト(兼開発環境)はCentOS 7.
- NIC名が"eth..."じゃないと開発環境のライセンス認証ができない(NICのMACアドレスに対してノードロックライセンスを発行している場合.CentOS 7のデフォルトは"ens..."なのでNIC名を書き換える.なおSDx 2017.4以降は"ens..."でも大丈夫なもよう).
- ケーブルドライバは開発環境のインストールの際に自動でセットアップされるらしいがされてなく,VivadoからFPGAボードへのファームウェア書き込みのときにボードが認識されなかった(AR# 59128 に従い,ケーブルドライバをセットアップ).
- ファームウェアの書き込みにPlatform cable USB IIは使えなかった(
ケーブルドライバが非対応っぽいAR #64361に出ているドライバなら行けるかも?).ボードに同梱のUSBケーブルは使えた.
- ユーザガイドに書かれている手順でデバイスドライバがビルドできない(開発環境2017.2,プラットフォームのリビジョン4.0の場合.それぞれ2016.4,3.3に変えるとOKだった)
2018/6/21 どのugを参考にしたか忘れた(ug1023かug1234?).ug1234でku115が出てくるのは2016.4版までなので,ug1023の方?
他:
INTERFACEプラグマでポートの種類を指定していない関数はHW化できない(SDSoCはできる).
2019/6/27 memcpy()で任意精度型変数の中身をコピーをするときは,sourceとdestinationの型が同じでないといけない,とXilinx community forumに書いてあった(違っていてもブロックサイズが合ってればいいと思っていた.SW_EMUのときは型が違っていてもコンパイルが通るし,動作もしたが,HW_EMUだとコンパイルできない.SYSTEMはまだ試していないが多分NG).
2019/10/3 OpenCLのカーネル引数に不定値があるとエラー(CL_INVALID_KERNEL_ARGS)になるので,すぐには使わない引数も要SetKernelArg.
2020/3/5 HW関数のインタフェースは,そのデータ型がbool型だとうまく値を渡せない(データ幅8bit以上でないと変な値になる).
Instruction does not dominate all uses! について: TBD
SDSoC 2017.4
block RAMをバインドする変数を任意精度型(ap_int<24>: 24bitのint)にしたところ,高位合成で開発環境PCのメモリ(64GB)を食いつぶしてしまい,処理がストップしてしまった.途中経過をint型で持ち,block RAMへの代入のときにap_int<24>にキャストするようにしたら問題なく合成できるようになった(メモリ消費量は16GBくらい).
その後なんともなくなった.原因は不明.
2019.1.23 pipelineプラグマでパイプライン化されたforループ内での累算結果をPS側に出力したかったので,出力ポート化される引数変数(ポインタ変数)doutへ直に累算したところ,結果が出鱈目になった.パイプラインハザードを起こしたとみられる(と思っているけど実際に何が起こったのかはわからない).doutに直接累算するのをやめ,まずローカル変数hogeに累算し,ループを抜けた後でdoutに代入して回避.
ubuntuからuart経由でzynqに接続(gtktermを予めインストールしておく): gtkterm -s 115200 -p /dev/ttyUSB2 (デバイス名はその都度確認)
だれにもわかるディジタル回路 第4版(オーム社)の正誤表
2章
- p.59, p.60 Dラッチに関する図と説明.図2.11と本文の記述とで挙動が正反対.図2.10のタイミングチャートと合ってるのは本文の方. (第4刷)
(第3版の正誤表はこのページにある.)