23.03.2016 Применение verilator и vmodel

Материал из SRNS
Перейти к: навигация, поиск
(Новая страница: «<summary [ hidden ] > Совместное моделирование Matlab и Verilog </summary> {{TOCright}} == Зачем? == Это классно! == О…»)
 
(Применяемые средства)
Строка 23: Строка 23:
 
== Применяемые средства ==
 
== Применяемые средства ==
  
Есть множество программ, позволяющих моделировать алгоритмы на языке Verilog. Одной из таких программ является Verilator. Более подробную информацию можно найти на сайте http://veripool.org.
+
=== Verilator ===
 +
 
 +
Есть множество программ, позволяющих моделировать алгоритмы на языке Verilog. Одной из таких программ является Verilator. Более подробную информацию можно найти на сайте http://veripool.org. Программу написал Wilson Snyder, она существует уже более десяти лет и активно поддерживается.
 +
 
 +
В отличии от большинства подобных программ, Verilator не является интерпретатором языка Verilog. Это конвертор из Verilog в C++. Полученный файл затем компилируется компирятором gcc и исполняется, как обычная компьютерная программа.
 +
 
 +
В результате Verilator поддерживает не все возможности Verilog. Поддерживаются синтезируемые конструкции, а также некоторые системые функции вроде $display(). Впрочем, поддержка Verilog (и SystemVerilog) достаточно хорошая.
 +
 
 +
Преимуществом является высокая скорость исполнения получаемого кода.
 +
 
 +
Verilator не является полноценным симулятором Verilog, тестбенчи требуется писать на C++.
 +
 
 +
=== vmodel ===
 +
 
 +
Очевидно, что программу C++ можно подключить к Matlab с использованием MEX-интерфейса. Это было сделано в программе vmodel коллегами из МИРЭА:
 +
<code>
 +
%%*********************vmodel MATLAB Verilog simulator******************
 +
%%Version 0.9.6
 +
%%Moscow, Control Problems Department MIREA, 2009-2015
 +
%%Authors: Karyakin D, Romanov A, Slaschov B
 +
%%-
 +
%%Distributed under the GNU LGPL
 +
%%**********************************************************************
 +
</code>
 +
 
 +
Программу можно скачать с github:
 +
<source lang="bash">
 +
git clone https://github.com/amromanov/vmodel.git
 +
</source>
 +
 
 +
Программа предполагает написание тестбенчей в Matlab, а отлаживаемый код на Verilog обрабатывается с помощью Verilator.
 +
 
 +
=== vppreproc ===
 +
Ещё одна утилита от Wilson Snyder - препроцессор Verilog vppreproc. Найти его можно на том же сайте http://veripool.org

Версия 15:05, 23 марта 2016

Содержание

Зачем?

Это классно!

О чём речь?

Моделировать можно по-разному.

Вот Matlab, например, позволяет удобно работать с матрицами. При этом язык программирования Matlab подобен другим императивным языкам программирования - инструкции выполняются друг за другом последовательно

Verilog также можно использовать для моделирования. Однако это язык описания аппаратуры, который функционирует совсем не так, как обычные языки программирования. Он описывает некоторые структуры, функционирующие параллельно и одновременно.

Зачем пытаться использовать эти языки совместно? Первоначально алгоритмы удобно отлаживать в Matlab, где есть безграничные возможности. Но когда дело идёт к реализации алгоритмов, их нужно описать на одном из языков описания аппаратуры. Тут мы используем Verilog.

Для отладки алгоритмов Verilog желательно иметь возможность сравнения результатов с исходной моделью Matlab. Конечно, можно сделать это путём записи в результатов в файл, но это не слишком удобно. Особенно сложно это становится, если нужно реализовать обратную связь из Verilog в Matlab.

Применяемые средства

Verilator

Есть множество программ, позволяющих моделировать алгоритмы на языке Verilog. Одной из таких программ является Verilator. Более подробную информацию можно найти на сайте http://veripool.org. Программу написал Wilson Snyder, она существует уже более десяти лет и активно поддерживается.

В отличии от большинства подобных программ, Verilator не является интерпретатором языка Verilog. Это конвертор из Verilog в C++. Полученный файл затем компилируется компирятором gcc и исполняется, как обычная компьютерная программа.

В результате Verilator поддерживает не все возможности Verilog. Поддерживаются синтезируемые конструкции, а также некоторые системые функции вроде $display(). Впрочем, поддержка Verilog (и SystemVerilog) достаточно хорошая.

Преимуществом является высокая скорость исполнения получаемого кода.

Verilator не является полноценным симулятором Verilog, тестбенчи требуется писать на C++.

vmodel

Очевидно, что программу C++ можно подключить к Matlab с использованием MEX-интерфейса. Это было сделано в программе vmodel коллегами из МИРЭА: %%*********************vmodel MATLAB Verilog simulator****************** %%Version 0.9.6 %%Moscow, Control Problems Department MIREA, 2009-2015 %%Authors: Karyakin D, Romanov A, Slaschov B %%- %%Distributed under the GNU LGPL %%**********************************************************************

Программу можно скачать с github:

git clone https://github.com/amromanov/vmodel.git

Программа предполагает написание тестбенчей в Matlab, а отлаживаемый код на Verilog обрабатывается с помощью Verilator.

vppreproc

Ещё одна утилита от Wilson Snyder - препроцессор Verilog vppreproc. Найти его можно на том же сайте http://veripool.org

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты