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

Симуляция нескольких дизайнов на различных уровнях

Добрый день, уважаемые форумчане!
По работе возник вопрос, может быть кто-то из опытных разработчиков подскажет как лучше cделать. 

Вкратце, есть некоторое устройство, которое состоит из нескольких модулей. В каждом модуле установлена ПЛИС и под каждую ПЛИС разработан свой дизайн (с использованием и Verilog, и VHDL).
Семейства ПЛИС разные, если это важно для данного вопроса - Spartan-3AN и Spartan-6.
Один из модулей является "мастером", он управляется через FTDI с ПК по интерфейсу SPI. Остальные модули подключены к мастеру по I2C.
Я создал еще один модуль на Verilog, в котором все эти дизайны соединил так, как они соединяются в сборке, а также написал тестовые воздействия по SPI.

А вот дальше хотелось бы иметь возможность для каждого дизайна выбирать, на каком уровне (behavioral или timing) этот дизайн будет моделироваться в симуляторе.
В Xilinx ISE на встроенном симуляторе получилось только behavioral моделирование, при этом времянка строится не до конца тестбенча (с вылетом вот такой ошибки: A limit on number of transitions that can be stored in waveform database (.wdb) file has been reached and waveform tracing has been stopped.).

Может быть есть какой-то САПР, в котором это все удобнее делается?

 

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


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

Попробуйте Матлаб System Generator. Для каждой Плис настройте свой блок SysGen. Там можно промоделировать проект в параллели с разными внутренними/внешними данными.

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


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

1 час назад, vonorfasyexela сказал:

А вот дальше хотелось бы иметь возможность для каждого дизайна выбирать, на каком уровне (behavioral или timing) этот дизайн будет моделироваться в симуляторе.
 

А для чего нужно симулировать времянки всего проекта вместе, если известно, что по частям все просимулировано? Или идет передача сигналов из одной ПЛИС в другую и есть сомнения в этом месте? И что за необходимость разбираться с тысячами неизвестных сигналов после оптимизации проекта? Не понятно пока...

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


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

1 час назад, vonorfasyexela сказал:

А вот дальше хотелось бы иметь возможность для каждого дизайна выбирать, на каком уровне (behavioral или timing) этот дизайн будет моделироваться в симуляторе.

В VHDL это делается просто: один entity может иметь несколько архитектурных тел. В дизайне надо указать, какое использовать.

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


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

3 minutes ago, iosifk said:

А для чего нужно симулировать времянки всего проекта вместе, если известно, что по частям все просимулировано? Или идет передача сигналов из одной ПЛИС в другую и есть сомнения в этом месте? И что за необходимость разбираться с тысячами неизвестных сигналов после оптимизации проекта? Не понятно пока...

Сейчас попробую объяснить, в чем вижу удобство симуляции всего проекта вместе.

Чтобы просимулировать один дизайн из сборки, мне нужно писать для него тестбенч, в котором нужно грузить данные по I2C в регистры этого модуля и смотреть, что происходит на выходах этого модуля.
И так для каждого дизайна, входящего в сборку.

В случае, когда сборка уже собрана в виде HDL-описания, хотелось бы написать тестовые воздействия на мастер-модуль (который сам уже будет по I2C писать в регистры модулей) и дальше просто вытянуть на времянку интересующие меня сигналы со всех остальных модулей сборки. 

Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки.

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


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

8 minutes ago, vonorfasyexela said:

Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки.

Можно написать vhdl тестбенч в котором будут два модуля мастер и слейв и соединить их в этом тестбенче. 

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


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

4 минуты назад, vonorfasyexela сказал:

Чтобы просимулировать один дизайн из сборки, мне нужно писать для него тестбенч, в котором нужно грузить данные по I2C в регистры этого модуля и смотреть, что происходит на выходах этого модуля.
И так для каждого дизайна, входящего в сборку.

В случае, когда сборка уже собрана в виде HDL-описания, хотелось бы написать тестовые воздействия на мастер-модуль (который сам уже будет по I2C писать в регистры модулей) и дальше просто вытянуть на времянку интересующие меня сигналы со всех остальных модулей сборки. 

Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки.

Сделать мастер SPI, причем несинтезируемый. Вставить в тестбенч. Данные в этот мастер брать из текстового файла... Результаты посылок дублировать сообщениями в консоль... На "выходах модуля" тоже можно делать сообщения на консоль... 

Во втором случае, совершенно другой способ отладки... В основе - ядра проекта наверняка есть автомат. Отладить прием-передачу сообщений можно вообще где угодно, например написав этот же автомат на Си. Пара "передатчик-приемник SPI" не требует "всего остального неотлаженного проекта".. Остается от "ядра проекта - к периферии проекта".... Но это тоже проще отладить по частям... 

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


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

13 minutes ago, Skryppy said:

Можно написать vhdl тестбенч в котором будут два модуля мастер и слейв и соединить их в этом тестбенче. 

Да, конечно, можно и так.
Вопрос в том, как в таком случае сделать временное моделирование обоих дизайнов одновременно?
Про VHDL andrew_b уже написал. Я так понимаю, в тестбенче нужно указать использование временных моделей.
А как быть, если топ-модули этих дизайнов на verilog?
 

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


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

4 минуты назад, vonorfasyexela сказал:

Вопрос в том, как в таком случае сделать временное моделирование обоих дизайнов одновременно?
Про VHDL andrew_b уже написал. Я так понимаю, в тестбенче нужно указать использование временных моделей.
А как быть, если топ-модули этих дизайнов на verilog?

На верилоге есть параметры. Введите параметр "дебаг-релиз" и два набора параметров, соответственно. 

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


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

На verilog все до безобразия просто:
1. Делаете тестбенч
2. Вставляете модуль A. Пишете initial $sdf_annotate("_1.sdf", tb.A);
3. Вставляете модуль B. Пишете initial $sdf_annotate("_2.sdf", tb.B);

Для поведенческого описания используете другой исходник модуля.

 

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


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

12 minutes ago, dvlwork said:

На verilog все до безобразия просто:
1. Делаете тестбенч
2. Вставляете модуль A. Пишете initial $sdf_annotate("_1.sdf", tb.A);
3. Вставляете модуль B. Пишете initial $sdf_annotate("_2.sdf", tb.B);

Для поведенческого описания используете другой исходник модуля.

Спасибо, попробую! Не подскажете, в каком САПРе проще всего такое настроить?
 

17 minutes ago, iosifk said:

На верилоге есть параметры. Введите параметр "дебаг-релиз" и два набора параметров, соответственно. 

Если не трудно, можете поподробнее этот вариант объяснить?

Для определенности: есть две отдельных платы, на одной стоит Spartan-3A, на другой Spartan-6.
Для первой платы на языке Verilog написан синтезируемый топ-модуль, который реализует SPI-мастер.
Для второй платы тоже на Verilog написан синтезируемый топ-модуль, который реализует SPI-слейв.

Процессы синтеза и раскладки в кристалл сделаны для обоих модулей. Также сгенерированы Post-Place&Route модели.

Пишется тестбенч, в котором делаются инстансы обоих модулей и они соединяются проводами. 

Как дальше с помощью параметров осуществить временное моделирование этого тестбенча?
 

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


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

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

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

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

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

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

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

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

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

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