FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Chipyardで独自コアシミュレーション環境構築方法の調査 (6. Chipyard 1.6.2で試行する)

自作CPUをChipyardの環境で動かすための確認。前回は色々と試行錯誤したがVerilatorのシミュレーションがうまく行かなかったのだった。

そこで、Chipyardのバージョンを1.6.2にアップデートして再度試行してみる。 現在のChipyardの最新バージョンが1.6.2なので、そこまでバージョンを上げて再試行した。 そうすると一応上手く行ったようだが、まだ上手くシミュレーションが動かない。

まず、フロントエンドのポートサイズを調整するために、SystemBusKeyを調整しなければならない。

/**
 * Create multiple copies of a MSRH tile (and thus a core).
 * Override with the default mixins to control all params of the tiles.
 *
 * @param n amount of tiles to duplicate
 */
class WithNMSRHCores(n: Int = 1, overrideIdOffset: Option[Int] = None) extends Config((site, here, up) => {
  case TilesLocated(InSubsystem) => {
    val prev = up(TilesLocated(InSubsystem), site)
    val idOffset = overrideIdOffset.getOrElse(prev.size)
    (0 until n).map { i =>
      MSRHTileAttachParams(
        tileParams = MSRHTileParams(hartId = i + idOffset),
        crossingParams = RocketCrossingParams()
      )
    } ++ prev
  }
  case SystemBusKey => up(SystemBusKey, site).copy(beatBytes = 16)
  case XLen => 64
})

一応シミュレーションは動き出したようだ。しかし、最初のフェッチに対してレスポンスがまだ来ない...引き続き解析する必要ありだな。

f:id:msyksphinz:20220418000628p:plain