19.02.2016 Моделирование verilog
Материал из SRNS
Boldenkov (обсуждение | вклад) (→Компилируем файл verilog.) |
Boldenkov (обсуждение | вклад) (→В окне Wave смотрим результаты) |
||
Строка 56: | Строка 56: | ||
[[File:20160219_questa_wave_1.png|400px]] | [[File:20160219_questa_wave_1.png|400px]] | ||
+ | |||
+ | == А теперь всё то же самое - автоматически == | ||
+ | |||
+ | Каждый раз делать всё это надоедает. Поэтому можно сделать всё из командного файла. Создаём файл "do.tcl" | ||
+ | <source lang="tcl"> | ||
+ | # vlib tb | ||
+ | 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 | ||
+ | </source> | ||
+ | |||
+ | Запускаем vsim командой: | ||
+ | <source lang="bash"> | ||
+ | vsim -do do.tcl | ||
+ | </source> | ||
+ | |||
+ | В результате выдаются временные диаграммы. | ||
+ | Можно в коде тестбенча сделать запись результатов в файл, дать в конце скрипта команду exit, тогда временные диаграммы можно будет не смотреть. | ||
[[Category:FPGA]] | [[Category:FPGA]] |
Версия 09:52, 4 ноября 2016
Итак, задача состоит в том, чтобы с помощью Modelsim провести моделирование кода Verilog.
Создаём файл, который будем моделировать
`timescale 1ns/1ns
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
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"
# vlib tb
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
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 командой:
vsim -do do.tcl
В результате выдаются временные диаграммы. Можно в коде тестбенча сделать запись результатов в файл, дать в конце скрипта команду exit, тогда временные диаграммы можно будет не смотреть.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.