FPGA開発日記

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

2019-01-01から1年間の記事一覧

年末なので今年のまとめをしよう2019

このブログも始めてから5年が経った。 年末年始なので、今年一年はどうだったかな、ということでまとめてみよう。 今年の元旦には、こんな目標を立てていたのだった。 msyksphinz.hatenablog.com 2019年始に立てた目標 引き続きRISC-Vをベースとしたエコシス…

FIRRTLに入門する (18. 多次元配列に対する処理の検討)

前回のLowerTypeの実装では、多次元配列に関する処理が抜けていた。このため、以下のようなFIRのコードをコンパイルするとエラーが発生する。 VecBundle.fir circuit VecBundle : module VecBundle : input in: UInt<32>[3][4] input sel: UInt<2> output ou…

fork/joinが可能なchiselテスト環境chisel-testers2を試す

Chisel-Testers2のアナウンスが流れていた。時間が経っていたが試してみようと思う。 ChiselにはすでにIOTestersというテスト環境があるが、ぶっちゃけこれはあまり使いやすくない。 chisel-testers2は以下の改良(というか特徴)が加わっており、使いやすくな…

本当に私の人生を変えた技術書10選

年末ですね。年末に技術っぽいことを書いても誰も見ていないので、どうでもいいことを書こうと思います。 皆さん技術書は好きですか?好きですよね。読みもしないのに技術書典なんかに大挙して押しかけて、結局積読が増えていく。積んでいるとなんか落ち着く…

FIRRTLに入門する (17. LowerType時に配列を分解せずにBundleを分解する手法の調査(3))

LowerTypeの調査を続けている、前回の記事からずいぶんと時間が経ってしまったが、Bundleを分解する方法について調査している。つまり、FIRRTLで以下のように記述されているコードを、Vectorを分解せずにBundleのみ分解するということである。 circuit VecBu…

FIRRTLに入門する (16. LowerType時に配列を分解せずにBundleを分解する手法の調査(2))

LowerTypeの調査を続けている、前回の記事からずいぶんと時間が経ってしまったが、Bundleを分解する方法について調査している。つまり、FIRRTLで以下のように記述されているコードを、Vectorを分解せずにBundleのみ分解するということである。 circuit VecBu…

DSLでビルドツールを自作する (25日目 最後のまとめ)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の25日目の記事です。 25日目 最後のまとめ ここまで、24回に分けて一からビルドツールの開発に挑戦してきました。 DSLの勉強のために、Rubyのメタプログラミングについて一から勉強…

DSLでビルドツールを自作する (24日目 EmacsプロジェクトをRumyでコンパイルしてみる試行 ~ひたすらルールファイルを書く~)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の24日目の記事です。 24日目 EmacsプロジェクトをRumyでコンパイルしてみる試行 ~ひたすらルールファイルを書く~ 前回に引き続き、ひたすらMakefileをRumyファイルに移していきま…

DSLでビルドツールを自作する (23日目 EmacsプロジェクトをRumyでコンパイルしてみる試行 ~必要な機能は何か~)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の23日目の記事です。 23日目 EmacsプロジェクトをRumyでコンパイルしてみる試行 ~必要な機能は何か~ もうすこし大きなプロジェクトをビルドしてみたいと思います。いろいろと調べ…

DSLでビルドツールを自作する (22日目 gitコマンドに埋め込む1)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の22日目の記事です。 22日目 gitコマンドに埋め込む1 最近のビルドツールには、gitによるバージョン管理と融合し、リポジトリの管理の補助をしてくれる機能が当たりします。Rumy-Ma…

DSLでビルドツールを自作する (21日目 Rumy-Templateでお手軽プロジェクトテンプレート作成)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の20日目の記事です。 21日目 Rumy-Templateでお手軽プロジェクトテンプレート作成 例えばRustのパッケージ管理・ビルドツールであるCargoには、Rustプロジェクトを立ち上げるための…

DSLでビルドツールを自作する (20日目 Rumy-Makeのテスト結果を綺麗に管理しよう)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の20日目の記事です。 20日目 Rumy-Makeのテスト結果を綺麗に管理しよう 前回でテストを実行する環境が整いましたが、ただ単にテストを流すだけで結果を綺麗に表示したり、リグレッ…

DSLでビルドツールを自作する (19日目 Rumy-Makeでテストを制御しよう)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の19日目の記事です。 19日目 Rumy-Makeでテストを制御しよう 最近のビルドツール、例えばCMakeやCargoでは、テストに関するルールや機能が追加されています。CMakeではctestという…

DSLでビルドツールを自作する (18日目 コマンドラインの整備)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の18日目の記事です。 18日目 コマンドラインの整備 これまで、Rumy-Makeを起動するために基本的に以下のようなコマンドを実行していました。 RUBYLIB=${HOME}/work/rumy-make/src .…

DSLでビルドツールを自作する (17日目 ビルドルールをYAMLに書きたい 2. YAMLルールをもう少し便利に)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の17日目の記事です。 17日目 ビルドルールをYAMLに書きたい 2. YAMLルールをもう少し便利に 前回、ビルドルールにYAMLルールを導入してみたのですが、いろいろと実装が途中までにな…

DSLでビルドツールを自作する (16日目 ビルドルールをYAMLに書きたい)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の16日目の記事です。 16日目 ビルドルールをYAMLに書きたい これまでで、Rubyベースのビルトツールを作って、独自構文を定義してビルドルールを定義できるようにしてきました。 こ…

DSLでビルドツールを自作する (15日目 環境変数・ディレクトリに依存しないビルドを実現したい)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の15日目の記事です。 15日目 環境変数・ディレクトリに依存しないビルドを実現したい ビルドツールと言えば、チームで作業しているときに自分の環境ではビルドできるのに他人の環境…

DSLでビルドツールを自作する (14日目 並列実行についての検討)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の14日目の記事です。 14日目 並列実行についての検討 Makeには並列実行の機能があります。つまり、make -j32などと並列数を指定すると、それだけ分のコアを使用してビルド処理を行…

DSLでビルドツールを自作する (13日目 Rumyルールから外部Rumyルールを呼ぶ)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の13日目の記事です。 13日目 Rumyルールから外部Rumyルールを呼ぶ 今回実プロジェクトにRumy-Makeを適用したときに、もう一つ追加したい機能がありました。それは、外部のRumy-Make…

DSLでビルドツールを自作する (12日目 C++プロジェクトビルド用のラッパーを作ろう)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の12日目の記事です。 12日目 C++プロジェクトビルド用のラッパーを作ろう 前回、実際に実プロジェクトにRumy-Makeを適用して問題が把握できてきました。まず、C++ファイルをコンパ…

DSLでビルドツールを自作する (11日目 Rumy-Makeを実際のプロジェクトに適用してみる)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の11日目の記事です。 11日目 Rumy-Makeを実際のプロジェクトに適用してみる ここまで、Rumy-Makeの開発行ってきて基本的な機能は実装できたように思います。しかし、まだ足りないと…

DSLでビルドツールを自作する (10日目 もっとデバッグしやすくしたい!)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の10日目の記事です。 10日目 もっとデバッグしやすくしたい! これまでにRumy-Makeにいろんな機能を付けてきましたが、さて実際にこれまでMakefileなどを使用してきた経験で困った…

DSLでビルドツールを自作する (9日目 テストについて考える)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の9日目の記事です。 9日目 テストについて考える これまで、テストはなんとなくサンプルプログラムを作って動かしていました。しかしだんだんテストの量も増えてきて、1つ1つコマン…

SC19で発表されたCerebrasを使用したシステムCS-1の発表資料を読む

非常に出遅れてしまったのだが、SC19でCerebrasのWafer Scale Computingに関する資料が出てきた。 https://secureservercdn.net/198.12.145.239/a7b.fcb.myftpupload.com/wp-content/uploads/2019/11/Cerebras_for_SC19.pdf https://secureservercdn.net/198…

DSLでビルドツールを自作する (8日目 cleanコマンドを作る)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の8日目の記事です。 8日目 cleanコマンドを作る テストの実行方法をちょっと修正 これまで、rumy-exec.rbをロードする方法が分からずに直接./srcディレクトリに移ったうえで../test…

DSLでビルドツールを自作する (7日目 タイムスタンプでルール実行をスキップする)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の7日目の記事です。 7日目 タイムスタンプでルール実行をスキップする いよいよビルドツールの本命ともいえる機能です。タイムスタンプを使用して、更新のないファイルに対sるビル…

DSLでビルドツールを自作する (6日目 細かな調整2)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の6日目の記事です。 6日目 細かな調整2 前回だけではやりたい調整が終わりませんでした。まだまだ直したい部分があります。 同一ターゲット内で複数のexecutesコマンドを受け付ける…

DSLでビルドツールを自作する (5日目 細かな調整)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の5日目の記事です。 5日目 細かな調整 Rumy-Makeの実装を進める前に、少し細かな調整をします。あまり本来のビルドツールとは関係ない、使いやすさの部分で少し改良を加えていくこ…

DSLでビルドツールを自作する (4日目 ターゲットの依存関係を作ろう)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の4日目の記事です。 4日目 ターゲットの依存関係を作ろう Makefileでは、ルールに対する依存関係を記述することができます。あるルールを実行するためには、まずは依存する別のルー…

DSLでビルドツールを自作する (3日目 ターゲットを実行する)

この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の3日目の記事です。 3日目 ターゲットを実行する 前回、ターゲットを作ったので、次はターゲットを実行するためのルールを追加します。ターゲットを実行するために、exec_target関…