ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。2019ということで今回はRC1/RC2/3.2.0のリリースノートから気になる機能をピックアップして確認しておこうと思います。先に書いたように3.2.0のリリースにあたって2つのRC版がリリースされており、そのリリースノートに各リリース版での修正内容が記載されています。https://github.com/freechipsproject/chisel3/releases/tag/v3.2.0主だった修正内容はほぼほぼRC1に含まれており、RC2と3.2.0でそこに含みきれないけど入れたいものが修正された感じのようです。読んだ感じで、機能面で変更された部分を上げていくと:dontTouch/RawModule/MultiIOがstableになったtoBool/toBoolsがasBool/asBoolsに変更されたMuxにDontCareが使えるようになった。ヘルパー関数としてUnsignedBitsRequired/UnsignedWidthRequiredが追加リリースバージョンでは見当たらない。3.2の間に変わったのか。Chisel触り始めた時には既にこうだった気がする。非同期リセットのサポートこんな感じ。気になる機能を実際に軽く試してみた。MuxにDontCareが使えるようにこれはそのまんまでMuxを使用した際の選択される要素にDontCareを指定できるようになった。12:10]endmoduleMuxCaseでも同様。23:10]endmodule確かに普通に処理が終わって生成されている。Literalsのサポートなんのこっちゃ??と思って読んでみたけど、どうやらBundleで作ったクラスのメンバをインスタンス時に初期化出来るようにしたということらしい。使い方はこの機能のテストのコードを読むとわかるのだが、大体以下のような感じ。out}生成されたRTLは以下のように初期化した値が正しく設定されていた。25:6]endmodule因みにVecの扱いがテストコードに見つからなくて、幾つか試してみたけどやり方が分からなかった。前は無理やりこんな感じのことをやるメソッドを作ったりして対応していたので、結構便利に使えそう。Verilog形式のメモリ読み込みのサポートこれイマイチどこまでのことを指して言っているのかがわからん。以下のようなコードを書いてみた。0.U)}上記に対してのテストコードが以下で、ただメモリにアクセスしてリードするだけ。}}バックエンドを切り替えて以下のメモリファイルを入れてみた。treadle.executable.MemoryInitializer$$anonfun$treadle$executable$MemoryInitializer$$doInitialize$1.apply(Memory.scala:580)読めないって言われた。0x00000000こっちは普通に動作して@を使ったアドレスの指定も可能になっていた。treadleのメモリ読み込みで$readmemh相当の処理が出来るようになってくれると、もう少し便利になるかな、と言った感じ。MixedVecのサポートMixedVecを使うと以下のようなコードが書けるようになる。12:13]endmoduleこれ引数にSeq[T]を取ることも出来るので、前出来なくて諦めたVecの各要素毎のパラメタライズが出来る気がする。(Vec[T]にパラメタライズ出来るBundleを指定して、ポートごとに設定を変えるようなイメージ)力尽きたので2回に分けます。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。