是否有一个如何从Chisel3模块生成verilog的简单示例?

Fab*_*enM 8 scala verilog sbt chisel

我正在寻找一个简单的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
  }
Run Code Online (Sandbox Code Playgroud)

我找不到如何编写build.sbt和类实例化以在Verilog中转换它.

Jac*_*nig 13

感谢您对Chisel的兴趣!我们通常鼓励人们使用我们的凿子模板回购作为Chisel3项目的起点:https: //github.com/ucb-bar/chisel-template

如果你想做最准确的事情.创建此build.sbt并将其放在项目的根目录中.

scalaVersion := "2.12.10"

resolvers ++= Seq(
  Resolver.sonatypeRepo("snapshots"),
  Resolver.sonatypeRepo("releases")
)

libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.2.+"
Run Code Online (Sandbox Code Playgroud)

将上面的GCD源代码放在GCD.scala中,并将以下内容添加到文件中:

object GCDDriver extends App {
  chisel3.Driver.execute(args, () => new GCD)
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过运行:生成Verilog sbt "runMain GCDDriver".默认输出目录是当前目录>

您可以通过运行sbt "runMain GCDDriver --help"查看可用的命令行选项.例如,--target-dir您可以更改目标目录

  • 将上面的代码修改为 `(new ChiselStage).emitVerilog(new GCD, args)` 和 `sbt "run --help"` 对我有用。 (2认同)