我的队列代码如下:
class LocalQueue[T <: Data](gen: T, val entries: Int,
pipe: Boolean = false,
flow: Boolean = false) extends Module
{
/** The I/O for this queue */
val io = new QueueIO(gen, entries)
/....../
val init_done = RegInit(0.U(1.W))
val tick_cnt = RegInit(0.U(1.W))
val do_enq = io.enq.valid && io.enq.ready && (1.U === init_done) && (0.U === tick_cnt)
val do_deq = io.deq.ready && io.deq.valid && (1.U === init_done) && (1.U === tick_cnt)
当我编译时,得到以下错误日志:
[error](run-main-3a)chisel3.core.Binding $ ExpectedHardwareException: 位于&#39; chisel3.core.Bool@32'必须是硬件,而不是裸机 凿子类型chisel3.core.Binding $ ExpectedHardwareException:bits 在&#39; chisel3.core.Bool@32'上进行操作;必须是硬件,而不是裸凿 型
错误似乎是由以下陈述引起的:
val do_enq = io.enq.valid && io.enq.ready && (1.U === init_done) && (0.U === tick_cnt)
val do_deq = io.deq.ready && io.deq.valid && (1.U === init_done) && (1.U === tick_cnt)
答案 0 :(得分:0)
你仍然需要用Que包装QueueIO,即
val io = IO(new QueueIO(gen, entries))
虽然您可以在没有IO包装器的情况下找到示例,但是使用Chisel 2 向后兼容模式。