メモ

FPGA関連の国際会議投稿締切(太字: トップレベルカンファレンス)


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).
その他に試したこと:


.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


Zybo-Z7向けLinux ImageをSDカードから起動
だいたいここに書かれている通り(petalinuxのセットアップで少しまごまごしたが無事セットアップできた.何がいけなかったかは忘れてしまった).ただし,Vivadoのバージョンが2020.xになってから以下の点が変わったもよう.

2021.11.21: ↑の方法を別のZynqボードで試したところ,起動はしたが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. 他:

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章

(第3版の正誤表はこのページにある.)