Optymalizacje.
Transkrypt
Optymalizacje.
Optymalizacja projektu Programowalne Układy Logiczne dr inż. Paweł Russek Program wykładu Zagadnienia wstępne – – Optymalizacja zasobów – – – – – – RESET Prorytety Optymalizacja logiki Optymalizacja wydajności – Register balancing Fanout RESET Bloki dedykowane Optymalne struktury obliczeniowe Clock Enable and Gated Clocks Przykład (Save 50%) Dobór układu rekonfigurowalnego Register balancing Poprawia parametry czasowe i wykorzystania powierzchni Register balancing c.d. Parametr REGISTER_BALANCING Forward register balancing Backward register balancing Replikacja i FanOut Parametr MAX_FANOUT Replikacja logiki i rejestrów ułatwia routing Duży FanOut powoduje powstawanie problemów czasowych Mały FanOut powoduje większe zurzycie zasobów Kodowanie sygnału RESET Złe użycie sygnału RESET prowadzi do: – – – – Uniemożliwia zastosowanie SRL, Uniemożliwia zastosowanie bloków dedykowanych, Uniemowliwia zastosowanie optymalizacji logicznej, Obciąża proces tworzenia połączeń ponieważ reset zazwyczaj ma duży fanout. Czy globalny reset jest konieczny Reset asynchroniczny, ale ostrożnie!!! Optymalne kodowanie FIFO code without resets on shift registers generally produces a single register on the output, which is optimal for area and performance. Bloki dedykowane a RESET Układy mnożące i BRAM mają wbudowane tylko synchronicznie kasowane rejestry „using a fully pipelined multiplier targeting a fastest Virtex™-4 device with an asynchronous reset can result in a performance of around 200 MHz. Reworking the code to use a synchronous reset can more than double the performance to 500 MHz.” Logika i asynchroniczyn RESET 1 Synchroniczny RESET i logika 1 Logika i asynchroniczyn RESET 2 Synchroniczny RESET i logika 2 Chain vs. Tree structure Bloki DSP w Vitrex 5 tworzą kolumnę zasobów Clock Enable and Gated Clocks Do bramkowania całej domeny zegarowe używać BUFGCE Dla małych obszarów FPGA używać CE rejestrów Zrezygnować z CE jeżeli to możliwe ŹLE DOBRZE Kombinacyjne pętle for-loops Pętle for-loops są rozwijane (unroll) przez kompilator. Powoduje to powstawanie dużych podsystemów kombinacyjnych Wstawić rejestr w ciele pętli, co umożliwi skrócenie ścieżek krytycznych Duże systemy kombinacyjne przekształcać potokowo Problem Synchroniczna funkcja logiczna 4 i 6 zmiennych Typowe elementy kontrolne R, S, CE Asynch. Reset, Synch. Set Synchroniczne Reset i Set Realizacja. Priorytety Realizacja 3 Oznaczenia elementów bibliotecznych Jak uzyskać dobrą implementację Zmiana układu na większy o tej samej obudowie Analizować ostrzeżenia kompilatora Stosować sygnał CE, a nie bramkowanie zegara Używanie przerzutników flip-flop zamiast zatrzasków Stosować dedykowane IP-Cores – – użycie elementów wbudowanych lub zoptymalizowana struktura Zapoznać się ze strukturą wykorzystywanego PLD Wykorzystanie dedykowanych IP Np.: DSP48E, BlockRAM Dla bloków dedykowanych stosować „pipeline registers” na we/wy (stała lokalizacja tych IP) Należy zachować równowagę pomiędzy w wykorzystaniu – – – BlockRAM vs. Distributed RAM (parametr RAM_STYLE) DSP48 vs. Slice Logic (parametr USE_DSP48) Synplify Pro: „syn_allowed_resources” Maksymalnie wykorzystać możliwości bloków dedykowanych Maximizing Design Performance forVirtex-5 FPGAsXcell Journal, Fourth Quarter 2006 Wybór układu rekonfigurowalnego CPLD vs FPGA – Efektywne wykorzystanie FPGA w 60-70% – – – – Mnożarki, DSP Pamięci Interfejsy szeregowe Konfiguracja – Dane katalogowe, a rzeczywistość Domain specific FPGA – Koszt, ulotność, szybkość ISP Rekonfiguracja (partial, dynamic) Pobór mocy Długowieczność projektu