Хочу рассказать немного про симуляцию цифровых проектов. Да-да. Тема эта уже поднималась несколько раз, и, конечно – это неисчерпаемая тема. Я уже когда-то писал про симуляцию средствами Quartus II версии 9, но в последней версии Quartus II v10 этого «родного» альтеровского симулятора уже нет. Сказать по правде я расстроился. Для маленьких проектов этого симулятора вполне хватало. Потом я написал статью про симулятор iverilog – это простой open source симулятор – вполне приличная вещь. И вот теперь хочу кратко рассказать о программе ModelSim:

ModelSim Altera

ModelSim – это продукт компании MentorGraphics.

Я буду рассказывать об одной из его версий, а именно ModelSim Altera Starter Edition...

Итак, что нам нужно сделать, чтобы познакомиться с этой программой? Конечно, прежде всего нужно ее выкачать с сайта Альтеры. Зайдем на сайт компании Альтера: https://www.altera.com/products/software/quartus-ii/modelsim/qts-modelsim-index.html

Там увидите таблицу сравнительных характеристик различных версий ModelSim:

  • ModelSIm Web Edition – больше не поддерживается компанией Альтера.
  • ModelSim Altera Starter Edition -  чуть медленне, чем Altera Editon и есть ограничение на размер проекта.
  • ModelSim Altera Edition – самая быстрая версия симулятора, без ограничений на размер проекта. Стоимость $945 на сегодня (13 декабря 2010 года).

Мы выбираем Starter Edition - она бесплатна, не требует лицензии, может использоваться на небольших проектах до 10000 строк кода. Я думаю, что нам это с головой хватит. Переходим по ссылке Download. Я выбираю версию для Windows. Размер файла, который нужно загрузить – 586Мб. Это не мало, но и не слишком много по нынешним временам. В общем качаю и устанавливаю..

Теперь запускаем программу ModelSim. Если вы еще не успели выучить английский язык, то сделайте это сейчас (шутка). У программы ModelSim очень хорошая документация, но на английском языке. К счастью мир не без добрых людей. Я очень рекомендую сайт http://www.modelsim.ru – здесь вы найдете очень качественный перевод на русский язык практически всей документации ModelSim. Ну просто море полезной информации!

Я сейчас хочу просимулировать тот же пример, который я уже успешно пробовал симулировать с помощью iverilog. Это два файла counter.v и tcounter.v – они расположены у меня в папке c:\altera\10.0\projects\first.
Содержимое этих файлов вот такое:

counter.v - это счетчик с возможностью параллельной загрузки. Если сигнал wr активен в момент фронта clk, то в регистр счетчика будет записано число с входной шины wdata. Иначе значение счетчика будет увеличиваться на единицу каждый фронт clk.


module counter (
  input wire reset,
  input wire clk,
  input wire [7:0]wdata,
  input wire wr,
  output reg [7:0]data
);
 always @ (posedge clk or posedge reset)
  if (reset)
    data <= 8'h00;
  else
  if
(wr)
    data <= wdata;
  else
    data <= data + 8'h01;

endmodule


А вот это - vcounter.v - "тестбенч" для моего счетчика. Эта программа служит для проверки правильности работы модуля counter.


`timescale 1ns / 100ps
module test_counter;

reg reset, clk, wr;
reg [7:0]wdata;
wire [7:0] data_cnt;

counter counter_inst(reset, clk, wdata, wr, data_cnt);

always
  #10 clk = ~clk;

initial
begin

  clk = 0;
  reset = 0;
  wdata = 8'h00;
  wr = 1'b0;

  #50 reset = 1;

  #4 reset = 0;
  #50;


  @(posedge clk)

  #0
  begin
    wdata = 8'h55;
    wr = 1'b1;
  end

  @(posedge clk)
  #0
  begin
    wdata = 8'h00;
    wr = 1'b0;
  end
end


initial
begin

  #400 $finish;
end

initial
begin

  $dumpfile("out.vcd");
  $dumpvars(0,test_counter);
  $dumpvars(0,counter_inst);
end

initial

  $monitor($stime,, reset,, clk,,, wdata,, wr,, data_cnt);

endmodule


Вот эти файлы я попробую использовать для демонстрации работы ModelSim.

Приступим!

При запуске программы ModelSim мы видим примерно вот такой экран (кликните на изображение, чтобы увидеть его крупнее):

Симуляция проекта с помощью ModelSim Altera Starter Edition

Первое, что нам нужно сделать - это перейти в рабочую папку. Для этого выбираем пункт меню File/Change Directory...

_Симуляция проекта с помощью ModelSim Altera Starter Edition

В открывшемся диалоге указываем путь к нашему проекту:

_Симуляция проекта с помощью ModelSim Altera Starter Edition

После выбора папки нужно скомпилировать проект в библиотеку. Выбираем пенкт меню Compile/Compile...

Симуляция проекта с помощью ModelSim Altera Starter Edition

Здесь нужно выбрать все файлы нашего проекта. Диалог позволяет выбирать одновременно несколько файлов.

Симуляция проекта с помощью ModelSim Altera Starter Edition

Выбрали файлы - нажимаем кнопку Compile.

Симуляция проекта с помощью ModelSim Altera Starter Edition

ModelSim спрашивает имя библиотеки, которая будет создана. По умолчанию предлагается имя work, ну вот пусть такое и будет. Отвечаем Yes. После компиляции в окне Transcript проверяйте, нет ли ошибок в исходных файлах.

Симуляция проекта с помощью ModelSim Altera Starter Edition

Обратите внимание, что в окне Library появилась новая библиотека work. так и должно быть. Теперь выбираем пункт меню Simulate/Start Simulation...

После этого откроем для просмотра еще два окна с помощью пунктов меню View\Objects... и View\Wave...

Симуляция проекта с помощью ModelSim Altera Starter Edition

В окне Objects нужно выбрать интересующие нас сигналы (можно все) и добывить их в окно просмотра формы сигналов Wave.

Симуляция проекта с помощью ModelSim Altera Starter Edition

Вот теперь и посмотрим, что у нас получается в симуляции. Делаем несколько шагов симуляции вперед с помощью пункта меню  Simulate\Run\Run100...

А вот и результат симуляции:

Симуляция проекта средствами ModelSim Altera Starter Edition

Обратите внимание, что и текстовый вывод в окне Transcript и сами сигналы в окне Wave точно такие же как и в случае симуляции с помощью open source icarus-verilog.

Ну и вот - по форме сигналов мы видим, что наш счетчик работает правильно - так как и задумывалось нами!

 

 

 


Добавить комментарий