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

- Feb 23, 2024
- 1 min read
Issue
The following code causes the compilation error in the title
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),
))*Please think of exe_fun as an integer type variable that is calculated before this.
The error message seems to say, "The operation chisel3.BOOL >> chisel3.UInt is not possible." Even though both x and y are defined as UInt type...
Cause and solution
When the above code is compiled, It seems that
(exe_fun === ALU_MULH) -> (x*y)is processed first and interpreted as
((exe_fun === ALU_MULH) -> (x*y)) >> 32.U(WORD_LEN.W)Therefore, I was able to compile it successfully by adding parentheses as shown below.
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)),
))





Comments