カテゴリ:PCとか( 141 )

Google さんに促されてパスワードを変更したのですが、Thunderbird が最新に更新されていないと Gmail にログインできませんでした。結構戸惑いました。
[PR]
by tom01h | 2017-06-14 21:12 | PCとか | Trackback | Comments(0)
ここのところ VOYO V3 の Wifi が不調で、いっそのこと Apollo Lake に買い替えたいなぁと思いつつ、でも、SSD だけは取り出したいなんて思って、箱を開けてみました。まぁ、取り出せそうだったのですが、m2なのか、mSATAなのか確認するの忘れた…
がしかし、Wifi のアンテナらしきものが、USB2 の端子の近くにあるのを発見。そこにはワイヤレスキーボードのドングル?を刺して使っていますよ。原因はこれの干渉だったみたいです。ドングルの場所を物理的に遠い端子に変えたら調子よくなりました。

[PR]
by tom01h | 2017-06-13 21:41 | PCとか | Trackback | Comments(0)
こんなの出来て嬉しいかは不明ですが、Verilatorを使ってWindows用のシミュレータを作ります。Windows用のVerilatorじゃないですよ。ググったけど見つからなくて、C++のコンパイラさえWindows用なら良いかと思ったのですが、クロスコンパイラで十分ってことに気付きました。
まずは、ubuntu用のWindows向けのクロスコンパイラをインストールします。
$ sudo apt install mingw-w64
Verilatorは/usr/local/share/verilator/include/verilated.mkでいろいろ設定しているみたいなので、ひとまずワークにコピーしてきます。そして、Verilatorが自動で作るMakefileを、先のファイルを参照するように変更します。
# Include global rules
#include $(VERILATOR_ROOT)/include/verilated.mk
include ../verilated.mk
verilated.mkはこんな感じ。
CXX = x86_64-w64-mingw32-g++
LINK = x86_64-w64-mingw32-g++
AR = x86_64-w64-mingw32-ar
RANLIB = x86_64-w64-mingw32-ranlib
libstdc++-6.dllとlibgcc_s_sjlj-1.dllがないって言われますね。ここを参考にしますが、スタティックリンクの方法を探ります。ライブラリの再配布条件には注意してくださいね。
Verilatorが自動で作るMakefile
$(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@ $(LIBS) $(SC_LIBS) -static-libstdc++ -static-libgcc 2>&1 | c++filt
verilated.mk
LIBS += -lm -lstdc++
これで動きます。

[PR]
by tom01h | 2017-06-09 22:18 | 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)

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)

Insider Preview 16176

Creators Update に合わせて Insider Preview を使うのはやめていたのですが、うれしい事にまた使う理由ができたみたいです。ファイルシステムが強化されて、ネットワークドライブがマウントできるようになったみたいです。Inspiron はもう一度 Insider Preview にするか。
[PR]
by tom01h | 2017-04-28 21:49 | PCとか | Trackback | Comments(0)

Arty Z7-20 Hdmi Out

Arty Z7 の HDMI 出力サンプルを試してみたいと思います。説明は ここ にあります。
まずは ここ からソースを取ってきます。TMDS がどうのこうの言ってコンパイルが通りません。ブロックダイアルラムを見ると、RGB to DVI Video Encoder なるモジュールの出力が浮いています。
このままでは良く分からないので、今度は ここ からとってきます。なぜか同じようなものが2個あるのですが、こっちは Xilinx のモジュールを TCL スクリプトから生成する(取って来るだけ?)、前の奴はすでに生成済みのを使う違いがあるみたいです。
f0054075_22234112.jpg
ブロックダイアグラムはこんな感じ。小さくて見えないでしょうが、右上にあるのが問題の TMDS 端子のようです。ちゃんと繋がっています。
f0054075_22274295.png
これに対して TMDS の繋がっていない方はこんな感じです。何が悪くて切れちゃっているのかは解析できず…
f0054075_22325894.png

[PR]
by tom01h | 2017-04-23 23:19 | PCとか | Trackback | Comments(0)