Перейти к содержанию
    

Всем спасибо за ответы!

Исчерпывающе, поставлю что слил, не получится пройду по предложенной ссылке. SC пока ставить не буду, разобраться бы с этим. Заранее готов к гиморам, типа как здесь http://electronix.ru/forum/index.php?showtopic=67107. Единственное, что радует, так то, что у меня всё с нуля, а не надо переходить со старой версии на новую. Мне всегда было легче сделать заново, чем переделывать старое. Но это в плане установки, а в плане изучения :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитал tutorial по Modelsim 6.4b для Xilinx из хэлпа. На 84страницах фактически подробно расписано как нажимать кнопку Run для различных ситуаций. Но ни слова о том как задавать входные сигналы.

 

Где можно почитать как задавать тот-же сигнал CLK, как задавать\генерить входные сигналы для Verilog?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где можно почитать как задавать тот-же сигнал CLK, как задавать\генерить входные сигналы для Verilog?

 

В этой теме есть проект, к нему тестбенч на SV и скрипты запуска менторовских симуляторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В этой теме есть проект, к нему тестбенч на SV и скрипты запуска менторовских симуляторов.

 

Спасибо! Скачал, посмотрел. По скриптам не совсем понятно. Там похоже скрипты описывают конфигурацию wave, может что пропустил, но скриптов описывающих входные сигналы что-то не видно. Я так понимаю где-то должны быть функции связанные с force или чем-то подобным.

И куда эти скрипты подставлять? В lib или просто вместе с рабочим проектом одной кучей подсовывать? Если не затруднит, ткните пожалуйста пальцем куда смотреть.

 

Может есть ссылка на документ описывающий сию процедуру (задание входных сигналов и их подсовывание симулятору). А то хожу кругами и дверь никак найти не могу.

 

Ну примерно так, только надо поподробней.

 

You can put all the commands to compile the Hardware Description Language (HDL) files, load the design, give stimulus, and simulate your design in a single DO file. For example, you can create a script file called run.do with the following:

 

# Compile Design

 

do system.do

 

# Load Design

 

vsim system

 

# Set Stimulus

 

force -freeze sim:/system/sys_clk 1 0, 0 {10 ns} -r 20 ns

 

force -freeze sim:/system/sys_reset 1

 

force -freeze sim:/system/sys_reset 0 100 ns, 1 {200 ns}

 

# Run simulation

 

run 2 us

 

To run this script, on ModelSim’s command prompt, type:

 

ModelSim> do run.do

Изменено пользователем boldive

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но скриптов описывающих входные сигналы что-то не видно. Я так понимаю где-то должны быть функции связанные с force или чем-то подобным.

их там и нет, всё задается в тестбенче. Как именно смотрите топ файл. %)

 

ЗЫ. Попробуйте на форсах сгенерировать ну хотя бы PCI-E транзакцию. Глупости про force отпадут сами собой %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел! Спасибо.

 

Вот только я еще толком на жигулях ездить не научился а вы меня на Bugatti Veyron пересаживаете. Убьюсь я на таких технологиях :crying:

 

Мне-бы попроще для начала.

 

Force меня вполне устроит для начала работы. Ну а там уже можно будет и дальше двигаться. Речь идет о моделировании драйвера для управления шаговым двигателем. Там простые импульсы с частотой 20kHz (тактовая 5MHz). Никаких шин, простая логика на элементах AND OR XOR и тригерах. Мне надо задать пульсы с определенным интервалом и определенной длительности и посмотреть на wave, что там творится внутри.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне-бы попроще для начала.

Так в чем проблема то, прочитайте любую книгу о написании тестбенчей.

Мне надо задать пульсы с определенным интервалом и определенной длительности и посмотреть на wave, что там творится внутри.

все делается нативно, делов то на минуту. Изучайте язык которым владеете.

  logic signal;

  initial begin : main
    for (int i = 1; i < 10; i++) begin
      set_pulse(i*1us);
    end
  end

  task set_pulse (time duration = 1us, delay = 2us);
    signal = 1'b1;
    #(duration);
    signal = 1'b0;
    #(delay);
  endtask

 

PS. В моделсиме в хелпе есть великолепный tutorial с примерами кода, осваивается за полчаса. Изучайте софт которым владеете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитайте любую книгу о написании тестбенчей.

 

PS. В моделсиме в хелпе есть великолепный tutorial с примерами кода,

 

Большое спасибо! Процесс пошел. Теперь можно продолжать грызть гранит науки.

 

Собственно одним из вопросов и был вопрос по книге которую следовало-бы почитать.

Какую книжку о написании тестбенчей порекомендуете?

 

В tutorial DO File посвящена одна страница (Chapter 8, стр.77) и одна страница для Tcl (стр81). Посмотреть как это делается там можно. Изучить как это делается там нельзя. Чуть больше информации в User Manual. Там этому процессу уже посвящена целая глава.

 

Код который Вы привели для примера, он на чем написан? Что это за язык написания который надо изучать? В Tcl таких команд нет.

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какую книжку о написании тестбенчей порекомендуете?

любую от яника берджерона или какую найдете.

 

В tutorial DO File посвящена одна страница (Chapter 8, стр.77) и одна страница для Tcl (стр81). Посмотреть как это делается там можно. Изучить как это делается там нельзя. Чуть больше информации в User Manual. Там этому процессу уже посвящена целая глава.

кхм, вы слишком узко смотрите. на примере квесты. $MODEL_TECH\docs\pdfdocs\questa_afv_tut.pdf -> Chapter 3 Basic Simulation или Help ->Documentation PDF Bookcase. все коды примеров лежат тут $MODEL_TECH\examples\tutorials

 

Код который Вы привели для примера, он на чем написан? Что это за язык написания который надо изучать? В Tcl таких команд нет.

Verilog/SystemVerilog

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

любую от яника берджерона или какую найдете.

 

Google яника берджерона не знает. Наверно он не так пишется по русски.

 

Зато нашел страничку с "картинками" как раз для меня. http://www.asic-world.com/verilog/art_test...h_writing1.html

Там коротко без лишней воды рассказывается про Verilog и как его употреблять. Почитаю для начала. Надеюсь хоть само понимание процесса "устаканится" в голове.

Все примеры там скачиваются сразу "не отходя от кассы".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После перерыва вернулся к связке ISE 11.4 и Modelsim XE III/Starter 6.4b.

 

Right-click on My_project.v in the Sources in Project window and choose New Source. Select Verilog Test Fixture and give your file a name such as "test_My_project". Click Next, and you'll be prompted to associate the file with a module; choose My_project, click Next, then click Finish. The file will be added to your project.

 

Что я и сделал. В итоге получил готовую шапку файла для testbench в формате файла verilog. Все остальные вспомогательные файлы создались автоматически. Добавил в этот файл генератор сигнала CLK и STP

 

always begin

#100 CLK = ~CLK;

end

 

always begin

STP = ~STP;

// 10us pulse

#10000 STP = ~STP;

// Delay between STEP Pulses. Speed.

#590000;

end

 

В ISE выбрал Simulation -> Simulate Behavioral Model -> Rerun (по правому клику)

 

Загрузился у меня Modelsim со всеми wave описанными по умолчанию как inputa and outputs. Все внутренние переменные файла проекта пока остались за бортом.

По умолчанию run time идет 1000ns. Если в файле .fdo я поменяю время на скажем 1ms то оно при нажатии Rerun все равно переписывается в 1000ns

 

Как с этим бороться?

 

Как только я в testbench прописываю что-то вроде такого:

 

always begin

if (A0 != A1) begin

#1390000 AIN = 0;

#400 AIN =1;

end

end

 

то Modelsim ни на что не ругается, но в процессе начальной загрузки просто подвисает со 100% загрузкой CPU.

 

Это как понимать?

 

В Modelsim открываю файл testbench и начинаю менять временные задержки. При вводе команды run 12ms мои изменения не проходят. Надо закрывать Modelsim и опять закружать его через Rerun в ISE.

 

Это как-то исправляется?

 

Извиняюсь за возможно глупые вопросы, но ответа пока не нашел. Подскажите кто знает.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то не получается написать условие в testbench.

 

Нужно мониторить сигнал A0. Как только A0 переходит в 1 ждать 1.39ms, если за это время A0 продолжает быть в единице то перевести сигнал AIN в 0 на 0.6us (сформировать такой пульс). Затем вернуть AIN обратно в 1.

Вот такой код просто подвешивает Modelsim.

 

always begin

if (A0 == 1) begin

#1390000 AIN = 0;

#600 AIN =1;

end

 

end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то не получается написать условие в testbench.

 

не пихайте логику для моделирования в процессы, используйте initial

 

initial begin : wait_a1_logic
  forever begin
    wait (A0 == 1);
    #1.39ms AIN = 0;
    #0.6us  AIN =1;
  end
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как только я в testbench прописываю что-то вроде такого:

 

always begin

if (A0 != A1) begin

#1390000 AIN = 0;

#400 AIN =1;

end

end

 

то Modelsim ни на что не ругается, но в процессе начальной загрузки просто подвисает со 100% загрузкой CPU.

Этот always проходит за нулевое время, когда A0 == A1 и затем запускается заново. Это у вас и происходит.

Напишите, например, always @(A0 or A1)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

initial begin : wait_a1_logic
  forever begin
    wait (A0 == 1);
    #1.39ms AIN = 0;
    #0.6us  AIN =1;
  end
end

 

Этот код не мониторит сигнал. Если в течении первых 1.39ms A0 изменится то вся последующая цепочка все равно сработает. Т.е. wait (A0 == 1); срабатывает как тригер запускающий последующие команды. А тут надо именно мониторить A0 когда он в "1" и если он продолжает там быть то тогда его и менять в пульс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...