Платы каких поставщиков FPGA поддерживаются (хорошо) Chisel?

#fpga #chisel

#fpga #chisel

Вопрос:

Платы каких поставщиков FPGA поддерживаются (хорошо) Chisel? Поддерживается ли большинство ПЛИС на рынке в целом? Или нам нужно быть внимательными к некоторым деталям при покупке? Если да, то на что нам следует обратить внимание?

Мне действительно нужен аппаратный набор, который минимизирует разрыв и трудности между моделированием и фактическим уровнем синтеза. Спасибо!

Ответ №1:

Chisel создает синтезируемое подмножество Verilog 2001, которое поддерживается всеми ПЛИС и поставщиками инструментов для ПЛИС.

Например, вы можете написать код 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 можно использовать в любом наборе инструментов FPGA (с открытым или закрытым исходным кодом), который поддерживает Verilog. Вам нужно было бы написать соответствующее обеспечение, которое требуется для набора инструментов (файл ограничений реализации и т.д.). Функциональную проверку можно выполнить множеством способов, например, написав тестовые модули Verilog / SystemVerilog для созданного Verilog, используя cocotb для тестовых модулей на базе Python или используя одну из библиотек тестирования Chisel (которые фактически запускают тесты в Verilog), например, ChiselTest. ChiselTest фактически использует Verilator в качестве одного из своих возможных серверных интерфейсов, что означает, что тесты, которые вы пишете в ChiselTest, будут выполняться в двоичном файле, скомпилированном Verilator. Это конкретный пример тесной связи между созданным Verilog и инструментом, который использует только Verilog.

Примечание: в этом случае инструменты поставщиков FPGA рассматриваются как «Компиляторы Verilog для bitstream», а не как «интегрированные среды разработки». С этой точки зрения инструменты поставщиков ПЛИС поддерживают любые HDL аналогичного типа, включая, но не ограничиваясь ими: Clash, nmigen и SpinalHDL. Что касается поддержки IDE, Java IDE будет лучше для реальной разработки в Chisel, например, Emacs с Scala metals или IntelliJ Idea.

Комментарии:

1. Я предполагаю, что у нас другой взгляд на «хорошо поддерживаемые», вы рассматриваете любой язык, который генерирует любой king of verilog, как «хорошо» поддерживаемый.

2. Хорошее наблюдение. Я интерпретировал основную часть вопроса как разъясняющую это: «Поддерживается ли большинство ПЛИС на рынке в целом? Или нам нужно быть внимательными к некоторым деталям при покупке? Если да, то на что нам следует обратить внимание?» Выбор языка HDL (каким бы ни был HDL) не должен влиять на это, если у вас есть компилятор, который создает язык, который принимают инструменты FPGA.

Ответ №2:

Chisel изначально не поддерживается ни одним известным мне инструментом поставщика. FPGA может быть запрограммирована компиляторами с открытым исходным кодом, которые могли бы изначально поддерживать chisel (я не нашел ни одного, но это не значит, что его нет).

Теперь это все равно будет хорошо работать для проектирования FPGA, компилятор сгенерирует verilog, который поддерживают все инструменты поставщика FPGA. В таком случае, как вы можете видеть, вы далеки от минимизации разрыва между simu и synthesis! Но использование chisel поверх низкоуровневого языка RTL дает преимущества, которые во многих случаях могут преодолеть эти различия.

Поскольку вы задаете этот вопрос, я предполагаю, что у вас нет большого опыта работы с FPGA. Я бы посоветовал выбрать ту же плату, что и проект с открытым исходным кодом, использующий chisel. Этот подход верен для любого языка, который вы в конечном итоге выберете (chisel или нет), выберите открытый исходный код этого языка и используйте ту же платформу.

из документа:https://www.chisel-lang.org » Chisel добавляет примитивы аппаратного построения к языку программирования Scala, предоставляя разработчикам возможности современного языка программирования для написания сложных, параметризуемых генераторов схем, которые создают синтезируемый Verilog».

основные инструменты поставщиков FPGA:

Vivado от Xilinx => проверьте страницу 7, поддерживает: VHDL, verilog, системный журнал проверки

QuartusотIntel => страница 54, поддерживает: VHDL, verilog, системный журнал проверки

Mentors’s questa => поддерживает VHDL, Verilog, SystemVerilog, PSL, SystemC

компилятор / симулятор с открытым исходным кодом:

Verilator поддерживает: verilog, системный verilog

поддержка yosys: Verilog-2005

Комментарии:

1. Спасибо. Это я понимаю. Я спрашиваю, потому что меня беспокоят некоторые потенциальные скрытые сложности.

2. и вы должны! Chisel на самом деле используется нечасто, так что вы будете использовать свои собственные. наличие большого разрыва между simu и synthesis вызовет массу проблем не только с корректностью дизайна, но и с временными исправлениями. где код, используемый для FPGA, не тот, который вы создали, а автоматически генерируется на основе того, что вы написали.

3. Я думаю, что этот ответ неверно утверждает две противоположные вещи: (1) Ни один инструмент поставщика FPGA не поддерживает Chisel и (2) все поставщики FPGA поддерживают Chisel, потому что они поддерживают Verilog. Последнее имеет значение. В поддержку (2) рассмотрим микропроцессор POWER с открытым исходным кодом, построенный с использованием Chisel, который использует набор инструментов FPGA с полностью открытым исходным кодом: github.com/antonblanchard/chiselwatt .

4. ни один из инструментов поставщика не может использовать chisel. Теперь вы могли бы подумать, что поддержка verilog, который может быть сгенерирован любым языком на земле (включая chisel), означает, что chisel поддерживается. В этом случае поддерживаются все языки: R, python, pascal, java, C … Или мы можем просто сказать, что verilog поддерживается, что означает, что chisel — нет.

5. тогда давайте изменим на «Chisel изначально не поддерживается ни одним известным мне инструментом поставщика» Я согласен с 3-м абзацем, я подчеркну то, что вы говорите