もくじ

V-scale というオープンソースマイコンを拾ってきて FPGA に乗せて遊んでます

_コンソール付きのシミュレータが欲しい 端末 XMODEM
乗算・除算器を改良した話 : github
FPU 拡張を追加したい話
_演算器のモデル記述 FADD FMUL FMADD FDIV FSQRT : github
_組み込み 転送 演算器

[PR]
# by tom01h | 2017-12-31 23:59 | PCとか | Trackback | Comments(0)

Verilator を OpenMP で高速化

Varilator はせっかく高速なシミュレータなのに、シングルスレッドでしか動作しない。どうせテストベンチはC++なのだから、今どきの並列化手法が使えるのじゃないか?ちょっと調べてみると、MPIのほうが高速になるらしいけど、OpenMPのほうが簡単(変更量が少ない)そうなので、こっちを使うことにした。期待はずれかもしれませんが、回路の分割じゃなくて、テストベクタの分割ですよ。それならタスクで分割すればいいじゃんて言われたらごもっとも。
まずは適当にググって最外ループを並列化してみた。軒並みフェイルしますよ。どうやら、並列化するループ内の変数を、private宣言しなくてはならないらしい。Verilatorで言うと、並列化する分だけ対象回路をインスタンスするって事か?まぁ、当然のような気もするが、なんかもったいないよね。なので、最外ループを分割してみました。
やりかたを大雑把に。元のテストベンチがこんな感じなら
Vhoge* verilator_top = new Vhoge;
for(i=0; i<100; i++){
verilator_top->in=i;
verilator_top->eva l();
if(verilator_top->out != hoge){
printf("NG\n");
}
}
delete verilator_top;
こんな風にします
Vhoge* verilator_top;
#ifdef _OPENMP
#pragma omp parallel for private(i,verilator_top)
#endif
for(t=0; t<10; t++){
verilator_top = new Vhoge;
for(i=t*10; i<(t+1)*10; i++){
verilator_top->in=i;
verilator_top->eva l();
if(verilator_top->out != hoge){
printf("NG\n");
}
}
delete verilator_top;
}

Verilator のオプションに以下を追加します。
--CFLAGS -fopenmp
--LDFLAGS -fopenmp
さらにループがネストしたりしていたら、例えばjもprivate宣言に追加します。
これでとりあえずパスはするようになったし、高速化もできました。もともと4コア8スレッドで17-8%のCPU使用率が100%になって、4-5倍ほど高速化してます。単純な回路の網羅的検証には有効なようです。ただし、ちゃんと検証できているかの確認は簡単にしかしていません。

[PR]
# by tom01h | 2017-05-23 20:45 | PCとか | Trackback | Comments(0)

Verilator と OpenMP

Verilator の特徴を考えると、演算器とかの単純な回路の網羅検証が向いているのかと勝手に決めつけています。がしかし、シミュレータはシングルスレッドで動くのですよね。もったいないので、OpenMP を使った並列化の方法を考え中。
誰かいい方法知ってたら教えて下さい。うまくできたらまた報告します。

[PR]
# by tom01h | 2017-05-22 20:52 | PCとか | Trackback | Comments(0)

山と高原地図

ちょっと前にも書きましたが、近場の地図が軒並み全面改訂されています。
f0054075_20004638.jpg

[PR]
# by tom01h | 2017-05-19 20:59 | Trackback | Comments(0)

ブレーキ錆びたみたい

ブレーキ踏むとコツコツ音がするので、ディーラーに行ってきました。思った通りの錆なのですが、もう手遅れで、ロータ交換した方が良いとのこと。ちゃんと手入れしないと駄目ですねぇ。
f0054075_20180588.jpg

[PR]
# by tom01h | 2017-05-14 20:18 | Trackback | Comments(0)

台湾

昨日から出張で台湾に来ています。大事な打ち合わせは終わって、明日からは消化試合な感じ?
慣れた人にいろいろ連れて行ってもらっているのもありますが、食べ物も美味しいし、言葉も結構通じるし、よく聞く台湾旅行は楽って言うのも頷けます。
右が出張先です。
f0054075_20095405.jpgf0054075_20100354.jpg

[PR]
# by tom01h | 2017-05-09 22:14 | Trackback | Comments(0)

伊豆が岳

遅めのシーズンイン。最近腰が痛いので、神頼みのために子の権現を目指して伊豆が岳に行きます。久々だと岩場もこえーな。
f0054075_18164654.jpgf0054075_18164648.jpg

体力も当然落ちていますが、まぁ、とりあえずちょっと速めのペースも維持できているみたいです。腰は痛いけど、膝は大丈夫みたいです。
でもやっぱり、子の権現手前の登りはきついですねぇ。あまり周りを楽しむ余裕がなかったけど、まだ、花は綺麗だったようです。
f0054075_18271897.jpgf0054075_18271806.jpg

[PR]
# by tom01h | 2017-05-03 18:31 | 山歩き | Trackback | Comments(0)

Insider Preview 16184

ネットワークドライブがマウントできるようになったとの事で、Inspiron でもう一度 Insider Preview を使うことにしました。まず Fast で登録して、すぐに Slow に切り替えました。また何か使いたい機能があった時に Fast にするかもしれませんが…


[PR]
# by tom01h | 2017-05-02 22:22 | PCとか | Trackback | Comments(0)

Petalinux for Arty Z7

Petalinux とやらをブートしてみる。これに従って pre-build を試しただけですが…
ちなみに、ちょうど良い MicroSD を持っていなかったので、小さい USB メモリを破壊して取り出しました。噂通りに MicroSD と下の基盤が入っていました。
f0054075_14534190.png

[PR]
# by tom01h | 2017-05-01 18:21 | PCとか | Trackback | Comments(0)

モバイルモニター

ドスパラのモバイルモニターを買いました。タブレットの画面だけを切り売りしている感じの物です。なんか発色が悪いですねぇ。音もいかにもモバイルって感じです。
別に外でデモをしようなんて事はないと思うんですけどね。無くなる前に買っておきました。
f0054075_22512771.jpg

[PR]
# by tom01h | 2017-04-30 22:54 | PCとか | Trackback | Comments(0)