scala - 凿子 "Enum(UInt(), 5)"失败

标签 scala chisel

当我尝试使用 Chisel 构建 FSM 时,我使用了 Enum(),正如 Chisel 教程中所说。然而,我遇到了这样的错误。

我的代码:

val sIdle::s1::s2::s3::s4::Nil = Enum(UInt(), 5)

但是,当我执行sbt run时,它打印出

[error] /Users/xxx.scala:28:3: object java.lang.Enum is not a value
[error]   Enum(UInt(),5)
[error]   ^

我的构建 sbt 文件是

scalaVersion := "2.11.12"
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases")
)
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.1.+"

请帮忙!

最佳答案

将我的评论变成完整的答案,以便对 future 的人来说更加明显。

chisel3中,Chisel2中的Chisel包中的很多内容都被移至package chisel3.util中。您可以使用 ScalaDoc API搜索 Enumswitch 等内容以查看它们所在的位置(以及其他相关文档)。

同样在 chisel3 中,Enum(type, size) 已被弃用,取而代之的是 if Enum(size),即。你应该使用:

import chisel3._
import chisel3.util.Enum

val sIdle :: s1 :: s2 :: s3 :: s4 :: Nil = Enum(5)

我还想提一下,我们即将推出新的“ChiselEnum”,它提供比现有 API 更多的功能,并且我们打算进一步扩展它的功能。如果您从源代码构建 chisel3,您已经可以使用它,或者您可以等待 3.2 的发布。新枚举的示例:

import chisel3._
import chisel3.experimental.ChiselEnum

object EnumExample extends ChiselEnum {
  val e0, e1, e2 = Value // Assigns default values starting at 0

  val e100 = Value(100.U) // Can provide specific values if desired
}
import EnumExample._

val myState = Reg(EnumExample()) // Can give a register the actual type instead of just UInt
myState := e100

关于scala - 凿子 "Enum(UInt(), 5)"失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916067/

相关文章:

scala - 比较 Option[T] 的实例,避免 None == None

java - 从 Scala(和 Java)访问 DRb 对象(例如 Ruby 队列)的最佳方式是什么?

scala - Chisel 中的 <> 运算符是什么?

hdl - 如何在Chisel中正确定义输出Reg

scala - 如何使用 chisel3 黑盒实例化 Xilinx 差分时钟缓冲器?

凿子测试 - 内部信号

scala - 如何将DataFrame直接保存到Hive中?

scala - 如何克隆迭代器?

scala - 在 Scala 中读取整个文件?