ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。Chip環境の仕組み解析メモの垂れ流し記事。RTL生成時のざっくりした流れを追ったメモを元に少しだけ手直し。ChipのREADMEに従ってエミュレータを生成する際に実行するmakeコマンドの中では以下のようなsbtコマンドが発行されていた。DefaultConfig上記はrunMainを使ってfreechips.rocketchip.system.Generatorのメインオブジェクトを実行する処理に相当するので"src"ディレクトリ中のデータからrocketchip/system/Generator.scalaの中にあるオブジェクトを見てやればいいことになる。いうことで早速中身を確認していく。src/main/system/Generator.scalaそこそこ長いので不要な部分は端折りながら。冒頭は当たり前だけどGeneratorオブジェクトの宣言。ここではGeneratorAppというクラスを継承することでScalaのメインオブジェクトとして宣言する形になっている。GeneratorAppについてはまた後ほど。冒頭に実行するテストスイートについての情報が定義されている。"rv32ui-p-sll")テストスイートの構築メソッド(addTestSuites)以下はテストスイートの構築メソッド。コンフィグで指定されたパラメータからxLenエクステンションモードの情報を抽出しそれに対応するテストをTestGeneration.addSuitesを使って追加している。以下がGeneratorのメイン処理。longNameを構築した後、FIRRTLの生成アノテーションファイルの生成Makefragsの生成ROMの生成アーティファクトの生成(memmap.jsonとかが該当する)を行う。Chipが構築されていくのかがわかりそう。Chipの情報を元に各種ファイルを出力するだけの模様。以下にそのコードを載せておく。}generateTestSuiteMakefragsここで先ほど紹介したsaddTestSuitesが呼び出される。}generateROMs*.rom.confが出力されるエミュレータの生成時にはファイルの中身は空。Chip環境が凄いのはREADMEに書いてあるmake一発で作成できるDefaultConfig以外のコンフィグもこのジェネレータ・オブジェクトのみで生成できる点だと思う。メインの処理となるgenerateFirrtlについての調査を継続中です。LazyModuleが。やってることはわかってきたけど自分で使おうとすると。前回の終わりに書いた...2019-04-27ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(2)今日は昨日の続き。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。