Metodika univerzálního ověřování - Universal Verification Methodology
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Březen 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The Metodika univerzálního ověřování (UVM) je standardizovaná metodika pro ověřování integrovaný obvod vzory. UVM pochází hlavně z OVM (Otevřená metodika ověřování ), který byl z velké části založen na eRM (e Metodika opětovného použití) pro e Verifikační jazyk vyvinutá společností Verisity Design v roce 2001. Knihovna tříd UVM přináší do systému mnoho automatizace SystemVerilog jazyk, jako jsou sekvence a funkce automatizace dat (balení, kopírování, porovnávání) atd., a na rozdíl od předchozích metodik vyvinutých nezávisle prodejci simulátorů, je standardem Accellera s podporou více prodejců: Aldec, Cadence, Mentor Graphics a Synopsys.
Dějiny
V prosinci 2009 se konal technický podvýbor Accellera - organizace pro normalizaci v EU elektronická automatizace designu (EDA) průmysl - hlasovalo pro založení UVM a rozhodlo se založit tento nový standard na metodě otevřeného ověřování (OVM-2.1.1),[1] metodika ověřování vyvinutá společně v roce 2007 do roku 2006 Cadence Design Systems a Mentor Graphics.
21. února 2011 společnost Accellera schválila verzi UVM 1.0.[2] UVM 1.0 obsahuje Referenční příručku, Referenční implementaci ve formě a SystemVerilog knihovna základní třídy a uživatelská příručka.[2]
Továrna
A továrna je běžně používaný koncept v objektově orientovaném programování. Je to objekt který se používá pro vytvoření instance dalších objektů. Existují dva způsoby, jak zaregistrovat objekt v továrně UVM. V deklaraci třídy A lze vyvolat registrační makra `uvm_object_utils (A) nebo` uvm_component_utils (A). Jinak lze k mapování řetězce B na třídu typu A použít makra `uvm_object_registry (A, B) nebo` uvm_component_registry (A, B). [3]. Továrna UVM poskytuje řadu metod vytváření, které umožňují uživateli vytvořit instanci objektu s konkrétním názvem instance a registrovaným typem [4].
Sekvencer
Sekvencer je zodpovědný za tři hlavní funkce:
- Umístěte DUV (Design Under Verification) a ověřovací prostředí do stavu inicializace
- Konfigurace ověřovacího prostředí a DUV
- Celá generace scénářů DUV
Inicializace
V této fázi by měl být DUT (testované zařízení) a prostředí, ve kterém se nachází, nastaveny na požadované podmínky před simulací. Pravděpodobně to zahrnuje:
- Načítání paměti s jakýmkoli typem potřebných počátečních podmínek
- Pin nastavení na DUT, jako je výkon a vysoká impedance
- Zaregistrujte nastavení, která nelze během simulace změnit, například bitů režimu nebo pokud je součástí reg. Prostředí
- Nastavení ověřovacích komponent, které nelze během simulace změnit
Srovnávací přehled
Popis
Výsledkovou tabulku lze implementovat různými způsoby. Obecně řečeno, srovnávací přehled bere vstupy a výstupy z DUT, určuje, jaký by měl být vztah vstup-výstup, a posuzuje, zda DUT dodržuje specifikaci. Tento vztah vstup-výstup často určuje model, který se nazývá prediktor [5]. Prediktor může být implementován v programovacím jazyce vyšší úrovně, jako je SystemC.
Podrobnosti implementace
Třídy skóre UVM jsou implementovány jako podtřídy třídy uvm_scoreboard, která sama o sobě je podtřídou uvm_component. uvm_scoreboard je prázdná tabulka pro implementaci hodnotící tabulky. Obsahuje pouze jednu metodu třídy, konkrétně metodu „nového“ konstruktoru. Zbytek implementace je definován uživatelem [6].
Činidlo
Popis
V moderním VLSI může mít DUT více rozhraní. Každé z těchto rozhraní může mít přidružené různé objekty UVM. Například pokud je DUT plný čip, mohou existovat samostatná rozhraní pro PCI, Ethernet a další komunikační standardy. Srovnávací tabulka a monitor rozhraní PCI se budou lišit od výsledků u rozhraní Ethernet. Různé objekty UVM lze uspořádat jako členy třídy obálky známé jako agent. Pasivní agenti budou analyzovat pouze hodnoty portů rozhraní a měli by obsahovat člena monitoru. Aktivní agenti budou řídit porty a měli by obsahovat člena ovladače, možná kromě člena monitoru [7].
Podrobnosti implementace
Třídy agentů UVM jsou implementovány jako podtřídy třídy uvm_agent, která sama o sobě je podtřídou uvm_component. Stejně jako uvm_scoreboard je uvm_agent odlehčený z hlediska metod třídy. Jedinými metodami třídy jsou konstruktor „new“ a metoda „get_is_active“. Pokud se agent používá k řízení portů, get_is_active vrátí UVM_ACTIVE. Jinak get_is_active vrátí UVM_PASSIVE.
Řidič
Popis
Sekvenční položky pro test jsou popsány abstraktně. Například pokud je DUT soubor registru, může mít porty pro adresu pro čtení a adresu pro zápis. Objekt položky sekvence může mít členské proměnné pro adresu pro čtení a adresu pro zápis. Tyto hodnoty se však musí nakonec stát bity na vstupních pinech do DUT [8]. Může se dokonce použít exotické kódování, když se poskytuje stimul pro DUT, který by měl být abstrahován od zbytku agenta. Odpovědností řidiče je převzít tyto položky sekvence a poskytnout správný stimul portům DUT [5].
Podrobnosti implementace
Třídy ovladačů UVM jsou implementovány jako podtřídy třídy uvm_driver, která je sama o sobě podtřídou uvm_component [6].
Definice
- Agent - kontejner, který emuluje a ověřuje zařízení DUT
- Blokování - Rozhraní, které blokuje úkoly z jiných rozhraní, dokud není dokončeno
- DUT - Testované zařízení, co vlastně testujete
- DUV - zařízení se ověřuje
- Komponenta - Část ověření intelektuálního vlastnictví, která má rozhraní a funkce.
- Transactor - viz komponenta
- Konfigurace ověřovacího prostředí - nastavení v DUT a prostředí, které lze měnit, když je spuštěna simulace
- VIP - ověření duševního vlastnictví
Makra UVM
UVM umožňuje použití maker
název | funkce | související s | parametry | účel | Typ makra |
---|---|---|---|---|---|
`uvm_create | konstruktor objektu | `uvm_send | Pořadí nebo položka | k vytvoření objektu a umožnění uživateli nastavit hodnoty přetížením nebo předáním parametrů | Makro sekvenční akce |
`uvm_send | procesor | `uvm_create | Pořadí nebo položka | zpracuje to, co je vytvořeno programem `uvm_create, bez randomizace | Makra sekvenčních akcí pro již existující sekvence |
`uvm_do | procesor | `uvm_create | Pořadí nebo položka | provede třídu nebo položku s randomizací | Makro sekvenční akce |
Reference
- ^ Stav Accellera
- ^ A b http://www.accellera.org/activities/vip
- ^ „Uživatelská příručka Universal Verification Methodology (UVM) 1.2“ (PDF). p. 130.
- ^ https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.1a/html/files/base/uvm_factory-svh.html#uvm_factory.create_object_by_type
- ^ A b https://www.accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.2.pdf
- ^ A b https://www.accellera.org/images/downloads/standards/uvm/UVM_Class_Reference_Manual_1.2.pdf
- ^ „Rychlé přijetí UVM: praktická podmnožina UVM“ (PDF). p. 10.
- ^ https://verificationguide.com/uvm/uvm-sequence-item/
externí odkazy
- Stránka Accellera
- Doulos UVM Verification Primer
- Accellera UVM: Připraveno, nastaveno, nasazeno!
- Hřiště EDA - spusťte simulace UVM z webového prohlížeče (online IDE zdarma)
- UVM 1.2 Reference třídy
- Co je nového v sérii videí UVM 1.2