ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。Scalaスポンサーリンク前回のChisel-Bootcampの学習ではScalaのunapplyと部分関数についてを見ていった。www.tech-diningyo.info今回も引き続きModule3.6を見ていく。今日はChiselの型についてもう少し詳しく見ていく。型安全な接続Chiselの型同士を接続する場合に何がチェックされているのか、、という部分についての項目。多くの場合についてはChiselは接続時にチェックを行ってくれていてまずい場合にはエラーを出してくれる。サンプルコードは以下。io_bundleIn_a;endmodule上記のコメント中にあるとおり、ClockはChiselおいては別の型になるので、これをUIntやBoolに接続するとエラーになる。UInt→BoolやBool→UIntは接続可能。これはBoolがUIntを継承して作れらた型になっているから。{3つめのBundleを使った例では、Bundle2がBundle1を継承した結果Bundle2にもaが存在しているので、そのaのみが接続される結果となる。因みにこれは:=を使って接続した場合で、<>を使って接続しようとするとbが存在しないためエラーになる。(b).一方でSInt→UIntやSInt→Boolについては何もせずに接続すると以下のようなエラーが発生する。types.ということでざっくりまとめると以下のような感じか。一応補足すると、IOの接続に置いてはポートの方向はいずれの場合でもチェックされるため、接続の方向がぶつかった場合にはエラーになる。Verilogだと警告出てもエラーにならなかったりするよね、これ。いうことでUIntとBoolで意図しない接続がされてないか、、という部分はチェックが必要だけど、それ以外についてはChiselのエラボレート時にかなり細かく見てくれるので、これに結構助けられるケースはあるはず。目だけど、キリもいいので今日はここまで。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。