česky english Vítejte, dnes je středa 24. duben 2024

Pokrytí kódu (code coverage) HLS přes RTL s povědomím hardwaru

05.02. 2019 | Zprávy
Autor: Radek Řezníček
CoverageHlsRtlUvodni.png

Využití HLS jazyků (C++, SystemC) přináší programování hardwaru větší abstrakci a zkracuje vývojový cyklus návrhu také díky rychlosti simulace v porovnání se simulací na úrovni RTL (100x rychlejší). Problém ovšem vyvstává v okamžiku určení pokrytí kódu testováním (code coverage), kdy je třeba využít specifické metriky, které berou v potaz i hardware.

Code coverage, tedy (míra) otestování kódu se používá v programování v běžných (HLS) jazycích stejně jako v HDL kódu pro detekci, do jaké míry byl kód (naprogramovaný výraz) otestován, zda byl v rámci testu proveden a s jakým výsledkem. Chyby můžeme testováním nalézt pouze v provedeném kódu. Pokrytí kódu (code coverage) nám navíc, k testu, zda kód obsahuje chyby, říká, jakou jeho část jsme otestovali.

HLS popíše chování za použití méně řádků kódu než RTL, i díky tomu se testování zrychlí. Dalšími výhodami jsou již zmíněná vyšší míra abstrakce, a tedy i možnost popisu širších funkcí než v případě RTL. Nicméně pro ověření takového kódu se návrháři uchylují zpět k softwarovému testování pokrytí kódu. Softwarová řešení nemají povědomí o popisovaném hardwaru, a proto nemusí poskytovat spolehlivé výsledky.

Kýženým postupem by mělo být ověření pokrytí zdrojového kódu HLS a poté stejnými testy provedenými nad RTL strukturou (generovanou tímto kódem) dosáhnout shodného pokrytí. Touto cestou funguje spojení platformy Catapult (s integrovaným systémem Calypto) s Questou RTL obojí od společnosti Mentor, a Siemens Business. Ověření pokrytí kódu s využitím těchto programů funguje v šesti krocích:

  1. Vytvoření testů pro HLS model (v C++ nebo SystemC)
  2. Spuštění Catapult Code Coverage Tool a analýzou výstupní zprávy zjistí, zde je nutné přidat další testy. Všechny měření pokrytí jsou přidávány do UCDB Questy.
  3. Catapult znovu vygeneruje RTLHLS kódu
  4. Návrhář může přidávat další testy a využít automaticky generované testovací infrastruktury ze SCVerify. Při použití Questy s code coverage se všechny měření pokrytí ukládají do UCDB.
  5. Pokud stále existují nedosažitelné části kódu je možné využít Questa CoverCheck pro dokázání nedosažitelnosti a vyřazení takového kódu z UCDB (ze simulace)
  6. Pokud je dosaženo požadovaného pokrytí RTL kódu ověřování končí, pokud ne, je potřeba přidat další testy

CoverageHlsRtl

Princip ověření pokrytí HLS kódu s povědomím hardwaru za pomocí platforem Catapult a Questa

Využití HLS jazyků na místo RTL zvyšuje produktivitu a snižuje časovou náročnost a tím i cenu návrhu hardwaru. Může být ovšem chybou využívat softwarové ověřování takového kódu, jelikož nemá povědomí o vytvářeném hardwaru. Přenos pokrytí z HLS (s povědomím hardwaru) do RTL prostřednictvím platformy Catapult je dalším krokem v navrhování hardwaru pomocí HLS.

Pro více informací si můžete prohlédnout celý článek nebo odborné pojednání o tématu.

radek@cadware.cz