プログラミング言語scalaベースのハードウェア記述言語 risc-v … · 138...

1
138 RISC-Vコミュニティで使われる代替HDL“Chisel” プログラミング言語Scalaベースのハードウェア記述言語  RISC-V コミュニティで使われる 代替 HDL“Chisel” 中澤 慧 Kei Nakazawa 本誌前号(No.18)の第 1 章にて RISC-V の現状を紹介する中で,何度か Chisel という単語が出てきました.記事中では詳しい説明 を避けましたが,Rocket や BOOM,Z-scale といった RISC-V 系コアの一部や,OpenSoC Fabric の構築要素として利用されています. ここではハードウェア記述言語 Chisel について簡単に紹介します. 般的なScalaコードを直接Verilog HDLへ変換するよ うな,いわゆる高位合成の仕組みではありません.こ のため,レジスタの割り当てや回路の状態遷移管理と いった,RTL設計を強く意識してアルゴリズムを考 える必要があります. Scala の特徴と誤解 Chiselは,Scala上に構築されたドメイン固有言語 (DSL)です.つまりChiselで回路設計をする際には Scalaのコードを読み書きすることになります.この ため,Chiselの説明を始める前に,Chiselの基盤であ る Scala について少々触れておきます. Scala はオブジェクト指向・関数型を組み合わせた, 自由度の高いプログラミング言語です.もちろん関数 型プログラミングが可能ですが,Javaよりも書きや すいオブジェクト指向言語としても利用できます 注1 もう1つ,Scalaはコンパイルが遅い言語というイ メージを持たれていますが,通常の Chisel 開発ワーク フローでコンパイル速度が問題になることはあまりあ りません. Chisel のアーキテクチャ Chisel のアーキテクチャを図2 に示します. 回路設計者は,Chiselの流儀に従ってScalaのソー Chisel とは何か 1 ハードウェア記述言語 Chisel Chiselは,プログラミング言語Scalaを基盤とする 記述力の高いハードウェア記述言語です.カリフォル ニア大学バークレー校の研究グループが2012年から 開発しています.公式サイトを 図1 に示します. “chisel”という単語には,ノミや彫刻刀という意味が あります. Scalaを用いてディジタル回路を記述しますが,一 大学発の ハードウェア 記述言語 注1:Scalaの入門にはドワンゴの研修テキストであるhttps:// dwango.github.io/scala_text/ をスタート地点とす ることをお勧めする. 図 1 ハードウェア記述言語 Chisel の公式サイト https://chisel.eecs.berkeley.edu/ 図 2 Chisel のアーキテクチャ Verilator .scala Chisel用 テスト・コード Chisel ソース・コード Verilog HDL 商用シミュレータ 各種EDAツール FIRRTL 中間表現 モジュール・ シミュレータ テスト・ ランナ

Upload: others

Post on 13-Sep-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

138 RISC-Vコミュニティで使われる代替HDL“Chisel”

プログラミング言語Scalaベースのハードウェア記述言語 RISC-Vコミュニティで使われる

代替HDL“Chisel”中澤 慧 Kei Nakazawa

 本誌前号(No.18)の第1章にてRISC-Vの現状を紹介する中で,何度かChiselという単語が出てきました.記事中では詳しい説明を避けましたが,RocketやBOOM,Z-scaleといったRISC-V系コアの一部や,OpenSoC Fabricの構築要素として利用されています.ここではハードウェア記述言語Chiselについて簡単に紹介します.

般的なScalaコードを直接Verilog HDLへ変換するような,いわゆる高位合成の仕組みではありません.このため,レジスタの割り当てや回路の状態遷移管理といった,RTL設計を強く意識してアルゴリズムを考える必要があります.● Scalaの特徴と誤解 Chiselは,Scala上に構築されたドメイン固有言語

(DSL)です.つまりChiselで回路設計をする際にはScalaのコードを読み書きすることになります.このため,Chiselの説明を始める前に,Chiselの基盤であるScalaについて少々触れておきます. Scalaはオブジェクト指向・関数型を組み合わせた,自由度の高いプログラミング言語です.もちろん関数型プログラミングが可能ですが,Javaよりも書きやすいオブジェクト指向言語としても利用できます注1. もう1つ,Scalaはコンパイルが遅い言語というイメージを持たれていますが,通常のChisel開発ワークフローでコンパイル速度が問題になることはあまりありません.● Chiselのアーキテクチャ Chiselのアーキテクチャを図2に示します. 回路設計者は,Chiselの流儀に従ってScalaのソー

Chiselとは何か1

● ハードウェア記述言語Chisel Chiselは,プログラミング言語Scalaを基盤とする記述力の高いハードウェア記述言語です.カリフォルニア大学バークレー校の研究グループが2012年から開発しています.公式サイトを図1に示します.

“chisel”という単語には,ノミや彫刻刀という意味があります. Scalaを用いてディジタル回路を記述しますが,一

大学発のハードウェア記述言語

注1: Scalaの入門にはドワンゴの研修テキストであるhttps://

dwango.github.io/scala_text/をスタート地点とすることをお勧めする.

図1 ハードウェア記述言語Chiselの公式サイトhttps://chisel.eecs.berkeley.edu/

図2 Chiselのアーキテクチャ

Verilator

.scala

Chisel用テスト・コード

Chiselソース・コード Verilog HDL 商用シミュレータ

各種EDAツールFIRRTL中間表現

モジュール・ シミュレータ

テスト・ ランナ