gpt4 book ai didi

scala - Chisel3 : How to get verilog, 同时使用 cpp 和 vcd 文件

转载 作者:行者123 更新时间:2023-12-01 22:06:01 24 4
gpt4 key购买 nike

我是凿子新手。 future 几天我将在我的项目中使用它,并且我正在尝试熟悉该库。

Chisel-tutorials 合作后我对凿子的工作原理有了更好的了解。在教程中,所有内容都以一种让初学者更容易的方式组织起来(我想这就是教程的目的!)。

现在,我想进入下一部分,我想开发自己的小项目,并从简单的 Mux4.scala 更深入地了解 chisel 的工作原理(生成 verilog、cpp、vcd)凿子中的 文件。 (我从 here 获取正确版本的 Mux4 模块代码和测试器)。我刚刚在 Mux4.scala

末尾添加了以下几行
object Mux4Driver extends App {
chisel3.Driver.execute(args, () => new Mux4(32))
}

直接获取verilog代码。

我已将 scala 文件放在 src/main/scala/ 中,将测试程序放在 src/test/scala/ 中。

这就是我遇到麻烦的地方。正如 jkoenig 所指出的,我可以通过在根目录中使用命令 sbt "run-main Mux4Driver"来运行我的代码。这样做我得到三个文件,Mux4.firMux4.vMux4.anno

  1. 但是我怎样才能获得我使用得到的各种文件(下面的截图)

    TESTER_BACKENDS=verilator ./run-examples.sh GCD

当我实现自己的模块时。(我知道我可以通过 verilator 传递 verilog 文件来获取 cpp 文件,但是有没有任何时尚的方法可以像教程中一样一次获取所有文件[应该有一种方法,但我就是想不出来]) enter image description here

(我在我的项目中使用 chisel-template)。

  • 据我了解,编写模块后,似乎需要了解 sbt 才能成功运行代码并生成所需的文件。我想了解如何使用 sbt 来组织我的项目,就像在 chisel 教程中一样,并使用单个命令运行它们(例如 ./run-examples.sh mymodule)。
  • 我已经针对上述问题进行了研究,但无法弄清楚。如果您能为像我这样的新用户编写一些关于如何处理自己的项目的步骤,我将不胜感激。

    编辑:

    在尝试下面答案中提到的命令时,我收到以下错误:

    enter image description here

    在尝试 --help 时,我的选择与您的建议不同。将我的 --help 输出与输出 here 相匹配我发现我的输出中没有测试器选项。

    enter image description here

    这是我正在使用的 Chisel(使用 Chisel3)或 sbt 版本的问题吗?

    最佳答案

    针对问题的更改对此进行了修改

    chisel-template repo是如何组织进一步开发工作的合理示例。但根据您的问题,我建议您使用两种不同方法之一来调用单元测试。

    class GCDTester extends ChiselFlatSpec {
    "GCD" should "calculate proper greatest common denominator" in {
    iotesters.Driver.execute(Array(), () => new GCD) {
    c => new GCDUnitTester(c)
    } should be (true)
    }
    }

    object GCDMain extends App {
    iotesters.Driver.execute(args, () => new GCD) {
    c => new GCDUnitTester(c)
    }
    }

    与问题中的代码的一个重要区别是上面引用的驱动程序是chisel3.iotesters.Driver而不是chisel3.Driver 。您可以使用命令行参数,例如:将 --help 添加到参数中,例如

    iotesters.Driver.execute(Array("--help"), () => new GCD) {

    并运行您的测试,或运行第二个示例中的main:

    sbt 'runMain examples.GCDMain --help'

    无论哪种方式,您都会看到大量可用选项。您感兴趣

      -tbn, --backend-name <firrtl|verilator|vcs>
    backend to use with tester, default is firrtl

    也许

      -fiwv, --fint-write-vcd  writes vcd execution log, filename will be base on top

    您可以添加任何这些参数,就像添加 --help 一样。所以要运行verilator

    iotesters.Driver.execute(Array("--backend-name", "verilator"), () => new GCD) {

    并运行您的测试,或运行第二个示例中的main:

    sbt 'runMain examples.GCDMain --backend-name verilator'

    chisel.Driver 仅支持 iotesters.Driver 选项的子集,不包括 verilator。

    获取所需的所有文件需要在电路上运行模拟,这需要某种测试工具。 iotesters.Driver.execute 将调用您的测试工具,这将创建您感兴趣的文件(当使用 --backend-name verilator 运行时)。 chisel.Driver.execute仅详细说明电路,它不运行仿真。

    注意:虽然 --fint-write-vcd 仅用于在使用解释器时获取 VCD 输出文件,但我相信默认情况下使用 verilator 后端输出 vcd。

    关于scala - Chisel3 : How to get verilog, 同时使用 cpp 和 vcd 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295174/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com