FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2015-06-01から1ヶ月間の記事一覧

cocotbを試す(2.自分のデザインで実験)

cocotbの導入が完了したので、次は自分のデザインに適用してみよう。 msyksphinz/pulsar-2github.com ユニットif_unitに、単体テストを実施してみよう。 まずは、リセット直後にAXIチャネルIF_MARVALIDがアサートされることをチェックしてみよう。 TOPLEVEL …

cocotbを試す(1.導入)

cocotbは、Pythonで記述できるテストベンチ作成ユーティリティだ。 VerilogのテストにPython製フレームワーク「cocotb」を使う。 - Qiitaqiita.com potentialventures/cocotbgithub.com ユニットテストをする際、簡単にテストパタンを作れたほうがいいし、Ve…

boot2dockerをインストールしてみた

Docker事始めとして、boot2dockerをWindows上にインストールしてみた。 Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)作者: 杉山貴章,大瀧隆太,Yugui(Yuki Sonoda),中津川篤司,前佛雅人,松原豊,米林正明,松本勇気…

Dockerエキスパート養成読本を買った

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)作者: 杉山貴章,大瀧隆太,Yugui(Yuki Sonoda),中津川篤司,前佛雅人,松原豊,米林正明,松本勇気出版社/メーカー: 技術評論社発売日: 2015/06/18メディア: 大型本この商…

VOAニュースフラッシュ2015を(とりあえず全部)聞き終えた

)" title="CD付 VOA ニュースフラッシュ2015年度版 ()">CD付 VOA ニュースフラッシュ2015年度版 ()作者: アルク出版社/メーカー: アルク発売日: 2015/04/15メディア: 単行本この商品を含むブログ (1件) を見る 対象レベルは中級(TOEIC 600点程度)なので、そ…

命令セットシミュレータにおける命令のデコードと実行(C++における関数ポインタ)

CPU

命令セットシミュレータにおける命令のデコードと実行 - FPGA開発日記msyksphinz.hatenablog.com 結局、クラスのメンバとして関数ポインタを指定して、そこでどのようにして所望の関数の実装を呼べば良いかというと、 m_inst_env->RISCV_Inst_Exec (inst_idx…

gitで中途半端にaddしたいときの-pの使い方

gitで一気にたくさん修正をしてしまったけど、コミットは別々に分けたい、というときは、interactiveモードを使ってもいいけど、もっと手軽に-pを使おう。 なんか一杯変更してもうたなあ。。。 diff --git a/src_cpp/gen_arch_table.rb b/src_cpp/gen_arch_t…

命令セットシミュレータにおける命令のデコードと実行

CPU

大概の命令セットシミュレータは同様の構成を取っていると思うが、命令セットシミュレータといえど * 命令デコード * 命令実行 というハードウェアと同じことをしているのは変わらない。 自作シミュレータも多分に漏れず、以下のような構成を取っている。 こ…

ベンチマーク評価向けシミュレータをC++で書き直す

CPU

msyksphinz/swimmer_riscvgithub.com RISC-Vの評価向けに作っているシミュレータをC++で書き直している。 C++にすることの利点として、Cよりも汎用的に書くことができ、一般化し易いということと、クラスによる階層を持たせることにより、例えばスレッドを構…

ベンチマークをシミュレータで動作させてみる(sbrkでメモリが足りない?)

CPU

Coremark-Proのバイナリをシミュレータで動作させてみる(失敗) - FPGA開発日記msyksphinz.hatenablog.com うーん、sbrkで、確保しているメモリが足りない気がしている。 そこで、リンカスクリプトで、ヒープの領域をさらに大きめに確保してみた。 diff --git…

Coremark-Proのバイナリをシミュレータで動作させてみる(失敗)

CPU

msyksphinz/benchmarksgithub.com Coremark-Proのコンパイルができるようになったので、シミュレータで動作させてみた。 swimmer -h builds/linux/gcc-mips/bin/zip-test.srec -o zip-test.sw.log -c 1000000 終了までの命令数を見てみると、 ==============…

ThinkPad X301にUbuntu14.04をインストールした

今やタブレットの時代だが、僕は未だにノートPCを使い続けている。 かなり古いPCだが、ThinkPad X301を使い続けている。 ThinkPad X301 2774P5J Lenovo | インバースネット株式会社 良く見ると2008年の製造モデルなのね… 最近はWindows 7で走らせているのだ…

gccをsoftfloat付きでビルドする

CPU

前回の続き。という訳でgccとnewlibをsoftfloat付きでビルドする。 参考にしたのは以下のサイト: Mian M. Hamayun - Re: How to enable soft-float support in newlib and gcc toolchains for an Chefのレシピを変更して対応する。変更したのはブランチとし…

リーダブルコードを(今さらながら)読んだ

会社の行き帰りの電車の中で読んだので、まだいまいち頭の中に入っていなくて復習が必要だけど。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典出版…

Coremark-Proをコンパイルしてシミュレータで流せる形式にする(コンパイル成功)

CPU

Coremark-Proをコンパイルしてシミュレータで流せる形式にする(奮闘中) - FPGA開発日記msyksphinz.hatenablog.com 結局、MIPSで試していたのだが、コンパイルは成功した。システムコールの部分を自分で作るかどうかがポイントだ。 あとは、リンカスクリプト…

AXIチャネルのアクセスをどうやって実装するか?

CPU

この実装方法が本当に合っているのかどうかは分からないけれども... CPUはパイプラインフラッシュが発生することがあるため、メモリアクセスが途中でぶった切られる可能性がある。 例えば、アドレスチャネルまでの応答が確定していて、そこでパイプラインフ…

Coremark-Proをコンパイルしてシミュレータで流せる形式にする(奮闘中)

Coremark-ProをRISC-Vのgccを使ってコンパイルする - FPGA開発日記msyksphinz.hatenablog.com まだ格闘しているが、なんかうまく行かないなあ。 まず、システムコールあたりは正しく動作しないのは当然だ。bare-metalでコンパイルしているため、mallocでメモ…

Coremark-ProをRISC-Vのgccを使ってコンパイルする

https://github.com/msyksphinz/benchmarks/tree/riscv-targetgithub.com Coremark-ProをRISC-Vの環境でコンパイルするためにいろいろ修正したまとめ。 まず、util/make/ にRISC-V向けの環境ファイルを追加した。 基本は、fakeio.mak と linux.mak を使って…

ユークリッドの互除法の高速化

その数式、プログラムできますか?作者: Alexander A. Stepanov,Daniel E. Rose,株式会社クイープ出版社/メーカー: 翔泳社発売日: 2015/05/19メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る ユークリッドの互除法の高速化の方法につい…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (IPをsubmoduleとして管理する)

これはVivadoの使い方じゃなくて、gitの使い方なんだけれども。 msyksphinz/fpga_ipsgithub.com http://japan.xilinx.com/support/documentation/application_notes/j_xapp1165.pdf http://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2013_…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (既存のIPを追加する)

既存のIPを、Managed IP Projectに追加するためには、どういたらいいんだろうか? ここでは、pulsar1_connect(AXIバス)というIPを、IPとしてgit管理したいとする。 msyksphinz/fpga_ipsgithub.com http://japan.xilinx.com/support/documentation/applicatio…

VivadoのIPをgitなどのバージョン管理システムで取り扱う方法 (Managed IP Projectを作成する)

Vivadoのプロジェクトはバージョン管理がしにくい。やたらと意味不明なファイルが更新されてファイルのmodificationマークが付くし、しかもファイル群が巨大なので、全部格納していたのでは、リポジトリが大変なことになる。 そのために、XilinxはVivadoのプ…

アウトオブオーダのCPUを作ろう - 命令フェッチをAXIバスに対応させる -

CPU

自作CPUのデータバスへのアクセス部分をAXIに変更してしまおうと思う。今までは、オリジナルバスを利用していたがら、それだとZynqとかに接続するときにやりにくい。 アウトオブオーダプロセッサで、しかも同時実行できる数が多いプロセッサにとって生命線と…

テキストエディタ(プログラミング以外)をATOMに移行した

ATOM、結構使いやすいと思っている。ちょっと思いのが難点かなー。会社のクソボロのPCだと、てんで動かない。 今の時点だと、emacsのキーバインドに慣れてしまっているので、結局ATOMもそのキーバインドに合わせるようになると思う。 emacsを使い続けている…

今どきのGCCは再帰を書いても再帰を出さない (exponentialだとどうなる?)

GCC

「その数式、プログラムできますか?」→「その数式、どのようにコンパイルされますか?」になってしまっている。っていうか再帰一個で立ち止まりすぎだろ! その数式、プログラムできますか?作者: Alexander A. Stepanov,Daniel E. Rose,株式会社クイープ出…

今どきのGCCは再帰を書いても再帰を出さない(GCDの計算)

GCC

その数式、プログラムできますか?作者: Alexander A. Stepanov,Daniel E. Rose,株式会社クイープ出版社/メーカー: 翔泳社発売日: 2015/05/19メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る またこの本の話である。次に出てくるのは、…

RISC-Vの例外処理の機構

RISC-Vの権限階層は4階層構造を取っている。強い方から順に、 Machine Mode Hypervisor Mode Supervisor Mode User mode ちなみに、Hypervisorモードはまだちゃんとした規定が無い。命令については、Under constructionという感じだ。とりあえずパタンとして…

自作RISC-Vシミュレータのシステムレジスタ表記拡張

自作RISC-Vシミュレータのシステムレジスタの表記を拡張した。これまではCSRはアドレス番号でしか表記されなくなっていたが、これをシステムレジスタの名前で表記できるようにした。 https://github.com/msyksphinz/swimmer_riscv/commit/3f2b62802d576d30e6…

今どきのGCCは再帰を書いても再帰を出さない (gcc-5.1で実験)

GCC

この本おもしろい!途中から数学チックになって難しいが、時間をかけて読み込んでいきたい。 その数式、プログラムできますか?作者: Alexander A. Stepanov,Daniel E. Rose,株式会社クイープ出版社/メーカー: 翔泳社発売日: 2015/05/19メディア: 単行本(ソ…