BOOMと自作CPUの合成結果を比較して、ボトルネックになっている部分を調査したい。まずは面積から。
正直、機能的に正しく動くことを重視しすぎていて、面積とかはほとんどチェックしていなかったのだが、まずは単純にVivadoの論理合成結果から確認したい。 Vivadoの論理合成結果は、階層的に面積を表示することができる。階層を分けて複数表示している。
report_utilization -file ${TOP_NAME}.area.hier1.rpt -hierarchical -hierarchical_depth 1 report_utilization -file ${TOP_NAME}.area.hier2.rpt -hierarchical -hierarchical_depth 2 report_utilization -file ${TOP_NAME}.area.hier3.rpt -hierarchical -hierarchical_depth 3 report_utilization -file ${TOP_NAME}.area.hier.rpt -hierarchical
2階層まで表示したものは以下。
3階層まで表示したものは以下。
それぞれ面積を比較する。自作CPUは約2倍の大きさになってしまっている。
BOOMv3側はMegaBoomConfigで、自作CPU側と同程度の構成にしているつもりだけど、これはでかいなあ。 構成としてやはりLSUが大きいなというイメージだが、詳細を調べようと思ったが、BOOM側のLSUの内訳があまり詳しく出てこない。
ただLSUだけ見ると、自作CPUは4倍くらい大きいんだな...内訳を調査しなければ。
自作CPU側のLSU面積を内訳すると、STQが異常に大きいな...なんだこれは。
それぞれのSTQはこんな感じ。やはりそれぞれのエントリサイズが大きいのかな。