Pomoc Jak rozwiązać problem z limitami czasu?

C

cherjier

Guest
Cześć,

Czy trudno jest się FPGA uruchomić na 200Mhz?Mam trudności dostać FPGA przyspieszenia.

poniżej raportu:
Slack:-7.451ns (wymóg - (ścieżka danych - pochylanie ścieżka zegar niepewności))
Źródło: core / LCD / lcd_read / datcnt [2] (FF)
Miejscowość: core/lcd/lcd_fifo/shft_buff2 [623] (FF)
Wymagania: 3.906ns
Data Path Delay: 11.240ns (Poziomy logiczne = 4)
Clock Skew Path: 0.000ns
Źródło Godzina: LCLK rośnie 0.000ns
Destination Godzina: LCLK rośnie 3.906ns
Niepewność Godzina: 0.117ns

Data Path: core / LCD / lcd_read / datcnt [2] do core/lcd/lcd_fifo/shft_buff2 [623]

Lokalizacja | typu Delay | Opóźnienie (ns) zasoby fizyczne | Logiczne Resource (s) |
------------------------------------------------- -- ------------------
SLICE_X104Y283.YQ | Tcko | 0,360 | core / LCD / lcd_read / datcnt [5]
core / LCD / lcd_read / datcnt [2] |

SLICE_X104Y282.G1 | netto (fanout = 4) | 0,573 | core / LCD / lcd_read / datcnt [2] |

SLICE_X104Y282.Y | Tilo | 0,195 | TP40_c
core/lcd/lcd_read/un7_enab_shft_bufflto3

SLICE_X104Y282.F4 | netto (fanout = 3) | 0,164 | core/lcd/N_341

SLICE_X104Y282.X | Tilo | 0,195 | TP40_c
core / LCD / lcd_read / enab_shft_buff

SLICE_X101Y183.G4 | netto (fanout = 1025) | 3,489 | core / LCD / enab_shft_buff

SLICE_X101Y183.Y | Tilo | 0,194 | core/lcd/lcd_fifo/shft_buff2 [1081]
core/lcd/lcd_fifo/svbl_244.shft_buff2_5_sn_m1

SLICE_X123Y259.F1 | netto (fanout = 1088) | 5,835 | core/lcd/lcd_fifo/shft_buff2_5_sn_N_2

SLICE_X123Y259.CLK | Tfck | 0,235 | core/lcd/lcd_fifo/shft_buff2 [623]
core/lcd/lcd_fifo/svbl_244.shft_buff2_5_0_1 [623]
core/lcd/lcd_fifo/shft_buff2 [623]
------------------------------------------------- -- --------------------------
Razem 11.240ns (1.179ns logiki 10.061ns trasie)
(10,5% logiki, 89,5% trasy)

I Sprawozdanie widać, że głównym opóźnienie jest ze środków routingu.może ktoś zaproponować mi sposób, w jaki sposób poprawić na czasie?Czy muszę to zrobić za pomocą FPGA Editor?

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Płaczący lub bardzo smutny" border="0" />
 
Cztery poziomy logiczne 200 MHz może być łatwo, a może być trudne.Jakiego rodzaju FPGA to jest?

fanout = 1025, fanout = 1088 ---- Wow, dlaczego tak wiele?Czy można zerwać tych sieci?

Ogólnie rzecz biorąc, najbardziej skutecznym sposobem na przyspieszenie projektu jest dodanie potoku.

Typowe urządzenia LCD nie potrzebują 200 MHz.

 
Używam vertex4.

wysokiej fanout wynika z rejestru pliku FIFO -> reg [1023:0] shft_buff;

"enab_shft_buff" sieć jest sygnał sterujący do zmiany "shft_buff2"
Myślę, że to dlatego, że miał wysokie fanout, Am I correct?

na ogół, fanout nie powinna przekraczać wartości?Kilkaset jest za dobrze?

Poza tym, nazwa LCD nie jest przeznaczony dla wyświetlacza LCD tylko korzystać z tego samego krótki formularz.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />Dlatego FPGA należy uruchomić na 200Mhz, ponieważ kontroler pamięci DDR mem należy uruchomić na 133MHz.

Można u pokazać prosty przykład jak dodać potoku ..dziękuję

 
wynik <= a b c dpotokowego

if (clk = '1 'i clk'event), a następnie
R1 <= a b;
r2 <= c d;
wynik <= r1 r2
end if;
end process;

 
Virtex-4 jest dość szybki, ale sygnału wysokiej fanout może spowolnić trasy i może powodować problemy z harmonogramu.Szybszy zegar, tym mniej fanout chcesz.Twój projekt może mieć logiki kombinatorycznej karmienia wysokiej sygnał fanout.Jeśli to prawda, próby modyfikowania projektu tak wysokiego sygnału fanout pochodzi z zegarem rejestru zamiast od logiki kombinatorycznej.To będzie prawdopodobnie wymagało dodawania innych rejestrów i przeprojektowanie timing diagram, ale to co rurociąg przede wszystkim o jak Iouri wykazać.Zarejestruj jazdy sygnału wysokiej fanout ma większe szanse na ograniczenia czasowe spotkania.Rejestr może być łatwo powielane (miejmy nadzieję automatycznie miejsce i oprogramowanie trasy), aby zmniejszyć fanout obciążenia dla każdego segmentu.

Czasami tworzę małe projekty badań, które sprawdzają wydajność mały kawałek logiki, bez konieczności oczekiwania na oprogramowanie do kompilacji mój wielki projekt.Jeśli to brzmi pomocne, spróbuj utworzyć mały projekt test, który sprawdza tylko fanout problemu.Gdy znajdziesz dobre rozwiązanie, można włączyć go do dużego projektu.

 
najpierw muszę dzięki Iouri i echo47.

tak .. faktycznie ... łamanie Fanout pomogło poprawić czas ... thank you very much.

teraz mi tego sprawozdania:
Slack:-1.366ns (wymóg - (ścieżka danych - pochylanie ścieżka zegar niepewności))
Źródło: core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1 (FF)
Miejscowość: core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4] (FF)
Wymagania: 7.575ns
Data Path Delay: 8.821ns (Poziomy logiczne = 7)
Clock Skew Path: 0.000ns
Źródło Godzina: TP17_c rośnie 0.000ns
Destination Godzina: TP17_c rośnie 7.575ns
Niepewność Godzina: 0.120ns

Data Path: core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1 do core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4]
Lokalizacja Delay typu Delay (ns) zasoby fizyczne
Logiczne Resource (s)
------------------------------------------------- -- ------------------
SLICE_X52Y168.YQ Tcko 0,360 core/vsync_m_d2
core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1
SLICE_X58Y260.G3 netto (fanout = 16) 1,737 core/vsync_m_d1
SLICE_X58Y260.Y Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/N_81_2
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr_clr_cond_i_o2_1
SLICE_X60Y279.G3 netto (fanout =

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chłodny" border="0" />

0.875 core/N_81_0_1
SLICE_X60Y279.Y Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3_2
SLICE_X60Y279.F3 netto (fanout = 1) 0,213 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3_2
SLICE_X60Y279.X Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
SLICE_X62Y303.F3 netto (fanout = 2) 0.863 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr119_3
SLICE_X62Y303.X Tilo 0,195 core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
SLICE_X64Y303.F2 netto (fanout = 21) 0,844 core/pln_b/pln_shift/pln_shift_ctl/N_81_1_i
SLICE_X64Y303.COUT Topcyf 0,576 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3] / O
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_qxu_s1 [2]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [2]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3]
SLICE_X64Y304.CIN netto (fanout = 1) 0,000 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_cry_s1 [3] / O
SLICE_X64Y304.XMUX Tcinx 0,435 core/pln_b/pln_shift/rd_ptr1_10 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_s1 [4]
Netto SLICE_X63Y306.G4 (fanout = 11) 1,115 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_s1 [4]
SLICE_X63Y306.Y Tilo 0,194 core/pln_b/pln_shift/rd_ptr1_11 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_m [4]
Netto SLICE_X63Y311.BY (fanout = 7) 0.537 core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_s_m [4] / O
SLICE_X63Y311.CLK Tdick 0,292 core/pln_b/pln_shift/rd_ptr1_15 [4]
core/pln_b/pln_shift/pln_shift_ctl/rd_ptr1_15 [4]
------------------------------------------------- -- --------------------------
Razem 8.821ns (2.637ns logiki 6.184ns trasie)
(29,9% logiki, 70,1% trasy)

i uważam, że jest to ścieżka krytyczna i poziom logiki 7.
Czy mogę ustawić ograniczenia tak:
NET "core/pln_b/pln_shift/pln_shift_ctl/vsync_m_d1" TNM_NET = "CP_1";
NET "core / pln_b / pln_shift / pln_shift_ctl / rd_ptr *" TNM_NET = "CP_2";
Timespec "TS01" = Od: "CP_1" To: "CP_2": 7,575;

nie powyżej linii poprowadzi narzędzia PAR na trasie tej ścieżki, aby sprostać czasie?

 
PAR już wie, że wymóg 7.575ns, więc prawdopodobnie nie pomoże ograniczyć go ponownie.PAR to widocznie problem z wszelkimi logika tylko 7.575ns.Jednakże, jest to całkiem blisko, 8.821ns, więc może pomóc osiągnąć poprzez umożliwienie zamknięcia terminu "czas napędzane mapowania" lub umożliwienie dodatkowe miejsce i wysiłku trasy.Są to opcje w ISE Project Navigator (które nie używam) i odpowiada narzędzi wiersza polecenia.

Jeśli możesz podzielić tak długo kombinatoryczne ścieżki rejestru rurociągu, która może rozwiązać ten problem.Na 7.575ns, kilka poziomów logiki powinny być dobre, ale siedem może być zbyt wiele, chyba wszystkie odcinki są bardzo krótkie.Kiedy muszę iść bardzo szybko umieścić tylko jeden poziom logiki pomiędzy rejestrami rurociągu.

Spróbuj też analizy układu FPGA Editor w celu sprawdzenia, czy logika jest ustawione na chybił trafił.Jeśli jeszcze tego nie zrobiłeś żadnych floorplanning lub ograniczenia miejsca, to może być problem.Placer nie jest bardzo silny, w zasadzie zrzuca wszystkie logiki w jeden wielki stos, ruchy małe rzeczy wokół poprawy czasu, a następnie próbuje trasie wszystko.Zwykle generuje kilka długich tras ze zbyt dużym opóźnieniem propagacji.Czasami mogę dokonać znaczącego wzrostu wydajności poprzez ograniczenie krytycznych modułów HDL do małych prostokątnych regionów, a następnie umieść tych regionów blisko siebie, tak przepływów danych między nimi drogi stosunkowo krótki.Jeśli nie masz jeszcze zbadać te techniki, spodziewać się spędzić trochę czasu na eksperymentowanie i uczenie się.

 
Oh I see ...Tak, wiem, że można użyć terminu napędzany map i korzystania z wielu iteracji w PAR.ale to ustawienie będzie wzdłuż czas ISE, aby zakończyć zadanie.tak chciałbym zbadać nawet szczegóły w ustaleniu przyczyny problemu i mam nadzieję, zdobywać doświadczenie na ustawienie ograniczeń.

rzeczywiście starałem Przegląd redaktora FPGA Szkoda, że nadal nie odkrywać coś na nim jeszcze.Tak, nie zrobił żadnych ograniczeń powierzchni w momencie i to może być przyczyną (co i dunno, jak ustawić ograniczenia obszaru).

Mam pytanie dotyczące na floorplanning i pośrednictwa pracy.
do u edytować floorplanning na FPGA Editor lub za pomocą Floorplanner?
lub po prostu ustawić ograniczenia przestrzeni zrobi?

Poza tym, "tworzenie małych projektów test, który sprawdza wydajność mały kawałek logiki" jest to dobry pomysł ... ale nie mam jak to zrobić?pisania kodu HDL?czy ..?jak testować wydajność fragment logiki?

Dziękujemy za pomoc i dzielenie się swoim doświadczeniem, echo47 ...

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Tak, te dodatkowe opcje starań nie spowalniają się i proces połączenia, ale warto, jeśli to pomaga osiągnąć zamknięcia terminu.Narzędzia Xilinx niestety jeszcze nie wykorzystują wielu komputerów, procesorów, więc należy używać najszybszy komputer można znaleźć.Upewnić się, że ma wystarczającą ilość pamięci RAM, ponieważ na wyczerpaniu pamięci spowoduje okropne spowolnienie.Oto kilka zaleceń pamięci:
http://www.xilinx.com/ise/products/memory.htm

Wiele osób korzysta z floorplanner, ale nigdy nie próbował.Używam FPGA Editor oszacować w przybliżeniu, gdzie chcę się moje krytyczne modułu.Pragnę zauważyć, współrzędne XY w tym regionie, a następnie zastosować ograniczenia LOC (w moim HDL lub plik UCF) w celu ograniczenia modułu plasterki, RAMB16s i MULT18X18s (lub cokolwiek szczególności zastosowań FPGA) do tego prostokątny obszar.

Moje projekty badań są zaledwie kilka linijek kodu HDL, które koncentrują się na jednym konkretnym problemem.Na przykład, mogę napisać kod, który po prostu tworzy długie netto z ogromnym fanout, a następnie próbuję różnych ograniczeń miejsca i opcji trasy i zmian projektu, aż znajdę dobrej drodze do osiągnięcia wymaganej wydajności.Czasami również zbadać, w wyniku układu FPGA Editor.Dużo łatwiej i szybciej się próby eksperymentów na mały projekt badań niż mój wielki projekt.

Narzędzia Xilinx nie zawsze są bardzo inteligentne, więc będziesz czasami konieczność stosowania ograniczeń lub mądre zmiany projektu pomocy narzędzi tworzenia układu o właściwym działaniu.Dobrą wiadomością jest to narzędzia zwykle trochę mądrzejszy z każdą kolejną wersją.

 
Niedawno miałem zmodernizowane mojej pamięci do 2gig .. Myślę, że to wystarczy teraz.

Myślę, że może zaistnieć potrzeba, aby spędzić trochę czasu explorering floorplanner i redaktor FPGA ...Czy istnieje jakiś tutorial na Xilinx stronie?

Po ustawieniu map drivin czasu ... to nic nie wydaje się czas było spotkać:
-------------------------------------------------- -------------------------------------------------- --
Ograniczenie | wymagane | Aktualne | Logic | bezwzględna | Liczba
| | | Poziomy | parafinowy | błędy
-------------------------------------------------- -------------------------------------------------- --
TS_pll_sdram_sys_clk_dcm_0_CLK0_BUF = PER | 7.575ns | 7.573ns | 8 | 0.002ns | 0
Magique TIMEGRP "pll_sdram_sys_clk_dc | | | | |
m_0_CLK0_BUF "TS_pll_mclk_dcm_0_CLK2X_BUF | | | | |
WYSOKA 50% | | | | |
-------------------------------------------------- -------------------------------------------------- --
TS01 = MAXDELAY Z TIMEGRP "CP_1" DO TI | 7.575ns | 7.570ns | 8 | 0.005ns | 0
MEGRP "CP_2" 7,575 ns | | | | |
-------------------------------------------------- -------------------------------------------------- --

ale pozytywne slack jest naprawdę przypływ ... tylko 0.002ns ... będzie to za ok?

 
Nie widziałem żadnych podręcznikach na te tematy, ale niech szukają.Mogą istnieć, być może jako samouczki wideo.

Wygląda na to czas napędzane mapowania worked fine.Jest to często można zauważyć czas spełnione przez wąski margines.Gdy router osiąga czas, przestaje próbować.Nie ma sprawy, uważa, że najgorszym przypadku napięcia, temperatury i zmian procesu, więc urządzenie powinno działać niezawodnie.

Przy okazji, jeśli 7.575ns zegar pochodzi z zdenerwowanie źródła, takie jak DCM lub hałaśliwym oscylatora zewnętrznego, to być może trzeba określić surowsze ograniczenia czasowe, które obejmują najbardziej jitter okres przypadku.Narzędzia ISE automatycznie rozważyć kilka czynników wewnętrznych, ale nie ze źródeł zewnętrznych.Więcej info:
http://www.xilinx.com/support/answers/24217.htm

 
hum .... jak środek i jest jitter zegara zegar pinowe wejście FPGA? ma też specjalnego sprzętu?

Poza tym, mam pytanie dotyczące na podkładce tp zegara i pad do ustawienia zegara.
na UCF, użytkownik musi ustawić wyrównanie za każdym szpilki?lub każdego FFS?sorry I'm abit mylić jej.

 
Zazwyczaj najłatwiej odczytać wartość jittera z karty bez względu na urządzenie generuje zegar.Jeśli jest to konwencjonalny oscylator kryształ, to prawdopodobnie ma bardzo niski jitter, można go zignorować.

Mniejsza fluktuacja, tym trudniej jest zmierzyć.Dla szybkiego oszacowania, jeśli masz wystarczająco szybko zakresu przechowywania, wystarczy wywołać na zegar i pomiaru szerokości pasma rozmyte w następujących krawędź zegara.Różni producenci mają odnotowuje wniosek o "jitter pomiaru.Spróbuj wyszukiwania w Google dla tych dwóch słów kluczowych, a znajdziesz kilka od razu.

Jeśli aplikacja wymaga FPGA margines czasu na wejście i wyjście szpilki, należy zastosować ograniczenia do wyrównania tych sygnałów.W swoim Ograniczenia, zobacz rozdział "Czas Ograniczenie Strategies", a opis ograniczeń offset.Więcej informacji w Xilinx Biała księga 237, "Jakie są OFFSET ograniczeń?"
http://www.xilinx.com/support/documentation/white_papers/wp237.pdf

 

Welcome to EDABoard.com

Sponsor

Back
Top