Руби и SystemVerilog DPI

Функциональность DPI в System Verilog всегда упоминает, что вы можете взаимодействовать с любым языком, наиболее распространенным из которых является C/C++. Я хочу связать мой системный код Verilog с Ruby. Есть ли какая-либо документация или поддержка для этой функции? Любой известный способ сделать это?

Я должен добавить, что моя основная цель - вызвать ruby-скрипт из моей системы Verilog uvm test.

Спасибо


person noobuntu    schedule 18.07.2014    source источник


Ответы (2)


Хотя в стандарте упоминается, что DPI может взаимодействовать с SystemVerilog на любом другом иностранном языке, затем он трусит и говорит:

Однако на данный момент SystemVerilog определяет уровень иностранного языка только для языка программирования C.

Это означает, что вы должны получить поддержку DPI-C во всех симуляторах, совместимых с IEEE 1800, но любые другие иностранные языки, которые вы получаете, зависят от поставщика вашего симулятора. Мой, например, также предлагает SystemC, но требует, чтобы код SystemC был исправлен (т.е. он не будет работать из коробки).

Некоторым ребятам в моей компании удалось связать Python с SystemVerilog через DPI, но они сделали это с помощью двухэтапного подхода: Python -> C и C -> SystemVerilog. Вероятно, вам нужно будет сделать что-то подобное.

person Tudor Timi    schedule 18.07.2014
comment
Спасибо Тудор. Я понял, что это, вероятно, изначально не выполнимо после некоторых исследований. У меня есть вопрос: я хочу создать случайный тест с помощью SystemVerilog, используя для него функцию randomize(), и запрограммировать свои регистры в тестируемом устройстве с помощью этих случайных переменных. Я также хочу вызвать свою программную модель (для проверки табло) с теми же случайными регистровыми переменными. Это табло написано рубином. Сейчас я склоняюсь к использованию системных вызовов. Я так понимаю это единственный способ? - person noobuntu; 18.07.2014
comment
Это также единственное, что я вижу, если только вы не хотите реализовать двухэтапный подход, описанный выше. - person Tudor Timi; 18.07.2014
comment
@noobuntu Кто-то другой уже сделал эту работу за вас и любезно предоставил исходный код: посмотрите ruby-vpi gem, который обеспечивает доступ к VPI из ruby ​​(через C). - person Chiggs; 19.07.2014

Это максимально близко к Ruby, но с использованием VPI:

Если вам нравится Python, вы можете попробовать coco_tb:

person Amal    schedule 28.07.2014