|
import chisel3._
import chisel3.util._
class MyArbiterIO[T <: Data] private( val gen:T,val n:Int) extends Bundle {
val enq = Flipped(Vec(n,new DecoupledIO(gen)))
val deq = new DecoupledIO(gen)
}
class MyArbiterModule[T <: Data](gen:T,n:Int) extends Module {
val io = IO(new MyArbiterIO(gen,n))
}
上面红色地方IDEA提示错误:Type MyArbiterIO takes type parameters,但如果换成:
class MyArbiterIO[T <: Data]( val gen:T,val n:Int) extends Bundle { //没有private
val enq = Flipped(Vec(n,new DecoupledIO(gen)))
val deq = new DecoupledIO(gen)
}
class MyArbiterModule[T <: Data](gen:T,n:Int) extends Module {
val io = IO(new MyArbiterIO(gen,n))
}
或换成:
class MyArbiterModule[T <: Data] private(gen:T,n:Int) extends Module {
val io = IO(new MyArbiterIO[T](gen,n)) //但加上[T]
}
class MyArbiterIO[T <: Data] private( val gen:T,val n:Int) extends Bundle {
val enq = Flipped(Vec(n,new DecoupledIO(gen)))
val deq = new DecoupledIO(gen)
}
则不会出现错误提示了。为什么?????
|
|