ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。Verilog-HDLスポンサーリンク令和になって最初の投稿。ほんとは昨日上げたかったんだけど。_)m前回の記事の終わりに以下のようなこと書いた。MemBaseにマスク付きのライトタスクが用意されているので、ひょっとするとそっちを使うと何か変化が起きるのかもしれないので別途試してみようと思う。www.tech-diningyo.infoなので、今回は上記のネタ提起の回収編を書こうと思う。あと実は前回の2次元メモリは不要な記述があったので、それについての訂正も。Verilogで使える以下のような奴のこと。mem[0:1023]でこれを実現するにあたって、前回実装したものが以下のようなものだった。注:前回のものから少し変更しました。Bundleで包んでいたVecを直接そのままMemに渡す形にした前回の記事ではメモリ内のVecは変数colに入っていた書き込み処理をfor式で書くようにしたなお、この記事に合わせて前回の記事にも訂正を入れてます。Cat(m(io.addr).reverse)}Memのwriteメソッドを使用する形に書き換えてみるご存じの方もいると思うがChiselのMemのスーパークラスのMemBaseにメモリにアクセスするためにread/writeメソッドが用意されている。書き込み用のメソッドwriteには2つの実装が用意されており、そのうちの一つがVecを受け取ることを想定している形になっているので、上記のMem2Dクラスをwriteメソッドを使用した形に変更して生成されるRTLに変化があるかを確認してみようと思う。MemBaseのwriteの実装まずはwriteクラスの実装を確認してみよう。}引数を見てもらえればわかる通り、型パラメータTを受け取る形になっている。このTは前回に確認したとおりインスタンス時に渡す第二引数の型でありChiselのDataから派生したものになる。UInt(8.W))になるのでwriteメソッドを使用する場合は渡すデータもこの形に変更する必要がある。このことを踏まえてMem2Dクラスを書き換えてみよう。Cat(m.read(io.addr).reverse)}ライト部分を変更して生成されるRTLに差が出るかを確認したかったのでクラスパラメータとしてuseWriteTaskを用意してこれで切り替える形にした。4のWire(Vec)に変換したwrdataを使って書き込む様にしてある。新しいMem2Dクラスのテストこれに対して前回の記事で実施したテストを実行してみる。テストクラスはかなり適当に以下の感じ。以下の様にwriteを使う場合/使わない場合で同じ様にPASSすることが確認できた。passed.RTLを比較してみるここまでで動作自体はwriteを使用しない版と同等になっていることを確認できたので、RTLを生成して確認してみる。Mem2D(true))}これを実行すると"rtl"というディレクトリの下に"Mem2D.*"と"Mem2DWithWrite.*"というファイルが幾つか生成される。writeを使用しない版のRTLコード全部については前回の記事をご覧いただくとして、ここではwrite使用版で生成したRTLと不使用版のメモリ書き込み部分のみを記載する。endendmodule一目瞭然でしたね。writeを使用すると不要な論理が生成されないので、こちらを使ったほうが見やすくて良いという結果になりました。因みにwrite使わない版io.wrenの部分に各バイトレーン用のmaskを作って&&とる実装も試してみたけど、結果は全く変わらんかった。UInt→Wire(Vec[UInt])の変換を行う必要があるとこは多少面倒な感じもするけど、write使うほうが良さそうかな。13:50Chiselで2次元メモリっぽいのを作る(2)Tweet関連記事2019-05-04Chiselで3次元メモリっぽいのを作る今回もChiselのMemについての話。元ネタは自分の以下のツイー...2019-04-30Chiselで2次元メモリっぽいのを作る(1)今回はふとChiselで2次元のメモリは作れるのか??と思ったので...2019-04-27ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(2)今日は昨日の続き。今日は久しぶりにChisel-Bootcamp。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。