You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is it possible to do arithmetic between types?
i.e. something akin to the following:
import chisel3._
import chisel3.stage.ChiselStage
import dsptools.numbers.Real
import dsptools.numbers.implicits._
class Test[I <: Bits: Real, W <: Bits: Real, O <: Bits](genI: I, genW: W, genO: O) extends Module {
val inI = IO(Input(genI))
val inW = IO(Input(genW))
val out = IO(Output(genO))
out := inI * inW
}
object Main extends App {
println((new ChiselStage).emitVerilog(new Test(UInt(2.W), UInt(3.W), UInt(5.W))))
}
I realize that the Real/Ring type class defines the arithmetic only on the same type:
trait Ring[A] extends Any with spire.algebra.Ring[A] {
def plusContext(f: A, g: A): A
def minusContext(f: A, g: A): A
def timesContext(f: A, g: A): A
def negateContext(f: A): A
}
however, Chisel does support multiplication with both UInt and SInt, and obviously at the hardware level this should work as well.
So is it possible to use dpstools (or extend it) to support dsp operations between different types?
The text was updated successfully, but these errors were encountered:
Is it possible to do arithmetic between types?
i.e. something akin to the following:
I realize that the Real/Ring type class defines the arithmetic only on the same type:
however, Chisel does support multiplication with both UInt and SInt, and obviously at the hardware level this should work as well.
So is it possible to use dpstools (or extend it) to support dsp operations between different types?
The text was updated successfully, but these errors were encountered: