Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
ScalaでASICやFPGA用の回路を
設計するChisel
@muo_jp 2017/09/09 Scala関西Summit LT
発表者(@muo_jp)のScala歴
• 仕事の合間に2年ぐらいじわじわと
読んできたもの:
• Scala関数型デザイン&プログラミング(FP in Scala)
• https://tatsu-zine.com/books/functio...
Scala関数型デザイン&
プログラミング(FP in Scala)
Scalaパズル Scala研修テキスト(ドワンゴ社)
→ 共通点???
Scala関数型デザイン&
プログラミング(FP in Scala)
Scalaパズル Scala研修テキスト(ドワンゴ社)
→ タイトルにScalaと
入ってる!
Scala関数型デザイン&
プログラミング(FP in Scala)
Scalaパズル Scala研修テキスト(ドワンゴ社)
ではなくて
Scala関数型デザイン&
プログラミング(FP in Scala)
Scalaパズル Scala研修テキスト(ドワンゴ社)
→ SparkもAkkaも
Play Frameworkも出てこない
Scala for Data Analysis
Scala for Cloud Services
Scala for Mobile Applications
...
Scala for Data Analysis
Scala for Cloud Services
Scala for Mobile Applications
...
Scala for Hardware Construction ←ココ
Scalaで
デジタル回路を
設計する??
Chisel 3
• Scalaでデジタル回路を設計/テストする為のクラス/ツール群
• デジタル回路? →論理ゲートの山と内部メモリ(フリップフ
ロップ)の山と各種接続やI/Oなど
• カリフォルニア大学バークレー校(UCB) の研究室発
•...
Chisel 3のアーキテクチャ
Chisel
ソースコード
.scala
FIRRTL
中間表現
Verilog
HDL
Chisel用
テストコード
商用シミュレータ
各種EDAツール
Verilator
モジュール
シミュレータ
テスト
...
作例
作例(Maker Faire Tokyo 2016展示物)
class TmdsEncoder extends Module {
val io = IO(new Bundle {
val disp_ena = Input(Bool())
val control = Input(UInt(2.W))
va...
Q. まあ理想は高いお遊び系のものでしょ?
A. 実世界での利用実績
• Rocket Chip Generator、BOOM
• RISC-Vアーキテクチャ(RV64G)CPUのリファレンス的実装
• FPGA動作だけではなくASIC化実績がすでに複数回ある
• https://git...
Chiselの嬉しいところ
• ソフトウェアロジックとして書いたScalaコードとChiselのスタイル
で設計した回路の出力を突き合わせてテストするのが基本
• ソフトウェア方面の方法論を取り込んでハードウェア開発を加速し
よう、という人々に...
参考文献
• https://github.com/freechipsproject/chisel3/wiki
• 公式wiki
• https://chisel.eecs.berkeley.edu/chisel-dac2012.pdf
• 論...
Let’s construct
digital circuits
in Scala!
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
Prochain SlideShare
Chargement dans…5
×

ScalaでASICやFPGA用の回路を設計するChisel

2 532 vues

Publié le

Scala関西Summit 2017の懇親会LT資料です

Publié dans : Technologie
  • Soyez le premier à commenter

ScalaでASICやFPGA用の回路を設計するChisel

  1. 1. ScalaでASICやFPGA用の回路を 設計するChisel @muo_jp 2017/09/09 Scala関西Summit LT
  2. 2. 発表者(@muo_jp)のScala歴 • 仕事の合間に2年ぐらいじわじわと 読んできたもの: • Scala関数型デザイン&プログラミング(FP in Scala) • https://tatsu-zine.com/books/functional-programming-in-scala • Scalaパズル • http://www.shoeisha.co.jp/book/detail/9784798145037 • Scala研修テキスト(ドワンゴ社) • https://dwango.github.io/scala_text/
  3. 3. Scala関数型デザイン& プログラミング(FP in Scala) Scalaパズル Scala研修テキスト(ドワンゴ社) → 共通点???
  4. 4. Scala関数型デザイン& プログラミング(FP in Scala) Scalaパズル Scala研修テキスト(ドワンゴ社) → タイトルにScalaと 入ってる!
  5. 5. Scala関数型デザイン& プログラミング(FP in Scala) Scalaパズル Scala研修テキスト(ドワンゴ社) ではなくて
  6. 6. Scala関数型デザイン& プログラミング(FP in Scala) Scalaパズル Scala研修テキスト(ドワンゴ社) → SparkもAkkaも Play Frameworkも出てこない
  7. 7. Scala for Data Analysis Scala for Cloud Services Scala for Mobile Applications ...
  8. 8. Scala for Data Analysis Scala for Cloud Services Scala for Mobile Applications ... Scala for Hardware Construction ←ココ
  9. 9. Scalaで デジタル回路を 設計する??
  10. 10. Chisel 3 • Scalaでデジタル回路を設計/テストする為のクラス/ツール群 • デジタル回路? →論理ゲートの山と内部メモリ(フリップフ ロップ)の山と各種接続やI/Oなど • カリフォルニア大学バークレー校(UCB) の研究室発 • https://chisel.eecs.berkeley.edu/ • Haskell界隈でLavaを知っている人には話が早い • 高位合成系ではない
  11. 11. Chisel 3のアーキテクチャ Chisel ソースコード .scala FIRRTL 中間表現 Verilog HDL Chisel用 テストコード 商用シミュレータ 各種EDAツール Verilator モジュール シミュレータ テスト ランナー
  12. 12. 作例
  13. 13. 作例(Maker Faire Tokyo 2016展示物)
  14. 14. class TmdsEncoder extends Module { val io = IO(new Bundle { val disp_ena = Input(Bool()) val control = Input(UInt(2.W)) val d_in = Input(UInt(8.W)) val q_out = Output(UInt(10.W)) val test_io = new Bundle { val p0 = Output(SInt(8.W)) val p1 = Output(SInt(8.W)) } }) io.q_out := 0.U val q_m = Wire(UInt(9.W)) val ones_din = Wire(UInt(4.W)) val ones_q_m = Wire(UInt(4.W)) val diff_q_m = Wire(SInt(8.W)) val disparity = Wire(SInt(8.W)) val disparity_reg = RegInit(0.S(8.W)) TMDS変換回路(部分)
  15. 15. Q. まあ理想は高いお遊び系のものでしょ?
  16. 16. A. 実世界での利用実績 • Rocket Chip Generator、BOOM • RISC-Vアーキテクチャ(RV64G)CPUのリファレンス的実装 • FPGA動作だけではなくASIC化実績がすでに複数回ある • https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom/ • OpenSoC Fabric (DoE CoDExプログラム) • SoC内でコア同士を連携させる部分(NoC) • http://www.opensocfabric.org/
  17. 17. Chiselの嬉しいところ • ソフトウェアロジックとして書いたScalaコードとChiselのスタイル で設計した回路の出力を突き合わせてテストするのが基本 • ソフトウェア方面の方法論を取り込んでハードウェア開発を加速し よう、という人々によって推進されている • Verilog HDLコードの生成部分がFIRRTLという中間言語レイヤ (Scala製)に切り出されている • これに乗っかって比較的簡単にオレオレHDLを組める • → 自分でC#-embeddedなHDLを試作してみた例
  18. 18. 参考文献 • https://github.com/freechipsproject/chisel3/wiki • 公式wiki • https://chisel.eecs.berkeley.edu/chisel-dac2012.pdf • 論文形式のほうが読みやすい方向け(旧バージョンのためアーキテクチャ差あり) • https://techbooster.booth.pm/items/299592 • The Web Explorer 2「第8章 Scalaでイージーにハードを設計する」(拙著) • https://www.muo.jp/2016/08/mft2016-chisel-booklet.html • Maker Faire Tokyo 2016での頒布冊子(拙著) • http://www.kumikomi.net/fpga/contents/0018.php • FPGAマガジンNo.18「第1章 これでスッキリ!RISC-Vを取り巻く現状」内(拙著) • FPGAマガジンNo.19 2017/10/25発売号 • Chisel 3の簡単な入門とワークフロー紹介を掲載予定(拙著)
  19. 19. Let’s construct digital circuits in Scala!

×