如何从凿子代码生成 FIRRTL?

How can I generate FIRRTL from chisel code?

如何从 chisel 代码生成 FIRRTL 文件?我已经根据 github wiki 安装了 sbt、firrtl 和 verilator。并为简单的加法器创建了凿子代码。我想生成 FIRRTL 并将其转换为 Verilog?我的问题是如何从凿子代码中获取 firrtl 文件。 谢谢

源文件:MyQueueTest/src/main/scala/example/MyQueueDriver.scala

package example

import chisel3._
import chisel3.util._

class MyQueue extends Module {
  val io = IO(new Bundle {
    val a = Flipped(Decoupled(UInt(32.W)))
    val b = Flipped(Decoupled(UInt(32.W)))
    val z = Decoupled(UInt(32.W))
  })  

  val qa = Queue(io.a)
  val qb = Queue(io.b)

  qa.nodeq()
  qb.nodeq()

  when (qa.valid && qb.valid && io.z.ready) {
    io.z.enq(qa.deq() + qb.deq())
  }
}

object MyQueueDriver extends App {
  chisel3.Driver.execute(args, () => new MyQueue)
}

我问了一个类似的问题。 解决方案可能是使用提供的完整模板 here,或者您可以简单地这样做:

在您的 Scala 源代码末尾添加这些行:

object YourModuleDriver extends App {
  chisel3.Driver.execute(args, () => new YourModule)
}

用您的模块名称替换 "YourModule"。

并使用以下行在源的同一目录中添加一个 build.sbt 文件:

scalaVersion := "2.11.8"

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

libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.0-SNAPSHOT"

要生成 FIRRTL 和 Verilog,您只需要做:

$ sbt "run-main YourModuleDriver"

并且 FIRRTL (yourmodule.fir) /Verilog (yourmodule.v) 源将在生成的目录中。