首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从展平的Bundle中推断宽度?

如何从展平的Bundle中推断宽度?
EN

Stack Overflow用户
提问于 2015-05-29 09:16:45
回答 1查看 149关注 0票数 1

我正在尝试将BlackBox连接到任意的Bundle,但是宽度推断似乎不适用于fromBits函数。下面的代码可以正常编译:

代码语言:javascript
复制
class testBundle extends Bundle {
  val io1 = Bool(INPUT)
  val io2 = UInt(INPUT,10)
}

class testBox extends BlackBox {
  val io = new Bundle {
    val in = Bits(INPUT) # Width inference works fine here
    val out = Bits(OUTPUT,(new testBundle).getWidth) # But it doesn't work here!
  }
}

class test extends Module {
  val io = new Bundle {
    val in = new testBundle
    val out = (new testBundle).flip()
  }
  val testbox = Module(new testBox)
  testbox.io.in := io.in.toBits
  io.out := io.out.fromBits(testbox.io.out)
}

但是如果我去掉(new testBundle).getWidth参数,Chisel就不能推断输出端口的宽度,就会出错。如何让testBox连接到任意捆绑包?

EN

回答 1

Stack Overflow用户

发布于 2015-05-30 00:26:05

现在,我通过将捆绑包作为参数传递给BlackBox来解决这个问题:

代码语言:javascript
复制
class testBox(b:Bundle) extends BlackBox {
  val w = b.getWidth
  val io = new Bundle {
    val in = Bits(INPUT,w)
    val out = Bits(OUTPUT,w)
  }
}

class test extends Module {
  val io = new Bundle {
    val in = new testBundle
    val out = (new testBundle).flip()
  }
  val testbox = Module(new testBox(io.in))
  testbox.io.in := io.in.toBits
  io.out := io.out.fromBits(testbox.io.out)
}

不过,我会欢迎一种更干净的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30519607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档