реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Создание скриптов SDC ACTEL, Помогите начинающему программисту
Abum
сообщение Mar 24 2014, 06:19
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 24-03-14
Пользователь №: 81 055



Доброго времени суток! Возникла проблема. Разрабатываю многоуровневый проект на ПЛИС Actel. Написал все на VHDL, как мне кажется грамотно laughing.gif (по крайне мере после синтеза появляется минимум замечаний, в ModelSim появляется то, что хотелось видеть). Хотя и не буду спорить, что возможно это быдло-код biggrin.gif
Начинаю процесс синтеза, и тут возникают предупреждения, мол задайте ограничения на частоты и т.д. Я сделал все что смог. Начинаю синтез, и проект работает не так как нужно! (На 75% работает правильно). Я погуглил, и пришел к выводу что мой враг, это скрипты sdc - временные ограничения для проекта. Опираясь на статью на КИТЕ
http://www.kit-e.ru/articles/plis/2010_9_51.php я попытался хоть как то понять этот язык. Правда в статье упор больше шел на на САПР Алтеры, но я подумал, а какая разница, скрипты и в африке скрипты.
Получилось описать основные частоты (команды create_clock, create_generated_clock, и объединить их в группы set_clock_groups).
Вопрос заключается в следующем: как задавать задержки цепей внутри проекта, ведь как я понимаю САПР Libero разводит грубо говоря рандомно (если я не прав, поправьте меня, постоянно путаюсь в этом! Где схема синтезируется, где уже разводится по ПЛИС), и из-за этого какая то часть проекта (или весь проект) может работать неправильно.
В особенности интересуют команды set_input_delay, set_output_delay, нужно ли их использовать на нижних уровнях проекта; команда set_max_delay, и команды для удаления из оптимизации цепей проекта (как я понял) set_false_part, set_multicycle_path. Из прочитанной статьи честно ничего не понял, сложно адаптироваться в одной сапр, читая про другую. Кто сталкивался, пожалуйста ВЫРУЧАЙТЕ! Любая литература, примеры, комментарии, буду рад!
Возможно я что-то упустил, работаю в Libero SoC 10.1 ПЛИС ProAsic3L.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 24 2014, 06:41
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Abum @ Mar 24 2014, 10:19) *
Доброго времени суток! Возникла проблема. Разрабатываю многоуровневый проект на ПЛИС Actel. Написал все на VHDL, как мне кажется грамотно laughing.gif (по крайне мере после синтеза появляется минимум замечаний, в ModelSim появляется то, что хотелось видеть). Хотя и не буду спорить, что возможно это быдло-код biggrin.gif
Начинаю процесс синтеза, и тут возникают предупреждения, мол задайте ограничения на частоты и т.д. Я сделал все что смог. Начинаю синтез, и проект работает не так как нужно! (На 75% работает правильно). Я погуглил, и пришел к выводу что мой враг, это скрипты sdc - временные ограничения для проекта.

Но ведь есть рапорт о нарушении временных ограничений.
Есть возможность провести симуляцию после размещения проекта на кристалле...
У Вас синхронный проект?
Какие частоты?
Насколько большой проект? Пробовали ли отлаживать в железе по частям?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Abum
сообщение Mar 24 2014, 07:27
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 24-03-14
Пользователь №: 81 055



Цитата(iosifk @ Mar 24 2014, 09:41) *
Но ведь есть рапорт о нарушении временных ограничений.
Есть возможность провести симуляцию после размещения проекта на кристалле...
У Вас синхронный проект?
Какие частоты?
Насколько большой проект? Пробовали ли отлаживать в железе по частям?


Да есть, но то, на что он ссылается, это результат синтеза. То есть появляются новые созданные цепи и т.д. (с длинными названиями rolleyes.gif ) И когда я читаю отчет, то вижу, что он находит тактовые частоты в тех местах, где их абсолютно быть не должно (например, разряд 21-разрядного адреса он воспринимает за тактовый сигнал). По сути надо отключить оптимизацию этого места, но я не понимаю как. 05.gif

После размещения элементов на ПЛИС получается аналогичная картина. В Либеро вообще странная отладка. 3 симуляции (для меня, новичка, это что-то новое) Первая, это просто отладка кода, вторая отладка после синтеза под соответствующую ПЛИС, третья отладка после трассировки элементов на ПЛИС. Не понимаю честно, зачем второе звено.

Проект синхронных На ПЛИС подается частота 24МГц от внешнего генератора, и делится банально на 2 три раза. То есть Рабочая частота проекта 3МГц.
Принимаются сигналы с частотой 1МГц, обрабатываются, и отправляются обратно, это в двух словах.

По отдельности пробовал синтезировать каждую часть, все отлично функционирует. К сожалению пока что на железе нет возможности отладить. Во первых нет симулятора сигналов, чтобы подавать их на ПЛИС. Ну и во вторых, самое важное, сейчас разрабатываю переходник для платы - дело в том что на одну большую вилку запихнули куча всего, в том числе и jtag.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 24 2014, 07:33
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Abum @ Mar 24 2014, 11:27) *
Проект синхронных На ПЛИС подается частота 24МГц от внешнего генератора, и делится банально на 2 три раза. То есть Рабочая частота проекта 3МГц.
Принимаются сигналы с частотой 1МГц, обрабатываются, и отправляются обратно, это в двух словах.

А как с частоты 1Мгц переходите на 3 МГц? Или у Вас куча клоковых доменов и не понятно как сделаны переходы CDC...
Может быть оставить системную частоту 24МГц и весь проект сделать на ней. Как это обычно и делается...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Abum
сообщение Mar 24 2014, 07:52
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 24-03-14
Пользователь №: 81 055



Цитата(iosifk @ Mar 24 2014, 10:33) *
А как с частоты 1Мгц переходите на 3 МГц? Или у Вас куча клоковых доменов и не понятно как сделаны переходы CDC...
Может быть оставить системную частоту 24МГц и весь проект сделать на ней. Как это обычно и делается...


Возможно немного не корректно изложил свою мысль. Сейчас попробую еще раз. rolleyes.gif Разрабатывается блок, на вход приходят сообщения закодированные Манчестером с опорной частотой 1МГц. Я извлекаю из них информацию с помощью 60 разрядного регистра. То есть если в слове сообщения 20 разрядов получается на 1 разряд 3 триггера.
Ну и дальше по мажоритарному принципу я извлекаю информацию. Аналогично я передаю сообщения обратно.

К вечеру постараюсь прикрепить пример sdc файла, который написан. Для каждого триггера в проекте была прописана его тактовая частота конструкцией create_generated_clock. Ну и далее с использованием rtl модели я отследил все пути, и прописал частоты.
Но я понимаю что этого мало! Потому что проект не работает. И вот глаз пал на задержки внутри блоков, так как присутствует также асинхронная логика.

Может быть проблема в самом коде? То что его части не синтезируемы, то есть мы с программой на разных языках говорим?
Потому что я чуть чуть подправлю код (изменю значение счетчика, и т.д.) в VHDL коде, и симуляция после синтеза в этом месте начинает работать. Мне кажется этот метод неправильным, ибо, когда я хочу вернуться и дописать что-то еще к блоку, я вижу что мой проект при отладке vhdl кода, сломался из-за той поправки.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 24 2014, 08:29
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Abum @ Mar 24 2014, 11:52) *
Возможно немного не корректно изложил свою мысль. Сейчас попробую еще раз. rolleyes.gif Разрабатывается блок, на вход приходят сообщения закодированные Манчестером с опорной частотой 1МГц. Я извлекаю из них информацию с помощью 60 разрядного регистра. То есть если в слове сообщения 20 разрядов получается на 1 разряд 3 триггера.
Ну и дальше по мажоритарному принципу я извлекаю информацию. Аналогично я передаю сообщения обратно.


Потому что я чуть чуть подправлю код (изменю значение счетчика, и т.д.) в VHDL коде, и симуляция после синтеза в этом месте начинает работать. Мне кажется этот метод неправильным, ибо, когда я хочу вернуться и дописать что-то еще к блоку, я вижу что мой проект при отладке vhdl кода, сломался из-за той поправки.

Очень странный подход... Имея частоту в 24МГц я бы обрабатывал Манчестер по-битно... Да еще успевал бы делать перед этим цифровую фильтрацию, чтобы убрать дребезг фронтов...
А если после небольшого изменения кода проект рушится или наоборот начинает работать, то это говорит о том, что проект - асинхронный или не выполняются требования по setup-hold...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Abum
сообщение Mar 26 2014, 05:03
Сообщение #7





Группа: Новичок
Сообщений: 4
Регистрация: 24-03-14
Пользователь №: 81 055



Цитата(iosifk @ Mar 24 2014, 11:29) *
Очень странный подход... Имея частоту в 24МГц я бы обрабатывал Манчестер по-битно... Да еще успевал бы делать перед этим цифровую фильтрацию, чтобы убрать дребезг фронтов...
А если после небольшого изменения кода проект рушится или наоборот начинает работать, то это говорит о том, что проект - асинхронный или не выполняются требования по setup-hold...


Добрый день! К сожалению только сейчас удалось подгрузить файл.
По поводу подхода согласен, я ведь еще только новичок в этом деле! Так сказать "не нюхал пороха!":)
Вот по поводу "то работы, то не работы" проекта я и хотел узнать. Мне тоже кажется, что я не задал какие то ограничения в sdc файле, и поэтому каждый синтез аналогичен тому, как будто я кидаю монетку - нет 100% результата.
Я прикрепил часть своего проекта и файл sdc. Хочу услышать критику по этому поводу. В особенности по поводу "не выполнения требований по setup/hold". Нашел их в даташите на микросхему, но применить никак не могу. Также прилагаю скриншоты (их часть) синтеза vhdl кода. По поводу кода тоже хотелось бы услышать замечания, пожеланияsm.gif

СПАСИБО!

Прикрепленный файл  count_TX.vhd ( 1.78 килобайт ) Кол-во скачиваний: 86

Прикрепленный файл  d_trigger_r.vhd ( 389 байт ) Кол-во скачиваний: 114

Прикрепленный файл  reg_sdvig_per.vhd ( 1.88 килобайт ) Кол-во скачиваний: 98

Прикрепленное изображение

Прикрепленный файл  sdn.txt ( 35.91 килобайт ) Кол-во скачиваний: 90

Эскизы прикрепленных изображений

Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 15:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016