【问题标题】:Is there a simple example of how to generate verilog from Chisel3 module?是否有一个如何从 Chisel3 模块生成 verilog 的简单示例?
【发布时间】:2017-03-21 02:09:48
【问题描述】:

我正在寻找在 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 中进行转换。

【问题讨论】:

    标签: scala sbt verilog chisel


    【解决方案1】:

    感谢您对 Chisel 的关注!我们通常鼓励人们使用我们的 chisel-template repo 作为 Chisel3 项目的起点:https://github.com/ucb-bar/chisel-template

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

    scalaVersion := "2.12.13"
    
    libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.4.4"
    

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

    import chisel3.stage.ChiselStage
    
    object GCDDriver extends App {
      (new ChiselStage).emitVerilog(new GCD, args)
    }
    

    然后您可以通过运行:sbt "runMain GCDDriver" 来生成 Verilog。默认输出目录为当前目录。

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

    【讨论】:

    • 感谢 jkoenig。是的,我看到了模板 repo,但我想要一个快速的例子来看看 verilog 是如何生成的。
    • 我尝试使用相同的代码生成verilog代码,但我得到java.lang.ClassNotFoundException
    • 你能提供更多的错误信息吗?它说找不到什么类?
    • 很抱歉我的回复太晚了。我刚看到我忘了回答你的问题。我只需要运行 sbt run 即可生成 Verilog 代码。
    • 将上述代码修改为 (new ChiselStage).emitVerilog(new GCD, args)sbt "run --help" 对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多