Rodzina układów FPGA PolarFire® System-on-Chip Field-Programmable Gate Array (SoC FPGA) firmy Microchip implementuje łącznie pięć procesorów SiFive U54 i SiFive E51 64-bit RISC-V. Przy użyciu odpowiednich narzędzi do debugowania opanowanie wielordzeniowego debugowania RISC-V całego stosu oprogramowania, w tym systemów operacyjnych, aplikacji i dodatkowych rdzeni programowych w logice FPGA, nie jest niczym trudnym.
Rodzina układów FPGA PolarFire® SoC zapewnia połączenie niskiego poboru mocy, sprawności cieplnej i bezpieczeństwa dla inteligentnych, połączonych systemów. Implementuje deterministyczny, spójny klaster procesora RISC-V i deterministyczny podsystem pamięci L2 do budowania aplikacji Linux® i czasu rzeczywistego przy użyciu systemu operacyjnego czasu rzeczywistego (RTOS), takiego jak Zephyr™ OS. Aby debugować tak złożony wielordzeniowy system, w tym systemy operacyjne, w sposób efektywny czasowo i kosztowo, potrzebne są odpowiednie procedury i narzędzia.
Rodzina układów FPGA PolarFire SoC firmy Microchip Technology przyspiesza i ułatwia realizację wysoce zintegrowanych projektów przy zużyciu energii niższym nawet o 50% w porównaniu z alternatywnymi układami FPGA. Oprócz logiki FPGA implementuje wzmocniony podsystem mikroprocesora składający się z rdzenia monitora SiFive E51 RISC-V RV64IMAC i czterech rdzeni aplikacji SiFive U54 RISC-V RV64GC. U54 obejmuje obsługę wielu rdzeni uzupełnioną o jednostkę zarządzania pamięcią (MMU) i spójność pamięci podręcznej. 64-bitowy procesor E51 pełni funkcję rdzenia zarządzającego i jest w pełni spójny z głównymi rdzeniami U54.
Rdzeń U54-MC RISC-V jest idealny do aplikacji wymagających pełnego wsparcia systemu operacyjnego, takich jak AI, uczenie maszynowe, sieci, bramy i inteligentne urządzenia IoT. Można śmiało powiedzieć, że RV64GC ISA stał się standardem dla urządzeń RISC-V opartych na systemie Linux.
Rysunek 1: Konfiguracja w czasie rzeczywistym w PolarFire SoC FPGA. Źródło: Lauterbach.
Wreszcie, deweloperzy mogą implementować dodatkowe procesory jako soft core w logice FPGA, np. soft CPU IP MiV_RV32, który może być używany jako podstawa dla systemów operacyjnych innych firm, takich jak SAFERTOS® firmy WITTENSTEIN.
Podsumowując, odpowiednie środowisko debugowania i śledzenia dla układów FPGA PolarFire SoC musi być w stanie objąć wszystkie te scenariusze. Jako wiodący na rynku zestaw narzędzi do debugowania i śledzenia, TRACE32® firmy Lauterbach oferuje wszystko, czego potrzebują projektanci, aby spełnić wszystkie te wymagania i debugować złożone systemy w sposób efektywny czasowo i kosztowo.
Otwarty charakter RISC-V i zróżnicowany ekosystem stwarzają wyjątkowe wyzwania dla aplikacji debugowania. Aby uniknąć proliferacji zastrzeżonych interfejsów debugowania, grupa robocza w ramach RISC-V Foundation zdefiniowała standard debugowania, który został przyjęty przez Microchip dla rodziny PolarFire. Lauterbach, światowy lider w dziedzinie narzędzi do debugowania i śledzenia, jest strategicznym członkiem RISC-V Foundation od momentu jej powstania i wniósł znaczący wkład w standard debugowania w ramach grupy roboczej.
Najważniejszą funkcją debugowania układów FPGA PolarFire SoC jest oczywiście niemal nieograniczone wsparcie wielordzeniowe (rysunek 2). Dzięki narzędziom TRACE32 firmy Lauterbach programiści mogą debugować i kontrolować rdzenie RISC-V w niemal dowolnej kombinacji, nawet z innymi architekturami procesorów, za pośrednictwem pojedynczego interfejsu debugowania JTAG. Niezależnie od tego, jaki typ systemu wielordzeniowego jest używany, TRACE32 obsługuje je wszystkie. TRACE32 obsługuje pełne wsparcie on-chip breakpoint, dostęp do pamięci w czasie wykonywania, programowanie flash i liczniki benchmarków. Wszystko jest skryptowalne, co ułatwia programistom automatyzację testów.
Rysunek 2: Debugowanie wielordzeniowe wszystkich pięciu procesorów RISC-V w układzie FPGA PolarFire SoC. Źródło: Lauterbach GmbH.
Po drugie, ważne jest, aby móc debugować cały stos oprogramowania. Jeśli używasz różnych systemów operacyjnych (np. RTOS + Linux) i wielu aplikacji, znalezienie błędów może być trudne. Debugowanie uwzględniające system operacyjny TRACE32 firmy Lauterbach zapewnia krytyczny wgląd w aplikacje i systemy operacyjne, na których działają, niezależnie od tego, czy są to rozbudowane systemy operacyjne, takie jak Linux, systemy operacyjne czasu rzeczywistego, takie jak Zephyr OS, czy mieszanka obu. Debugowanie uwzględniające system operacyjny TRACE32 może wyszukiwać i wyświetlać wszystkie obiekty systemu operacyjnego, takie jak wątki, kolejki komunikatów i inne. Dzięki temu inżynierowie mogą lepiej zrozumieć, jak się zachowują i jak wykorzystują zasoby układu.
Na koniec, ocena odpowiedniego narzędzia do debugowania nie powinna być wyzwaniem. Unikalny i wyrafinowany wyszukiwacz układów Lauterbach pozwala znaleźć wszystkie odpowiednie produkty w ciągu zaledwie kilku sekund (rysunek 3).
Rysunek 3: Wyszukiwanie chipów w Lauterbach. Źródło: Lauterbach GmbH.
W złożonych systemach zrozumienie zachowania programu nie jest łatwe. Nic dziwnego, że oprogramowanie w takich systemach czasami nie zachowuje się zgodnie z oczekiwaniami. Może to być spowodowane wieloma czynnikami, w tym interakcjami z innymi rdzeniami, oprogramowaniem, urządzeniami peryferyjnymi, zdarzeniami w czasie rzeczywistym, słabymi implementacjami lub kombinacją wszystkich powyższych.
Nie zawsze można użyć debugera do obserwacji zachowania działającego systemu, ponieważ jest on inwazyjny. Ważne jest zapewnienie widoczności wykonywania programu. Jednym ze sposobów na to jest śledzenie procesora. Można go użyć do ustalenia, gdzie znajdował się kod, ustalenia, ile czasu to zajęło, analizy przełączeń zadań i przerwań oraz generowania raportów pokrycia kodu. Jeśli tradycyjne debugowanie postrzegasz jako serię migawek, to debugowanie oparte na śledzeniu jest filmem z sygnaturą czasową.
Aby umożliwić śledzenie w czasie rzeczywistym, układy FPGA PolarFire SoC implementują koder śledzenia RISC-V Tessent Embedded Analytics (dawniej UltraSoC), który był obsługiwany przez firmę Lauterbach od samego początku. Za pomocą TRACE32 CombiProbe można nawet śledzić rdzenie procesora Hard-IP SiFive i jednocześnie debugować softcore w logice FPGA (patrz rysunek 4). Średnia prędkość przesyłania strumieniowego 140 MB/s zapewnia niezawodne transfery bez utraty danych. Podczas korzystania z funkcji wyszukiwania chipów Lauterbach, CombiProbe jest również wyświetlany w ciągu kilku sekund.