Превращение моего комментария в полный ответ, чтобы оно было более очевидным для будущих людей.
В 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