ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。BootcampはChiselのコレクション型であるVecについて調べた。www.tech-diningyo.info今日はModule3.2の締めくくりとして練習問題を見ていく。ジェネレータ:コレクションChiselのコレクション型の使用例ここではChiselのVecを使った練習問題に取り組んでいく。RISC-Vプロセッサ練習問題なので、これまでどおりこの部分は丸々引用。レジスタファイルはプロセッサを作る上で重要なブロックだ。これはレジスタの配列でリード/ライトポートを使って読み書きが出来る。これらのポートはアドレスとデータフィールドで構成される。RISC-VのISAは複数の構成を持つが、その中で最もシンプルなのはRV32Iである。RV32Iは32本の32-bitレジスタ配列を持つ。レジスタ配列のインデックス0番はライトをしたとしてもリードをすると常に"0"が読み出される。(これは0を得るのに便利である)RV32I向けに単一のライトポートとパラメタライズされたリードポートを備えたレジスタファイルを実装してみよう。enable)がアサートされた場合にのみ有効となる。以下が練習問題用の提供されているレジスタファイルのスケルトンになる。}}}なんか色々それっぽいテストコードになってきてるな。難しいことは無いけど、このまんまだと書くことが殆ど無いので、少しだけ解説。実装したレジスタファイルへの書き込み関数テスト本体readExpectごくシンプルなリードタスクで、アドレスを指定するとレジスタファイルの指定したアドレスの値が同じサイクルで返却される。読みだすリードポートはデフォルトでは0番になるので、他のポートを使用する場合には第3引数に所望のぽーとしていを行う。読み出された値と引数のvalueをexpectで比較してOK/NGを判定する。verilogでタスク書くと以下のイメージになる。readExpectwriteこちらもごくシンプルなライトタスク。実行するとwenに1が入力されてaddrで指定されるレジスタにvalueの値が反映される。実行後にstep(1)を呼び出すことによって、シミュレーション上の時間を1cycle進め、wenを0に落として処理が完了となる。verilogでのタスクは以下の感じ。write実装するレジスタファイルの仕様について問題文及び、テストコードから実装するレジスタファイルの仕様を箇条書きすると以下の様になる。仕様をまとめると以下のようになるだろうか。クリックすると開くので、見たくない場合は開かないように注意。}}レジスタはすでにVecで確保されているので、後はライトとリードに対してどうするかという部分を実装すればOK。これを実際に実行してみると、以下のようにテストにパスすることが確認できる。PASSEDちなみBootcampの解答では、32本のレジスタにとりあえず値を書いて、読み出し値を0にするという実装を行っていた。こちらのほうが問題文には忠実な気もする。このレジスタファイルを回路をRTLにすると、結構な分量のコードになった。長いのでここに貼るのはやめてgistにあげてあるので興味があればご覧になってほしい。Module3.2練習問題のレジスタファイルのRTLレジスタファイルVerilog版Chisel版をRTLした場合Vecがそのまま全展開されており、それがコードが長くなった原因ではある。Verilogだとメモリ配列使っても書いてもChiselのコードよりはどうしても長くなってしまう。reg_fileやっぱりalways文やらリセット周りの部分があるからこればっかりは仕方ないか。それにポートのビット幅ならともかく、ポートの端子自体をパラメタライズって出来る気がしないし。上記verilog版はシミュレーション環境含めて、以下のgithubにプロジェクト一式を上げておいた。github.comこれでModule3.2も終了。Chiselが馴染んできた。次もModule3.2になってるな。Module3.2とModule3.3の幕間になるようで、Chiselに組み込まれている標準ライブラリの紹介を見ていく。練習問題:Vecを使ったRISC-VのレジスタファイルTweet関連記事2019-04-27ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(2)今日は昨日の続き。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。