19.02.2016 Моделирование verilog
Итак, задача состоит в том, чтобы с помощью Modelsim провести моделирование кода Verilog.
Создаём файл, который будем моделировать
module tb();
reg clk = 1'b0;
always #5 clk=!clk;
reg [4:0] cnt=5'b0;
always @(posedge clk) begin
cnt <= cnt+1;
end
endmodule
Первая строка задаёт темп моделирования. Строка "always #5 clk=!clk;" задаёт тактовый сигнал - каждые 5 интервалов времени, указанных в timescale. Остальной код тривиален.
Создаём новую библиотеку. Пусть для примера она называется "tb":
Компилируем файл verilog.
Попутно указываем путь к подключаемым чере "`include" файлам, нажав кнопку "Default options":
Запускаем симуляцию - без оптимизации! (Simulate without optimization)
Добавляем требуемые сигналы в окно отображения Wave
Запускаем симуляцию - выбираем длительность и нажимаем кнопку запуска (справа от поля ввода длительности)
В окне Wave смотрим результаты
А теперь всё то же самое - автоматически
Каждый раз делать всё это надоедает. Поэтому можно сделать всё из командного файла. Создаём файл "do.tcl"
vlog -reportprogress 300 -work tb /tmp/Verilog/test.v
vsim -novopt tb.tb
add wave -position instertpoint \
sim:/tb/clk \
sim:/tb/cnt
run 100ns
Запускаем vsim командой:
В результате выдаются временные диаграммы. Можно в коде тестбенча сделать запись результатов в файл, дать в конце скрипта команду exit, тогда временные диаграммы можно будет не смотреть.
Более сложный пример с автоматизацией процессов
Рассмотрим пример, в котором есть тестируемый модуль my_adder.v, тестбенч test.v и включаемый файл inc/params.v. Будет два режима отладки:
- отладка с просмотром временных диаграмм в modelsim
- обработка данных в Matlab с помощью файла test.m
Итак, исходники:
- тестируемый модуль my_adder.v:
- тесбенч test.v:
- Файл параметров inc/params.v:
- Тест Matlab test.m:
Автоматизация процессов будет осуществляться с помощью make.
Цель all стоит в Makefile первой, она будет выполнятся при запуске make. Можно ставить в зависимость show, тогда откроется окно modelsim с временными диаграммами, либо batch, тогда modelsim выполнит моделирование в командном режиме и результаты будут записаны в файлы cnt.txt и sum.txt.
Цель compile создаёт файл compile.tcl, используемый для компиляции файлов verilog. Цель tb создаёт библиотеку tb, в которой будет происходить моделирование. Цель clean очищает каталог от всех создаваемых при работе файлов.
При выполнении make show исполняется файл show.tcl. В этом файле перечислены сигналы, которые выводятся в окно wave и даётся команда run.
При выполнении make batch исполняется файл batch.tcl:
Теперь можно сразу из Matlab запускать test.m и всё будет работать. Можно вызывать make show и будут временные диаграммы в modelsim.
Ссылка на архив с файлами: File:20161104_verilog_test.tar.bz2
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.