vonorfasyexela 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба Добрый день, уважаемые форумчане! По работе возник вопрос, может быть кто-то из опытных разработчиков подскажет как лучше 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.). Может быть есть какой-то САПР, в котором это все удобнее делается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба Попробуйте Матлаб System Generator. Для каждой Плис настройте свой блок SysGen. Там можно промоделировать проект в параллели с разными внутренними/внешними данными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 1 час назад, vonorfasyexela сказал: А вот дальше хотелось бы иметь возможность для каждого дизайна выбирать, на каком уровне (behavioral или timing) этот дизайн будет моделироваться в симуляторе. А для чего нужно симулировать времянки всего проекта вместе, если известно, что по частям все просимулировано? Или идет передача сигналов из одной ПЛИС в другую и есть сомнения в этом месте? И что за необходимость разбираться с тысячами неизвестных сигналов после оптимизации проекта? Не понятно пока... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 1 час назад, vonorfasyexela сказал: А вот дальше хотелось бы иметь возможность для каждого дизайна выбирать, на каком уровне (behavioral или timing) этот дизайн будет моделироваться в симуляторе. В VHDL это делается просто: один entity может иметь несколько архитектурных тел. В дизайне надо указать, какое использовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vonorfasyexela 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 3 minutes ago, iosifk said: А для чего нужно симулировать времянки всего проекта вместе, если известно, что по частям все просимулировано? Или идет передача сигналов из одной ПЛИС в другую и есть сомнения в этом месте? И что за необходимость разбираться с тысячами неизвестных сигналов после оптимизации проекта? Не понятно пока... Сейчас попробую объяснить, в чем вижу удобство симуляции всего проекта вместе. Чтобы просимулировать один дизайн из сборки, мне нужно писать для него тестбенч, в котором нужно грузить данные по I2C в регистры этого модуля и смотреть, что происходит на выходах этого модуля. И так для каждого дизайна, входящего в сборку. В случае, когда сборка уже собрана в виде HDL-описания, хотелось бы написать тестовые воздействия на мастер-модуль (который сам уже будет по I2C писать в регистры модулей) и дальше просто вытянуть на времянку интересующие меня сигналы со всех остальных модулей сборки. Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Skryppy 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 8 minutes ago, vonorfasyexela said: Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки. Можно написать vhdl тестбенч в котором будут два модуля мастер и слейв и соединить их в этом тестбенче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 4 минуты назад, vonorfasyexela сказал: Чтобы просимулировать один дизайн из сборки, мне нужно писать для него тестбенч, в котором нужно грузить данные по I2C в регистры этого модуля и смотреть, что происходит на выходах этого модуля. И так для каждого дизайна, входящего в сборку. В случае, когда сборка уже собрана в виде HDL-описания, хотелось бы написать тестовые воздействия на мастер-модуль (который сам уже будет по I2C писать в регистры модулей) и дальше просто вытянуть на времянку интересующие меня сигналы со всех остальных модулей сборки. Ну или другой пример: есть два неотлаженных ПЛИС-дизайна, в одном реализован SPI-мастер, в другом слейв. Их конечно можно отладить по частям (т.е. писать отдельно тестбенч для мастера и отдельно для слейва). Но гораздо проще, на мой взгляд, было бы соединить их и моделировать в виде сборки. Сделать мастер SPI, причем несинтезируемый. Вставить в тестбенч. Данные в этот мастер брать из текстового файла... Результаты посылок дублировать сообщениями в консоль... На "выходах модуля" тоже можно делать сообщения на консоль... Во втором случае, совершенно другой способ отладки... В основе - ядра проекта наверняка есть автомат. Отладить прием-передачу сообщений можно вообще где угодно, например написав этот же автомат на Си. Пара "передатчик-приемник SPI" не требует "всего остального неотлаженного проекта".. Остается от "ядра проекта - к периферии проекта".... Но это тоже проще отладить по частям... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vonorfasyexela 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 13 minutes ago, Skryppy said: Можно написать vhdl тестбенч в котором будут два модуля мастер и слейв и соединить их в этом тестбенче. Да, конечно, можно и так. Вопрос в том, как в таком случае сделать временное моделирование обоих дизайнов одновременно? Про VHDL andrew_b уже написал. Я так понимаю, в тестбенче нужно указать использование временных моделей. А как быть, если топ-модули этих дизайнов на verilog? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 4 минуты назад, vonorfasyexela сказал: Вопрос в том, как в таком случае сделать временное моделирование обоих дизайнов одновременно? Про VHDL andrew_b уже написал. Я так понимаю, в тестбенче нужно указать использование временных моделей. А как быть, если топ-модули этих дизайнов на verilog? На верилоге есть параметры. Введите параметр "дебаг-релиз" и два набора параметров, соответственно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvlwork 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба На verilog все до безобразия просто: 1. Делаете тестбенч 2. Вставляете модуль A. Пишете initial $sdf_annotate("_1.sdf", tb.A); 3. Вставляете модуль B. Пишете initial $sdf_annotate("_2.sdf", tb.B); Для поведенческого описания используете другой исходник модуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vonorfasyexela 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 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 модели. Пишется тестбенч, в котором делаются инстансы обоих модулей и они соединяются проводами. Как дальше с помощью параметров осуществить временное моделирование этого тестбенча? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться