Пытаемся сдружить симуляторы Verilog и ctest

Если Вы программист, которому по долгу службы пришлось испачкать руки Verilog/SystemVerilog — первое что приходит на ум — заюзать какую-нибудь штатную запускалку тестов. Если бы разработка велась на myhdl то можно было бы использовать все то добро, что сделано для unit-тестирования кода на python.

Но если мы используем самые что ни есть классические инструменты, проект достаточно большой, с кучей разных библиотек и IP ядер из разных концов света, велик шанс, что простых скриптов на bash/csh для запустка тестов маловато. Да и не хочется тратить драгоценные минуты жизни на переизобретение велосипеда, когда можно использовать что-то готовое.

В этой заметке я расскажу, как интегрировать verilog симуляторы со стандартными запускалками тестов, на примере ctest (Из комплекта cmake) и какие грабли нас ждут при этом.

(далее…)

Грабли препроцессора Verilog HDL

Небольшая заметка о том, как работают include и define в Verilog HDL.   Вопреки ожиданиям, они работают совершенно иначе, чем в большинства языков программирования. В маленьком проекте с этим можно не столкнуться, но в более или менее большом проекте, где есть лицензированные/скаченные с OpenCores блоки от этого поведения можно очень больно огрести. (Я долго искал подходящую картинку, но лучше этой не нашел)

TL;DR: Определенные однажды макросы глобальны, и передаются из одного файла в другой в том порядке, в котором файлы передаются компилятору/синтезатору.

(далее…)

тяжелая наркомания: Сборка VPI расширения и запуск Verilog тестов при помощи cmake/ctest

Недавно потребовалось для нужд кровавой отладки сделать свое VPI расширение для verilog HDL и встал вопрос как интегрировать это добро с какой-нибудь нормальной системой сборки. К сожалению, в плане инструментов для сборки, отладки и тестирование люди проектирующие СБИС живут если не в каменном веке, то в своем особом мирке, со своей особой атмосферой. Опенсурсный iverilog в этом плане ничуть не лучше коммерческих тулов, которые кладут огромный болт на многие общепринятые в мире linux практики.
Ну да хрен с ними. Надо решать как с этим жить. В этой заметке я постараюсь пройтись по основным нюансам написания CMakeLists.txt для сборки vpi расширения и его unit-тестирования.

(далее…)