You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

chisel3.util.Queue的full、maybe_full信号是否无法在队列模块外部访问

Chisel Queue内部信号访问及暴露方案
  1. 你的推测是正确的,maybe_full和full属于Chisel标准Queue类的内部私有信号,默认不对外暴露,因此跨模块直接访问会触发'Bool (Reg in Queue)' is not visible from the current module的可见性报错。
  2. 不需要完全自定义Queue工具类,有两种更轻量化的实现方案:
  • 方案一:基于标准Queue的公开端口自行实现等价逻辑
    标准Queue对外提供了公开的count端口(表示队列当前存储的元素数量),以及握手端口enq、deq的相关信号,可以直接组合出和内部信号逻辑完全一致的输出:
    • 等价full信号逻辑:val full = count === entries(entries为队列深度参数)
    • 等价maybe_full信号逻辑:val maybe_full = count +& enq.fire - deq.fire >= entries
  • 方案二:继承标准Queue类,扩展公开输出端口
    如果不想自行组合逻辑,可以直接继承官方标准Queue类,仅将需要的内部信号引出为公开IO即可,不需要重写Queue的核心逻辑,示例代码如下:
import chisel3._
import chisel3.util.Queue

class ExposedQueue[T <: Data](gen: T, entries: Int) extends Queue[T](gen, entries) {
  // 引出内部信号作为公开输出
  val io_full = IO(Output(Bool()))
  val io_maybe_full = IO(Output(Bool()))
  
  io_full := reg_full
  io_maybe_full := maybe_full
}

该方案完全复用官方Queue的成熟实现,不会引入额外的逻辑偏差,维护成本远低于完全自定义Queue。

内容的提问来源于stack exchange,提问作者metzkorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:15:02