[scala/chisel] value >> is not a member of (chisel3.Bool, chisel3.UInt)
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)),
))
Recent Posts
See AllPhenomenon There is an array Check whether the index variable is within the size of the array, and access the element only if it is...
Overview When communicating data using a Queue, the following operations are possible: Queue.io.enq.valid: When set to false, data will...
What I want to do There are multiple similar units Most of processes are the same, only some differences. Select an appropriate unit...
Comments