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

 
 
 
Reply to this topicStart new topic
> проблемы с Actel!, при переносе VHDL проекта с ProAsic на Sx
another_one
сообщение Dec 26 2008, 15:18
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



как избежать проблем при переносе VHDL проекта, отлаженного на многократно программируемой микросхеме ProAsic на однократно программируемую SX?

Может есть у кого подобный опыт?, прошу поделиться советом gjcrjkmre поскольку воникли проблемы в работе логики на SX.

Заранее благодарен.

Сообщение отредактировал another_one - Dec 26 2008, 15:19


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Dec 26 2008, 16:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(another_one @ Dec 26 2008, 18:18) *
как избежать проблем при переносе VHDL проекта, отлаженного на многократно программируемой микросхеме ProAsic на однократно программируемую SX?


Работал с однократными Actel eX. А в чем суть проблемы?
Go to the top of the page
 
+Quote Post
another_one
сообщение Dec 26 2008, 17:13
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Цитата(Джеймс @ Dec 26 2008, 19:00) *
Работал с однократными Actel eX. А в чем суть проблемы?

Проблема заключается в следующем:

Время от времени читается предыдущее регистров регистров или не все биты регистров совпадают записанному.

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

Пытался синтезатором изменить пределы fanout'ов, он раставил соответственно на критических линиях буферы, немного переиграл имплементацию, но предупреждения остались.

Отдельно для этих клоков с помощью атрибутов Synplify/Synplify pro типа "maxfan" изменить их нагрузочную способность не получается.
wacko.gif


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Dec 26 2008, 19:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Так у Вас значит много тактовых частот? (кстати, сколько?) Если это так, то проблема, скорее всего, кроется в работе с разными тактовыми доменам. Но, не видя проекта, тут советы давать сложно. Рекомендовал бы запустить моделирование нетлиста с подключенным SDF (это для верилога, - можно получить верилоговский нетлист, даже если проект на VHDL).
Пусть эти регистры пишутся-читаются в цикле на модели (и должна быть автоматическая проверка). При первой же ошибке должна происходить остановка моделирования.

Другие версии.
Что-то покорежил Synplify... Очень редко, но бывает. То же самое – проверяется при моделировании нетлиста (при использовании однократных FPGA проверять “на железе” советовать не приходится). Попробуйте:
- отключить FSM Compiler
- задать Fanout = 9999 (при этом Synplify не будет размножать триггеры) _и_ указать Hard-limit to fanout

Важно. Проверьте в репорте Actel Designer, что все тактовые частоты назначены на глобальные цепи! Там в текстовой ‘табличке’ слева указан fanout, потом – тип. Тип должен быть CLK_NET.

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

Самый главный совет - первый - промоделировать нетлист. Если проблема есть, то она с большой вероятностью проявится.
Go to the top of the page
 
+Quote Post
another_one
сообщение Dec 26 2008, 22:15
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо Вам большое за поддержку.

Цитата
Так у Вас значит много тактовых частот? (кстати, сколько?) Если это так, то проблема, скорее всего, кроется в работе с разными тактовыми доменам. Но, не видя проекта, тут советы давать сложно. Рекомендовал бы запустить моделирование нетлиста с подключенным SDF (это для верилога, - можно получить верилоговский нетлист, даже если проект на VHDL).
Пусть эти регистры пишутся-читаются в цикле на модели (и должна быть автоматическая проверка). При первой же ошибке должна происходить остановка моделирования.


У меня микросхема A54SX32A, отлаживался на APA300. У 54SX32A три глобальных клока -1 Hardwired Clocks (HCLK) и 2 Routed Clocks (CLKA, CLKB) . HCLK меня в схеме устройства тактируется геренратором на 16МГц. Остальные не изпользуются. HCLK тактирует все схему в поведенческой моделе(цепь "clk"). В моделе я ввел еще два клока clk2 и clk3 - производных от "clk" для тактирования двух таймеров разной разряднойсти. Синтезатор ввел проризводные от двух последних(clk2_0, clk2_1,clk2_3, clk_3_0) , которые Дизайнер упомянул в сообениях о том что у них недостаточно нагрузочных ресурсов. По поводу clk2 и clk3 Дизайнер выдает тоже самое. Моделирования после разводки и имплементации не показало ошибок при записи / чтении, те которые были на практике.

Цитата
Другие версии.
Что-то покорежил Synplify... Очень редко, но бывает. То же самое – проверяется при моделировании нетлиста (при использовании однократных FPGA проверять “на железе” советовать не приходится). Попробуйте:
- отключить FSM Compiler
- задать Fanout = 9999 (при этом Synplify не будет размножать триггеры) _и_ указать Hard-limit to fanout


у меня тоже такое подозрение, поскольку у меня стоит Libero 8.2 и поверх ставил еще 8.4 b Synplify pro.
Изменял значения Fanout в "implementation options" Synplify, в итоге он сообщил о диапаозне от 6 до 24, при границах которого синтезатор добавляет либо удаляет буферы, изменяя при этом основную имплементацию. При увеличении количества буферов сообщения Дизайнера только увеличиваются - увеличивается количество производных от clk2 и clk3(вследствии доюваления триггеров при изменении имплементации). Поэтому получается замнкнутый цикл. Отдельно добавить буферы для clk2 и clk3 с помощью атрибутов(пробовал с syn_maxfan) Synplicity не получается.

Цитата
Важно. Проверьте в репорте Actel Designer, что все тактовые частоты назначены на глобальные цепи! Там в текстовой ‘табличке’ слева указан fanout, потом – тип. Тип должен быть CLK_NET.

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

Самый главный совет - первый - промоделировать нетлист. Если проблема есть, то она с большой вероятностью проявится.


Проект на работе, точно сейчас сказать не могу, но в сообщениях говорилось о клоках. Видимо при компиляции он видит что это клоки но без поддержки соответствующих буферов для клоков, так как аппаратные возможности микросхемы не позмоляют, т.е CLKA, CLKB уже используются.

Вот такого типа сообщение-прдупреждение:
Warning: Non-global resource 'inst_2/clk2_0' is being used to drive multiple clock pins. Clock
pins should be driven by global resources if available.


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Dec 26 2008, 23:52
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(another_one @ Dec 27 2008, 01:15) *
Видимо при компиляции он видит что это клоки но без поддержки соответствующих буферов для клоков, так как аппаратные возможности микросхемы не позмоляют, т.е CLKA, CLKB уже используются.

Вот такого типа сообщение-прдупреждение:
Warning: Non-global resource 'inst_2/clk2_0' is being used to drive multiple clock pins. Clock
pins should be driven by global resources if available.


А у Вас клоки подключены как?
HCLK - через буфер HCLKBUF
CLKA, CLKB - через буфер CLKBUF или с использованием примитива CLKINT

Так?
Go to the top of the page
 
+Quote Post
another_one
сообщение Dec 27 2008, 12:05
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Цитата(Джеймс @ Dec 27 2008, 02:52) *
А у Вас клоки подключены как?
HCLK - через буфер HCLKBUF
CLKA, CLKB - через буфер CLKBUF или с использованием примитива CLKINT

Так?

точно не помню, вроде было так:

Log synplify:

clkbuf: 1 clock buffer
hclkbuf: 1 clock buffer

clkint: 2 clock buffer

Log Designer:

CLOCK Used: 2 Total: 2
HCLOCK Used: 1 Total: 1


т.е вероятно HCLK подключен через clkbuf, а CLKA, CLKB через clkint. точного определения для CLKA и CLKB такого как для HCLK(hclkbuf: 1 clock buffer) не видел.


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
another_one
сообщение Jan 2 2009, 15:30
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



help.gif
Прошу еще немного мне помочь.


Проблема решиться если найдется решение как предотвратить автоматическое перераспределение Netlist Дизайнером в следующем случае.

У меня следующие клоки:

- HCLK;
- CLKA;
- CLKB;
Разводимые клоки(CLKA, CLKB) внешним тактируемым сигналом не используются, поэтому я их заземлил. В VHDL проекте используются еще два под клока, один - производная от HCLK, другой внешний сигнал по квосходящему фронту которого защелкиваются несколько регистров(синтезатор определил этот сигнал как клок). В этоге распиновка этого сигнала была изменена дизайнером, вследствии привязки этого сигнала к разводимому клок буферу CLKA - дизайнер самостоятельно привязал этот сигнал к ножки CLKA.

Прошу подсказать как убрать автоматичекое перераспределение распиновки Дизайнером.

Пробовал поставить флаг в Синтезаторе "Disable I/O insertion" - в этоге дизайнер перестал вообще компилировать, ругаясь на отсутствии какого-то элемента библиотеки.


Заранее благодарен.


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
pitbool
сообщение Jan 3 2009, 09:30
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 3-01-09
Пользователь №: 42 897



нужно добавить атрибут в разделе entity

entity example is
port (
...
not_clk : in std_logic;
...
);
attribute syn_noclockbuf : boolean;
attribute syn_noclockbuf of not_clk : signal is true;
end example;

Более подробное описание атрибутов можешь найти в хелпе к Sinplify wink.gif
Go to the top of the page
 
+Quote Post
another_one
сообщение Jan 3 2009, 14:14
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Цитата(pitbool @ Jan 3 2009, 12:30) *
нужно добавить атрибут в разделе entity

entity example is
port (
...
not_clk : in std_logic;
...
);
attribute syn_noclockbuf : boolean;
attribute syn_noclockbuf of not_clk : signal is true;
end example;

Более подробное описание атрибутов можешь найти в хелпе к Sinplify wink.gif

К сожалению это не решает проблему, только убирает глобальную цепь для сигнала, на который Дизайнер после применения данного атрибута ругается предупреждениями о том что недостаточная нагрузочная способность.

Я так понял что ruoted clock - CLKA, CLKB отличаются от HCLK, тем что эти глобальные цепи могут быть применнимы к вутренним сигналам. Поэтому привязка CLKA, CLKB к определенным выводам в этом случае не должна быть.
07.gif


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
pitbool
сообщение Jan 3 2009, 17:10
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 3-01-09
Пользователь №: 42 897



Цитата(another_one @ Jan 2 2009, 18:30) *
help.gif
В этоге распиновка этого сигнала была изменена дизайнером, вследствии привязки этого сигнала к разводимому клок буферу CLKA - дизайнер самостоятельно привязал этот сигнал к ножки CLKA.

Прошу подсказать как убрать автоматичекое перераспределение распиновки Дизайнером.


Эта проблема решилась при добавлении атрибута?

Цитата
Дизайнер при компиляции выдает предупреждения о том что производные клоки от HCLK не имют достаточной нагрузочной способностью для всех такируемых ими триггеров.


Это всего лишь пердупержение. Если бы у вас частота была около 100 мгц то на него стоило бы обратить внимание. Вообщето там написано что если есть возможность то следует использовать клоковую цепь wink.gif А вообще моделсим должен эту ситуацию отмоделировать корректно.

Цитата
Время от времени читается предыдущее регистров регистров или не все биты регистров совпадают записанному.


Два предположения:1) где-то возникает гоночная ситуация - попробуйте увеличить время между приходом данных в регистры и клоком по которому он их сохраняет.
2) или вы делаете какое-то действие во время записи в регистры в результате чего запись не производится. такое например бывает при одновременной попытке записи и чтения.

Цитата
Моделирования после разводки и имплементации не показало ошибок при записи / чтении, те которые были на практике.


Чудеса lol.gif Моделсим практически непогрешим. Все зависит от того насколько адыкватна ваша модель
Go to the top of the page
 
+Quote Post
another_one
сообщение Jan 3 2009, 20:36
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо большое за поддержку smile.gif

Цитата(pitbool @ Jan 3 2009, 20:10) *
Эта проблема решилась при добавлении атрибута?


Да, Дизайнер в этом случае не изменял netlist.


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:21
Рейтинг@Mail.ru


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