Как SystemVerilog реализует динамические функции языка?

Я начал изучать SystemVerilog, и я читаю о новых типах, таких как:

  • строки

  • динамические / ассоциативные массивы

  • очереди

Мне интересно, как они могут быть реализованы в оборудовании из-за их динамической природы; это то, что они предназначены только для тестирования / моделирования, поэтому на самом деле они никогда не создаются на аппаратном уровне?

Если да, то зачем вам использовать эти типы массивов, если вам нужно было перейти на обычный массив для запуска проекта на аппаратном уровне?

1 ответ

Verilog и теперь SystemVerilog содержат функции, которые делятся на две категории: Синтезируемые и Несинтезируемые. Не существует фиксированного стандарта, который бы определял, какие функции принадлежат каждой категории. В идеале, если вы можете симулировать функцию, вы можете найти способ ее синтезировать.

Некоторые функции включаются в обе категории в зависимости от того, как они используются. Например, for Цикл является синтезируемым, если вы можете статически определить (т.е. во время компиляции, а не во время выполнения), сколько у него итераций. То же самое верно для очереди или динамического массива - если вы можете определить максимальный размер, они могут быть реализованы аппаратно.

Другие вопросы по тегам