検索
[scala/chisel] value >> is not a member of (chisel3.Bool, chisel3.UInt)
- M.R

- 2024年2月23日
- 読了時間: 1分
現象
以下のコードで掲題のコンパイルエラーが発生
val x = 3.U(16.W)
val y = 5.U(16.W)
val mul_out := MuxCase(0.U(16.W), Seq(
(exe_fun === ALU_MULH) -> (x*y)>>32.U(WORD_LEN.W),
))※exe_funはこの前で計算される整数型の変数と考えてください
エラーメッセージは、「chisel3.BOOL >> chisel3.UIntという演算はできないよ」ということを言っているようです。xもyもUInt型で定義しているのに、、、
原因と解決策
上記のコードだとコンパイル時に
(exe_fun === ALU_MULH) -> (x*y)の部分が先に処理されてしまい、
((exe_fun === ALU_MULH) -> (x*y)) >> 32.U(WORD_LEN.W)と解釈されてしまうようです。
そこで、以下のようにかっこをつければ無事コンパイルできました。
val x = 3.U(16.W)
val y = 5.U(16.W)
val mul_out := MuxCase(0.U(16.W), Seq(
(exe_fun === ALU_MULH) -> ((x*y)>>32.U(WORD_LEN.W)),
))





コメント