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

Podobne dokumenty