ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。2019-04-04ChiselのPeekPokeTesterにはIntをBigIntに変換するメソッドがあった話Chiselスポンサーリンク前回のChiselのテスト実行時にプログラム引数を指定する方法についてを紹介した。www.tech-diningyo.info今日は以前に書いた”UIntの大きな定数を指定する方法”を書いた時には気づかなかったメソッドを見つけたのでそれを紹介しようと思う。ChiselでUIntの大きな数字を扱うと。IntをBigIntに変換するメソッドがある実装を見てみるChiselでUIntの大きな数字を扱うと。以前にこんな感じのネタ↓を書いた。www.tech-diningyo.info詳しくは記事を見ていただきたいのだが、簡単にまとめると以下のようなテストコードを書いたらエラーになったという話だった。0何が起きているかというとScalaにはInt型のみが存在しており、符号なし整数が存在していないため、上記の定数0xdeadbeafはMSBが符号ビットとして解釈されUIntに変換する際にこの数はSIntで型が合わない!!とエラーになるということがだった。16)という方法を紹介した。IntをBigIntに変換するメソッドがあるここからがこの記事の本文。こんなのあったよーという内容なのであっさり目。メソッドはPeekPokeTesterに定義されている以下の2つ。BigInt使い方は上記のメソッド定義のまんまで引数にInt/Longのデータを入れるだけ。先ほどのコードで使ってみよう。PASSED今度はPASSした。因みにこの2つのメソッドはPeekPokeTesterに実装されているので、PeekPokeTesterのインスタンスや、これを継承して作った自分のモジュール向けのテスタークラス内でしか使用できない点に注意が必要だ。実装を見てみるこの2つのメソッドはとてもシンプルな(&個人的には目からウロコな)実装になっているので、紹介しておく。1)実装は簡単で入れたIntを右に1bitシフト1bit右にシフトしたものを左にシフトLSBの1bitが削れているのそれをorするというもの。こんな感じなので通常のモジュールでも何か固定値を埋め込むようなケースでは使うのものありかもしれない。いうわけで今日はあっさり目のメソッドの紹介でした。BootcampのModule2.4の学習を終えた。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。