ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

Chisel3.4.0のリリースノートを確認した(4) - verificationオブジェクト

Chisel3.4.0の変更点確認の4回目。今回は#1499で追加されたverificationオブジェクトについて。

  • (#1499) Basic model checking API
    • サンプルからRTLを生成する(Verilog HDL)
    • サンプルからRTLを生成する(System Verilog
続きを読む

Chisel3.4.0のリリースノートを確認した(2) - naming & prefix

Chisel3.4.0の変更点確認の2回目。今回からは、気になった機能を確認していく。 まず最初はChisel3.4.0の目玉機能である、コンパイラプラグインとPrefixingによる、命名規則の改善について。

  • (#1448) Improved Chisel Naming via Compiler Plugins + Prefixing
続きを読む

Chisel3.4.0のリリースノートを確認した(1) - 概要編

Chisel3.3.0の確認をーーー、、、急がないと3.4.0がー!!ってやってたらChisel3.4.0がリリースされました。
Chisel3.3.0の変更点の確認は、気になったやつは前回で一応おわってて、後はリリースノート確認中に「こんな機能あったんか」案件だったため、ギリギリChisel3.4.0に間に合ったということで。。。

そんなわけで、Chisel3.4.0のリリースノートの確認をしていこうと思う。

  • Chisel v3.4.0がリリースされた
    • 先にざっくりまとめ
    • API Modification
      • (#1563) Better Building of FIRRTL From Source, Use sbt-sriracha for firrtl and treadle source deps
      • (#1580) Add new annotation for Chisel Circuit serialization, --chisel-output-file is added to the ChiselCli.
      • (#1476) Move LFSR16 to Compatibility Mode (Deprecated in 3.2), - Remove deprecated LFSR16 utility
      • (#1550) Deprecate Module.io and BlackBox.io virtual methods (future 2.13 compatibility)
    • Fixes
      • (#1568) Relax plugin scalac phase order
    • Feature
      • (#1448) Improved Chisel Naming via Compiler Plugins + Prefixing
      • (#1499) Basic model checking API
      • (#1515) Allow a counter to be instantiated using a Scala range
      • (#785) Canonicalize construction of Decoupled with no payload
      • (#1485) Memoize the hashcode of the ChiselCircuitAnnotation, improves performance of multi-phase generators
      • (#1073) Grouping Chisel API, added a chisel annotation API for triggering the firrtl.transforms.GroupComponents transformation.
      • (#1203) Add support for ScalaFix.
      • (#1280) Provide an implementation of litOption() for BundleLits
      • (#1405) Switch to HowToSerialize for Emission
      • (#1525) update Select.get(IntermediateAnd)Leafs to work with records
      • (#1527) Allow a counter to be manually reset
      • (#1420) README: add link to website source. Now easier to figure out how to help enhance the content
      • (#1518) Check whether signals escape their when scopes, Include and check when scoping as part of reg/mem/wire/node bindings
      • (#1554) Chisel3 can use treadle to run tests (faster), only depends on Treadle dependency in tests
      • (#1452) make parameters for util modules public
      • (#1557) Recursively generate one-hot multiplexers for aggregates
      • (#1558) Remove use of deprecated PreservesAll, cleanup dependencies, all phases are converted to be more canonical in there specification of dependencies
      • (#1560) Added website docs and mdoc.
      • (#1561) Move multi-clock to explanations
      • (#1562) Updated PR template to include checklist and documentation updates
      • (#1566) Add ChiselPhase, Stop writing files in ChiselStage$ methods, Expand ChiselStage$ helpers
      • (#1570) Update README.md
      • (#1571) Restore and deprecate Chisel.Driver, until we also remove underlying chisel3.Driver
      • (#1572) Add chisel plugin to mill build system. This enables better, more stable naming capabilities in Chisel3
      • (#1573) Add documentation of new plugin.
      • (#1579) bug fix for build.sc
      • (#1583) Fix load memory from file to work with binary
      • (#1590) Improved speed of ChiselPlugin
      • (#1595) Support using switch without importing SwitchContext
    • Miscellany
      • (#1439) Bump 'removed in 3.3' deprecations to 3.4
      • (#1395) Update sbt-site to 1.4.0
      • (#1413) Update scalacheck-1-14 to 3.1.1.1
      • (#1415) Update sbt to 1.3.10
      • (#1429) Update Mergify rules to backport to 3.3.x
      • (#1430) Update scalatest 3.1.2
      • (#1459) verilator_4_016 --> v4.016
      • (#1460) Restore backporting to 3.2.x
      • (#1479) Have defaultVersions specify complete ModuleIDs.
      • (#1481) Remove Deprecated Usages of chisel3.Driver, CircuitForm
      • (#1489) Fix Mergify Backport labeling for 3.2.x
      • (#1493) Don't run FIRRTL in FlattenSpec's ChiselStage
      • (#1495) Add .scala-steward.conf
      • (#1504) fix treadle dependency for mill
      • (#1511) Update Development Meetings Info
      • (#1516) Add Treadle to CI builds
      • (#1524) Update build instructions in README
      • (#1530) Instance API for Importing Modules
      • (#1539) Update OneHot.scala
      • (#1544) Remove ChiselLegacyAnnotation It was private and unused
      • (#1551) Deprecate support for Scala 2.11
      • (#1553) Bump Scala to 2.12.12
続きを読む

Chisel3.3.0のリリースノートを確認した(6) - 簡単なやつを3つ

引き続きChisel3.3.0の変更点を。。Chisel3.4.0はリリース間近!!(ただいまRC3)。
今回はIssueのタイトル読めばほぼ理解できる、次の3つを簡単に紹介。

なお、補足として説明する部分もほとんどないので、基本サンプルコードと実行結果を貼るだけ。

  • #1283 BitPatで空白文字が使えるようになった
  • #1284 ScalaのDouble/BigDecimalからFixedPointへの変換ができるようになった
  • #1326 Printfがタブ文字をサポートした
続きを読む

Chisel3.3.0のリリースノートを確認した(5) - NoChiselNamePrefix

引き続きChisel3.3.0の変更点を。。Chisel3.4.0はリリース間近!!(ただいまRC2)。
今回は#1383@chiselNameの処理を非適用にする機能NoChiselNamePrefixについて。

  • #1383 @chiselNameの処理を非適用にするトレイトが追加された
続きを読む

Chisel3.3.0のリリースノートを確認した(4) - @chiselNameが強化された

あっという間に9月になりました。。

本題に入る前に少し宣伝的な事も書いてみます。

過ぎ去った8月末に、昨年同人誌で出版したChiselの本の商業誌版が出版されました。

内容的には同人誌版をベースに執筆時点で書ききれなかった内容+執筆時点からのアップデートが追加されたものになっています。ざっくりとは次の点を追加しました。

  • 書き漏らしていたトピックの追加
    • desiredName
    • おまけ扱いにしたUartをエコー制御するシステムの解説
  • Chisel3.3.0のトピックをいくつか追加
    • ChiselStageを使ったRTLの生成
    • RequireAsyncResetの解説

あとは自分で発見できた限りの誤字や画像の修正などなど。。。
商業誌版の出版にあたって、サンプルコードはgithubに公開しています。多分こっちをざっと見るだけでもそれなりに役に立つかと思いますので「Chisel始めたいけど、サンプルとかが見つからないしなー」と思ったことのある方は是非、ご覧になってみてください(本も見てもらえるとなお嬉しい)。

以上、宣伝でした。

ということで、引き続きChisel3.3.0の変更点を確認していく、、、、んだけど、早くしないとChisel3.4.0が出てきそう(ただいまRC1)。
今回は#1209@chiselNameがChiselのモジュール以外にも適用可能になったという件について。

  • #1209 @chiselNameがChiselのモジュール以外にも適用可能になった
続きを読む