Отговори на тема  [ 9 мнения ] 
FPGA/HDL design & timing analysis... управление от сорса 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение FPGA/HDL design & timing analysis... управление от сорса
Значи имам едни често срещани проблеми, дето се появяват на всички тулове и на всички HDL-и и нещо не мога да ги реша...

Примерно пускам анализ на дизайна и то ми бълва всевъзможни предупреждения. Полезно нещо.... Само че много от нещата дето то смята за проблем, не са проблем. Да кажем че в FPGA-то съм направил разни периферии и те се ползват от хост процесор чрез контролни регистри. Така регистрите се ползват в два клок домейна. Веднъж в клока на хост шината, веднъж в клока на конкретната периферия.
Обикновено основния клок е на шината, щото там се четат и пишат регистрите. А перифериите само четат (ползват) регистрите.

На теория след като имам два клок домейна, би трябвало да синхронизирам... Да ама аз не искам да хабя ресурси, щото това са конфигурационни регистри и хоста ги сетва само когато периферията е изключена. С две думи регистъра се промяна само от единия клок домейн и то само когато другия клок домейн е мъртъв.
Няма конфликти, но няма и начин как да укажа на тула да не ми дава warning за тия регистри. За съжаление имам десетки регистри, повечето 32-битове и така ми се бълват стотици ненужни warnings. А пък съществените предупреждения (тъй като се стремя да ги изчиствам) обикновено са само няколко.
Просто ужас - търся няколко предупреждения в купа от плява...

Все ми се струва, че би било редно да мога да укажа по някакъв: "за тоя сигнал не давай такива предупреждения", или пък с нещо като #pragma да включвам/изключвам анализа..

Подобни проблеми се получават и при тайминг анализа. Примерно когато имам мултиплексиране или гейтване на клоци... Тръгва да ми квичи, че това можело да направи глитчове, отделно че след тая точка във веригата целия тайминг анализ става кофти. Пак няма лошо... нека да ги хваща такива неща. Естествено ще има проблем, ако почна да си сменям клока в "движение" ще има глитчове и т.н. Но в случая аз си ги знам и перифериите никога не се конфигурират в движение...

Търсих и някаква литература да видя как другите решават тия проблеми на практика. Но не намирам... Навсякъде като се стигне до проблем - хоп теоретично решение. Ми не ща теории....аз знам как е на теория, ама не искам да е така ;-)


Чет Сеп 24, 2009 11:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
уф намерих как се изключват определени warinigs за определени сигнали... къде ли съм блял досега ;-)


Чет Сеп 24, 2009 12:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Някои софтуерища не анализират cross-clock области за тайминг. Xilinx имат опции да изключиш принудително определени пътища - "false paths".

http://www.xilinx.com/itp/xilinx10/iseh ... _paths.htm
http://www.xilinx.com/itp/xilinx10/iseh ... y_nets.htm


Чет Сеп 24, 2009 5:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Те това да ходиш из разни джамове много ме дразни ;-)

За щастие при алтера открих начин да го правя в сорса:

Код:
   attribute altera_attribute: string;

   signal MY_SIGNAL    : std_logic;   
   attribute altera_attribute of MY_SIGNAL :signal is "disable_da_rule=D101";   


В случая изключвам правило D101 , което изисква синхронизация между домейни, но общо взето мога да изключвам доста правила ... Но уви, няма атрибути за всичко. Примерно не мога да кажа дали даден сигнал е клок или не. Нещо толкова елементарно. Трябва да ходя из джамовете да задавам клоците. Тъпотия... после пипвам тук-там из сорса, преименувам нещо, изтривам друго и ходи да се ровиш из джамове дето листва 100-на сигнала.

Странно е, че тия неща не са стандартизирани....


Чет Сеп 24, 2009 5:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Забрави ги джамовете - това е за кликачите. :) Резултатът от това кликане са редове в UCF файла. Загледай UCF guide-а по темата ("cgd.pdf"). Това което търсиш май беше "TIG" (Timing ignore).
http://www.xilinx.com/itp/xilinx7/books ... 9_140.html


Чет Сеп 24, 2009 5:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
woody, то и при алтера всички джамове се свеждат до разни конфигурационни файлове, включително има възможност за скриптове, така че настройките могат да се изчисляват и он дъ флай...

Но.... аз бачкам на VHDL и искам всичко да е на VHDL, а не скриптове, джамове или разни конфигурационни файлове. Най-малкото не искам да се обвързвам с туловете на определен вендор. Аз даже си бачкам от Еклипс - там имам и refactoring и всякакви гъдели. Затова и всичко гледам да ми е в сорсовете - като пусна търсене за даден сигнал да видя **всичко** за него - на кой пин е, какви атрибути има и т.н.


Както и да е сега се боря с разни други недомислици...

Код:
The reset signal that is generated in one clock domain and is used in the other clock domain, should be synchronized


Звучи прекрасно, само че ми го дава за асинхронен ресет на ФИФО. Като готовия компонент няма опции за синхронен ресет - само асинхронен. Естествено фифото има два различни клока... Ако синхронизирам ресета по единия клок ми дава грешка за другия. Просто красота :-)


Чет Сеп 24, 2009 6:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Е ти искаш всичко в сорса - не става и не бива така. :) Както и с HLL - имаш си програма, отделно build и линкерси и т.н. скриптове.
Аз дори документация в сорса считам за вид сектанство. :D


Чет Сеп 24, 2009 6:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Атрибутите и предупрежденията за които говоря са заложени от сорса и не зависят от това какъв тул ползваш или каква матричка. Затова и мястото за тяхното управление е точно сорса.

Все пак всеки уважаващ себе си специалист гледа да разбива сложните проекти на по-прости модули и голяма част от тези модули се правят така, че да могат да бъдат използвани многократно.
Представи си, че вземеш някакъв сорс от някъде и той ти осере пейзажа с хиляди безсмислени предупреждения. Кофти нали ;-)

Разбира се, един добре написан сорс не дава предупреждения. Но това се постига с цената на преразход на ресурси. Както казах, аз не искам да утроявам броя на използваните клетки само защото регистъра ми се ползва от друг клок домейн.


Чет Сеп 24, 2009 8:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Това което конкретно искаш да постигнеш се прави "истински" чрез false path м/у два clock domain-а с помоща на подходящо именуване и wildcards.


Пет Сеп 25, 2009 2:21 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни