Scala 未连接的电线

Scala 未连接的电线,scala,chisel,Scala,Chisel,我尝试为我的项目实现该模块。模块的大致结构如下: class TOP extend Module{ val io = IO(new Bundle {some IO intend to connect to other module }) val queue = Module (new Queue(UInt(32.W), 5) )//I instantiate queue for special purpose for my design, and I do not connect th

我尝试为我的项目实现该模块。模块的大致结构如下:

class TOP extend Module{
  val io = IO(new Bundle {some IO intend to connect to other module })

  val queue = Module (new Queue(UInt(32.W), 5) )//I instantiate queue for special purpose for my design, and I do not connect the queue to other

  when(condition1){
    queue.io.enq.valid := true.B
    queue.io.enq.bits  := 5.U
  }
  ........
  when(conditionN){
    queue.io.deq.ready := true.B
    val retrieve data out:= queue.io.deq.bits 
  }  
}
运行时,会遇到与未连接的导线相关的问题

读完这一页后()。 有一些问题我无法用这一页理解

(1) 每个模块IO必须连接其他模块的其他IO吗

(2) DontCare:连接到输出信号,表示该信号不是有意驱动的。 这是否意味着在初始阶段不驾驶,但在某些情况下可以驾驶

或者它不是一直在行驶? ig:

(3) 应用DontCare的价值是什么

queue.io.enq.valid := DontCare

我是凿子的初学者。如果我问的问题很简单,很抱歉。

一般来说:凿子将不在顶层的未连接IO报告为错误,以使出错更加困难
DontCare
是一种抑制这些错误的方法,如果您认为您真的不希望信号连接到某个东西上

具体地 (1) 子模块的每个IO都应该连接到某个对象,但它不必连接到另一个IO,它可以连接到一个文本值或父模块的某个其他组件

(2)
DontCare
允许开发人员保持导线未连接并抑制错误。通常这是为了向后兼容,或者可能是某些子模块具有您需要的功能,但也有一些您不需要的功能。现代更好的做法是在具有这些属性的子模块中使用可选IO信号

您的调试示例应该可以正常工作,但最好是这样做
io.out.debug:=false.B
。DontCare将使信号处于不确定状态,这很容易为真,很容易产生不良后果

(3) 如前所述,让开发人员确认可能未设置信号

这就是说,当使用队列模块使用的解耦时,存在这样一种情况,其中信号可能有一些边缘情况,其中它是未连接的,但这种情况确实发生在电路的实际操作中。一般来说,最好给它一个初始赋值给一个文字值,随后使用该信号将在其他条件下覆盖该初始赋值。这称为“最后一次连接语义”,即最后一次分配获胜


如果这太模糊,也许您可以提供更多的代码示例和一个小的单元测试来说明问题。

对不起,这应该是“疑问”吗?如果是的话,你也许应该选择一个更具描述性的标题。
queue.io.enq.valid := DontCare