我是凿子的新手。我将在未来几天在我的项目中使用它,我正在努力熟悉该库。
使用Chisel-tutorials后,我对凿子的工作方式有了更好的了解。在教程中,所有内容都以一种方式组织,以便让初学者更容易(我想这是教程的目的!)。
现在,我想转到下一部分,我想开发自己的小项目,并从一个简单的Mux4.scala
文件中深入了解凿子的工作方式(生成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.fir
,Mux4.v
,Mux4.anno
。
但我如何获得使用
获得的各种文件(下面的屏幕截图) TESTER_BACKENDS=verilator ./run-examples.sh GCD
当我实现我自己的模块时。(我知道我可以通过verilator传递verilog文件来获取cpp文件,但有没有任何方式可以像在教程中一样获取所有文件[应该有一种方法,但我无法弄明白])
(我正在使用chisel-template作为我的项目。)
./run-examples.sh mymodule
)。我已就上述问题对我的研究结果进行了研究,但无法明确。如果你能为像我这样的新用户编写一些如何处理你自己的项目的话,我将不胜感激。
修改:
在尝试下面答案中提到的命令时,我收到了以下错误:
在尝试--help
时,我的选项与您的建议不同。在我的--help
输出与输出here匹配时,我发现我的输出中没有测试选项。
这是Chisel版本(使用Chisel3)或我使用的sbt的问题吗?
答案 0 :(得分:2)
对于问题的更改进行了修改。
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。