Этот пример показывает вам, как сгенерировать нативные утверждения SystemVerilog от утверждений в модели Simulink. Эта возможность полезна каждый раз, когда вам нужно то же поведение утверждения в Simulink и в вашей тестовой среде HDL.
Продукты потребовали для этого примера:
MATLAB®
Simulink®
Simulink Coder™
Наставник Graphics® ModelSim®/QuestaSim® или поддерживаемое средство моделирования SystemVerilog
Один из поддерживаемых компиляторов C: Microsoft® Visual C ++ или GNU GCC
Чтобы сгенерировать компонент DPI-C, который содержит утверждения SystemVerilog, модель Simulink должна использовать блок Assertion for DPI-C. Найдите этот блок в HDL Verifier-> Для Использования с библиотекой DPI-C SystemVerilog как показано ниже:
Этот блок может использоваться точно так же, как типовой блок Assertion в библиотеке Model Verification. Поведение симуляции идентично блоку Simulink Assertion, однако во время генерации компонента DPI-C, блок генерирует нативное утверждение SystemVerilog для каждого Утверждения для блока DPI-C, существующего в модели.
Модель в этом примере содержит два Утверждения для блока DPI-C. Один из них используется, чтобы предоставить информацию для задержки с помощью опции настройки, второй блок собирается обеспечить предупреждения, когда вторая задержка закончена.
Запустите следующий код, чтобы настроить проект.
cd(tempdir); [~, ~, ~] = rmdir('svdpi_assertion', 's'); mkdir('svdpi_assertion'); cd('svdpi_assertion'); open_system('svdpi_assertion');
Модель предварительно сконфигурирована с одним из системных конечных файлов DPI-C (systemverilog_dpi_grt.tlc). Прежде, чем сгенерировать компонент DPI-C убеждаются, что сконфигурировали желаемое поведение утверждения в SystemVerilog через маску блока.
По умолчанию блок утверждения сгенерирует ошибку SystemVerilog ($error("")
) с пустым сообщением, когда инициировано. Это может быть изменено любой путем обеспечения сообщения об ошибке, изменения ошибки в предупреждение ($warning("")
) с предупреждающим сообщением или обеспечением вашей собственной команды SystemVerilog, которая будет выполняться.
Изображение ниже показов настройка поведения SystemVerilog для блока утверждения после первой задержки. Параметры за пределами группы опций утверждения DPI-C только влияют на поведение симуляции Simulink.
Заметьте, что Утверждение пользовательская команда является допустимым оператором SystemVerilog.
Второй блок утверждения сконфигурирован, чтобы вывести предупреждение с заданным сообщением как показано ниже.
Если мы запускаем модель, мы видим, что два предупреждения утверждения инициированы в Simulink:
В svdpi_assertion модели щелкните правой кнопкой мыши по блоку DPI_C_Assertion и выберите C/C ++ Code-> Build This Subsystem.
Нажмите Build в диалоговом окне, которое появляется.
Сборка генерирует код С для подсистемы DPI_C_Assertion и Систему Verilog обертка DPI-C и файл с именем пакета "DPI_C_Assertion_build/DPI_C_Assertion_dpi.sv"
и "DPI_C_Assertion_build/DPI_C_Assertion_dpi_pkg.sv"
.
Кроме того, можно сгенерировать компонент путем выполнения:
rtwbuild('svdpi_assertion/DPI_C_Assertion');
Для этого примера будет использоваться средство моделирования ModelsSim/QuestaSim. Чтобы преуспеть более подробные инструкции, как запустить испытательный стенд, обратитесь к "Началу работы с Генерацией Компонента SystemVerilog DPI".
После выполнения испытательного стенда замечают сообщения и предупреждения, которые выдаются компонентом DPI-C.
Если вы хотите проследить утверждение, которое сгенерировало предупреждение назад Simulink, необходимо найти Идентификатор Simulink (SID) из предупреждающего сообщения как показано ниже:
Если вы находите SID для блока утверждения, можно использовать Simulink программируемый API, чтобы подсветить соответствующий блок. Выполнение:
Simulink.ID.hilite('svdpi_assertion:7');
Это подсветит соответствующий блок.
Если вы хотите отфильтровать утверждение в симуляторе HDL, необходимо предоставить SID блока, который вы хотите отфильтровать в качестве plusargs аргумента к симулятору HDL.
Например, SID блока утверждения "InfoAssertion" является "svdpi_assertion:6". Таким образом для того, чтобы отфильтровать информативные сообщения, данные этим блоком, мы должны предоставить аргумент "+svdpi_assertion:6" к симулятору HDL. Для этого примера в ModelSim/QuestaSim команда симуляции была бы:
vsim -c -voptargs=+acc -sv_lib ../DPI_C_Assertion work.DPI_C_Assertion_dpi_tb +svdpi_assertion:6