Chisel 支持(很好)哪些 FPGA 供应商板?

What FPGA vendor boards are supported (well) by Chisel?

Chisel 支持(很好)哪些 FPGA 供应商板?是否普遍支持市场上的大多数 FPGA?还是我们在购买的时候需要注意一些细节?如果有,应该注意什么?

我真的需要一个硬件套件来最大限度地减少模拟和实际合成层之间的差距和麻烦。谢谢!

据我所知,任何供应商工具都不支持 Chisel。 FPGA 可以通过开源编译器进行编程,这些编译器可以原生支持 chisel(我没有找到,但没有 none)。

现在它仍然适用于 FPGA 设计,compiler 将生成所有 FPGA 供应商工具都支持的 verilog。 在那种情况下,正如您所看到的,您远未最小化 simu 和综合之间的差距!但是在 low-level RTL 语言上使用 chisel 提供的优势可以在很多情况下克服这些差异。

既然你问这个问题,我猜你在FPGA方面的经验不多。我会建议,选择与使用凿子的开源项目相同的板。这种方法适用于您 end-up 选择的任何语言(凿子与否),选择该语言的开源并采用相同的平台。

来自文档:https://www.chisel-lang.org/ “Chisel 将硬件构造原语添加到 Scala 编程语言中,为设计人员提供现代编程语言的强大功能,以编写复杂的、可参数化的电路生成器,从而生成可综合的 Verilog。”

主要 FPGA 供应商工具:

Xilinx's vivado => 检查第 7 页,支持:VHDL、verilog、系统 verilog

Intel's quartus => 第54页,支持:VHDL、verilog、系统verilog

Mentors's questa => 支持 VHDL、Verilog、SystemVerilog、PSL、SystemC

开源编译器/模拟器:

Verilator支持:verilog、系统verilog

yosys 支持:Verilog-2005

Chisel 生成 Verilog 2001 的可综合子集,所有 FPGA 和 FPGA 工具供应商都支持它。

例如,您可以为逆变器编写 Chisel 代码并使用它来生成 Verilog:

import chisel3._
import chisel3.stage.ChiselStage

class Inverter extends RawModule {
  val in = IO(Input(Bool()))
  val out = IO(Output(Bool()))
  
  out := !in
}

(new ChiselStage).emitVerilog(new Inverter)

此处显示生成的 Verilog:

module Inverter(
  input   in,
  output  out
);
  assign out = ~in; // @[main.scala 10:10]
endmodule

此 Verilog 文件随后可用于支持 Verilog 的任何 FPGA 工具链(开源或闭源)。您需要编写工具链所需的相关附属资料(实施约束文件等)。功能验证可以通过多种方式完成,例如,使用 cocotb for Python-based testbenches, or using one of the Chisel testing libraries (which actually run tests on the Verilog) like ChiselTest 为生成的 Verilog 编写 Verilog/SystemVerilog 测试平台。 ChiselTest 实际上使用 Verilator 作为其可能的后端之一,这意味着您在 ChiselTest 中编写的测试将 运行 在 Verilator-compiled 二进制文件上。这是生成的 Verilog 与仅摄取 Verilog 的工具之间紧密耦合的具体示例。

注意:这将 FPGA 供应商工具视为“Verilog 到比特流编译器”而不是“集成开发环境”。从这个角度来看,FPGA 供应商工具支持任何类似类型的 HDL,包括但不限于:Clash, nmigen, and SpinalHDL。对于 IDE-support,Java IDE 将更适合进行实际的 Chisel 开发,例如,Emacs with Scala metals 或 IntelliJ Idea。