首页 > 解决方案 > 值不是 chisel3.Bundle 的成员

问题描述

sbt 不识别包。错误是这些:

[error] /home/xxx/src/main/scala/NoC.scala:12:8: value Grant is not a member of chisel3.Bundle
[error]     io.Grant := io.Req & !io.Rls
[error]        ^
[error] /home/xxx/src/main/scala/NoC.scala:12:20: value Req is not a member of chisel3.Bundle
[error]     io.Grant := io.Req & !io.Rls
[error]                    ^
[error] /home/xxx/src/main/scala/NoC.scala:12:30: value Rls is not a member of chisel3.Bundle
[error]     io.Grant := io.Req & !io.Rls
[error]                              ^

可重现的代码是;

//Priority Encoder
class P_Encoder() extends Module {
    val io = IO(new Bundle {
        val Req         = Input(Bool())    //Requests
        val Rls         = Input(Bool())    //Releases
        val Grant       = Output(Bool())   //Grants
    })

    io.Grant := io.Req & !io.Rls
}

可能我错过了语法上的一些东西,但还没有找到。有人可以指出吗?

标签: chisel

解决方案


这是由于 Scala 2.11 和 2.12 之间的类型推断发生了变化。您可以通过添加-Xsource:2.11到您scalacOptionsbuild.sbt. 您会在大多数 chisel3 项目中看到这一点,例如chisel-templaterocket-chipsifive/freedom。在您熟悉 Scala 生态系统和相关工具(如 SBT)之前,从chisel-template创建新项目通常是一个好主意。


推荐阅读