如何从凿子代码生成FIRRTL?

时间:2016-11-29 06:18:08

标签: 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)
}

1 个答案:

答案 0 :(得分:3)

我问了一个类似的问题here。 解决方案可能是使用提供的完整模板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)源将位于生成的目录中。