долото "Enum (UInt (), 5)" не выполнено - PullRequest
0 голосов
/ 21 октября 2018

Когда я пытался использовать Chisel для создания FSM, я использовал Enum (), как сказано в Chisel Tutorial.Однако я столкнулся с такими ошибками.

мой код:

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.+"

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Превращение моего комментария в полный ответ, чтобы оно было более очевидным для будущих людей.

В chisel3 многие вещи, которые были в package Chisel в Chisel2, были перемещены в package chisel3.util.Вы можете использовать ScalaDoc API для поиска таких вещей, как Enum или switch, чтобы увидеть, где они находятся (и другую связанную документацию).

Также в chisel3, Enum(type, size)устарел в пользу, если 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
0 голосов
/ 21 октября 2018

По умолчанию Enum ссылки java.lang.Enum.Долото имеет свой собственный объект Enum, который необходимо импортировать перед использованием:

import Chisel.Enum
import Chisel.UInt

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

// Or an alternative way to unpack a List:
// val List(sIdle, s1, s2, s3, s4) = Enum(UInt(), 5)
...