我正在寻找一个简单的howto来在Verilog中转换一个简单的Chisel3模块。
我在凿子的官方网页上提供了Gcd源代码。
import chisel3._
class GCD extends Module {
val io = IO(new Bundle {
val a = Input(UInt(32.W))
val b = Input(UInt(32.W))
val e = Input(Bool())
val z = Output(UInt(32.W))
val v = Output(Bool())
})
val x = Reg(UInt(32.W))
val y = Reg(UInt(32.W))
when (x > y) {
x := x -% y
}.otherwise {
y := y -% x
}
when (io.e) {
x := io.a
y := io.b
}
io.z := x
io.v := y === 0.U
}
我找不到如何编写build.sbt和类实例化以在Verilog中转换它。
答案 0 :(得分:13)
感谢您对Chisel的兴趣!我们通常鼓励人们使用我们的凿子模板回购作为Chisel3项目的起点:https://github.com/ucb-bar/chisel-template
如果你想做最准确的事情。创建此build.sbt并将其放在项目的根目录中。
scalaVersion := "2.11.12"
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases")
)
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.1.+"
将上述GCD源代码放在GCD.scala中,并将以下内容添加到文件中:
object GCDDriver extends App {
chisel3.Driver.execute(args, () => new GCD)
}
然后,您可以通过运行sbt "runMain GCDDriver"
生成Verilog。默认输出目录是当前目录>
您可以通过运行sbt "runMain GCDDriver --help"
来查看可用的命令行选项。例如--target-dir
将允许您更改目标目录