Pracuję nad dużym projektem FPGA i jestem bardzo blisko limitów zasobów FPGA, którego obecnie używam, Xilinx LX16 w pakiecie CSG225.
Projekt jest również prawie ukończony, ale w tej chwili nie będzie już pasował do FPGA. Mogę wyłączyć części, aby je dopasować, jednak muszę zmniejszyć zużycie zasobów, aby ukończyć projekt i spełnić wymagania dotyczące czasu i wielkości.
Chciałbym wiedzieć, czy w naszych raportach znajdują się narzędzia, które mogą pomóc mi określić, które części mojego projektu zużywają najwięcej zasobów. Mój projekt nie jest podzielony na partycje i jest podzielony na kilkanaście lub więcej modułów VHDL.
Raporty dotyczące czasu Xilinx są fantastyczne, ale teraz muszę wiedzieć, gdzie mogę uzyskać najlepszą cenę za oszczędność miejsca.
Trudno mi też powiedzieć, z jakiego rodzaju zasobów mi się wyczerpują lub jakie są skutki tych zasobów.
Kolejną irytacją jest to, że w miarę powiększania się projektu komponenty, które były używane w celu osiągnięcia czasu, zaczynają zawodzić, ponieważ ich rozmieszczenie nie jest już tak idealne.
Obecnie korzystam z raportów statycznych dotyczących czasu post-place i trasy oraz używam SmartXplorer. Korzystam ze strategii projektowania, aby zoptymalizować czas.
Po wyłączeniu części mojego projektu, aby go dopasować, oto kilka wyników:
wykorzystanie rejestru wycinków: 42% wykorzystanie wycinków LUT: 96% liczba w pełni wykorzystanych par LUT-FF: 38% Czy to oznacza, że jestem lekki w rejestrach, ale intensywny w korzystaniu z bramki?
Czy istnieją narzędzia, które pomogą programistom zoptymalizować obszar, a przynajmniej dać im lepszy wgląd w kod?
Aktualizacja: Po przyjrzeniu się wykorzystaniu poziomu modułu dowiedziałem się, że mam małe asynchroniczne fifos fifos w całym miejscu, które zajmują około 30% wszystkich LUT. Używam ich jako kleju w domenie krzyżowej dla szybkich autobusów. Powinienem być w stanie je wyeliminować, ponieważ zegary są ściśle powiązane. (Wejście 120 MHz, produkuje 100 MHz i 200 MHz przez DCM)