「Chiselを始めたい人に読んで欲しい本」書きました!
ヲレの話を聞け〜!
というアドベントカレンダーがあったので参加してみました。
そんなわけで、この記事は
「ヲレの話を聞け〜! 技術の薄い本、著者からのオススメ Advent Calendar 2019」
の9日目のネタになります。普段はブログやらtwitterやらで活動していますが、noteを使ってみたかったのでnoteで書いてます。
技書博2で「Chisel」というHW設計言語の本出します!
ということで本題です。見出しのとおりですが、12/14に開催される第二回技術書同人誌博覧会にて、Chiselのこと書いた
Chiselを始めたい人に読んで欲しい本
だします!!
ChiselでHW設計を行う上で必要になるScalaの文法にはじまり、Chiselの基本的な文法、Chiselが備える強力なパラメタライズの機能やテスト機能といった、応用的なトピックまでを、サンプルコードと共に解説しています。
中身はこんな感じ↓。
- Chiselって??
- Chiselの実行環境構築
- Scalaの基本的な文法
- Scalaの型
- 制御式
- クラス・トレイト・オブジェクト
- Chsielの基本的な文法
- エレメント型(Bool・UInt/SInt・FixedPoint)
- アグリゲート型(Vec・Bundle)
- ハードウェアの構成要素(モジュール・IO・ネット・レジスタ・レジスタ配列)
- 演算子
- 制御構文
- クロックとリセットの仕組み
- Chiselをもっと便利に使うために
- 標準ライブラリ(ビット幅計算・BlackBox・DecoupledIO)
- Chiselのテスト機構
- 回路のパラメタライズ
すぐに動かして試せるようにChisel3.2.0で動作するサンプルコードもついてるよ!!!(え、多い、と言ってもらえたくらいのボリュームだ!)
いや、Chiselってなんやねん??
そうですね、そんな声も聞こえてきそうです。通常のHW設計で使用されているVerilog-HDL/SystemVerilog、VHDLという言語があります。どこかからお叱りが来そうですが「C言語とかで今のスマホのアプリ作れ」みたいな話が、HWの設計においても存在していて、年々設計にかかる時間が増えてきています。
こういった話に対して高位合成というアルゴリズムをHW化する手法もあったりしますが、Chiselはこれに属しているわけではありません。どちらかといえば
- 最近の言語でHW設計できるようにしちゃおうぜ!!したら楽できるやん!
という感じで、今のHDLをパワーアップしたような感じの言語になってます。なのでChiselの公式のアナウンス的にはHCL(ハードウェア構築言語)と呼称しています。
これが広がったきっかけは、ご存じの方もいるとは思いますがRISC-VというオープンソースISAの実装に使われていたからです(Rocket ChipとかBOOM)。また去年あたりにGoogleがEdgeTPUというDL用のアクセラレータの設計がChiselで行われたということで話題になってました。
どうでしょう??少しだけ興味が出てきませんか??
「情報がなくてとっつきづらい」をなくしたい
自分はRISC-VのRokcet Chipの設計に使われたという話を聞いて「面白そうやん!」とChiselを調べ始めましたが、調べること1時間位、感想は
「情報がなーーーーーい!!!」
でした。調べたことある方なら気持ちを分かってもらえるはず。
そんな状態から、コツコツ調べてChiselと仲良くなってみたら、思った以上に楽できることがわかってきた&書いてて楽しいので、これを広めるべく本にしてみた次第です。
そんなこともあり、今回の本にはChiselを学ぶ上で最初に知っておきたかったことや、ソースコードを解析して初めて分かったことなどを中心に盛り込みました。
また最初に始めた際に、学習が進みづらかった理由の1つに「簡単なサンプルコードが少ない」というものがありました(Rocket Chipとかは、最初に読んだら絶望しかねん)。そのため、繰り返しになりますが「そこそこの量のサンプルコード」もつけてます。しかも動作確認を行ったのは今年リリースされたChisel3.2.0なので、これから始めたい人にピッタリ!
Chiselを本格的に触ってみたいけど、情報が無くて手が出ていない人に読んでもらえたら嬉しいなーっと。
ブースの情報、本の情報は以下をご覧ください。ついでにチェックもしといてれくれるとありがたいです!
是非お手にとってもらえると嬉しいです!