検索
[Chisel/Scala]小数点のデータを導入する
- M.R

- 2024年3月9日
- 読了時間: 1分
やりたいこと
小数点のデータ(ほかの言語でいうところのfloat)を導入したい。
背景としては、自作のCPU回路にパフォーマンスカウンタを設けようとしており、これを整数ではなく小数で表現したい。(例えば「1指令あたりのサイクル数」を測定する場合、1か1.9かで意味は全く異なる)
問題点
Chiselに浮動小数点型のようなものがあればいいのだが、現状存在しない。
かつてはF浮動小数点を表すFixedPoint型というのがあったらしく、ネットを調べるとこのやり方がでてくるが、現在は廃止されてしまったらしい(参考)。
対策
仕方がないので整数型のみで対応する。今回は小数の計算をしたいというよりは、最終的に画面に計算結果を表示することが目的なので
計算時は10倍した値を整数型に格納
表示時に、整数部と小数部をそれぞれ求めて表示
というようにした
val cpi10 = Mux(instCount === 0.U, 0.U, cycleCount * 10.U / instCount)
printf(p"CPI: ${cpi10/10.U}.${cpi10%10.U}\n")






コメント