SystemVerilog - SystemVerilog
![]() Logo SystemVerilog | |
Paradigma | Strukturované (design) Objektově orientovaný (ověření) |
---|---|
Navrhl | Synopsys, později IEEE |
Poprvé se objevil | 2002 |
Stabilní uvolnění | IEEE 1800-2017 / 22. února 2018 |
Psací disciplína | Statický, slabý |
Přípony názvu souboru | .sv, .svh |
Ovlivněno | |
Design: Verilog, VHDL, C ++, Ověření: OpenVera, Jáva |
SystemVerilogstandardizovaný jako IEEE 1800, je popis hardwaru a jazyk pro ověření hardwaru používá se k modelování, design, simulovat, test a nářadí elektronické systémy. SystemVerilog je založen na Verilog a některá rozšíření a od roku 2008 je nyní Verilog součástí stejného Standard IEEE. To se běžně používá v polovodič a elektronický designový průmysl jako evoluce Verilogu.
Dějiny
SystemVerilog začal darováním jazyka Superlog Accellera v roce 2002 startupovou společností Co-Design Automation.[1] Převážná část ověřovací funkce je založena na OpenVera jazyk darovaný uživatelem Synopsys. V roce 2005 byl SystemVerilog přijat jako IEEE Standardní 1800-2005.[2] V roce 2009 byl standard sloučen se základním standardem Verilog (IEEE 1364-2005), čímž vznikl standard IEEE 1800-2009. Aktuální verze je IEEE standard 1800-2017.[3]
Sada funkcí SystemVerilog může být rozdělena do dvou odlišných rolí:
- SystemVerilog pro úroveň přenosu registru (RTL) je rozšířením Verilog-2005; všechny funkce tohoto jazyka jsou k dispozici v SystemVerilog. Proto je Verilog podmnožinou SystemVerilog.
- SystemVerilog pro ověření používá rozsáhlé objektově orientované programování techniky a více souvisí s Jáva než Verilog. Tyto konstrukty obecně nejsou syntetizovatelné.
Zbývající část tohoto článku pojednává o funkcích SystemVerilog, které nejsou v Verilog-2005.
Designové vlastnosti
Životnost dat
V SystemVerilogu jsou uvedeny dva typy životnosti dat: statický a automatický. Automatické proměnné se vytvářejí v okamžiku, kdy provádění programu přijde do rozsahu proměnné. Statické proměnné se vytvářejí na začátku provádění programu a udržují stejnou hodnotu po celou dobu životnosti programu, pokud mu během provádění nebude přiřazena nová hodnota.
Jakákoli proměnná, která je deklarována uvnitř úlohy nebo funkce bez zadání typu, bude považována za automatickou. Chcete-li určit, že proměnná je statická, vložte „statický
" klíčové slovo v prohlášení před typem, např. "statický int x;
"."automatický
"klíčové slovo se používá stejným způsobem.
Nové datové typy
Vylepšené typy proměnných přidat nové možnosti do typu „reg“ společnosti Verilog:
logika [31:0] my_var;
Verilog-1995 a -2001 omezují reg proměnné na příkazy chování, jako je RTL kód. SystemVerilog rozšiřuje typ reg, takže může být poháněn jediným ovladačem, jako je brána nebo modul. SystemVerilog pojmenuje tento typ „logika“, aby uživatelům připomněl, že má tuto zvláštní funkci a nejedná se o hardwarový registr. Názvy „logika“ a „reg“ jsou zaměnitelné. Signál s více než jedním ovladačem (například a trojstavový nárazník pro univerzální vstup / výstup ) je třeba deklarovat jako síťový typ, například „wire“, aby SystemVerilog mohl vyřešit konečnou hodnotu.
Vícerozměrný zabalená pole sjednotit a rozšířit pojem Verilog o „registrech“ a „pamětí“:
logika [1:0][2:0] my_pack[32];
Klasický Verilog povolil deklarovat pouze jednu dimenzi nalevo od názvu proměnné. SystemVerilog umožňuje libovolný počet takových „zabalených“ rozměrů. Proměnná typu sbaleného pole mapuje 1: 1 na celočíselnou aritmetickou veličinu. Ve výše uvedeném příkladu každý prvek my_pack
lze použít ve výrazech jako šestibitové celé číslo. Rozměry napravo od jména (v tomto případě 32) se označují jako „rozbalené“ rozměry. Jako v Verilog-2001, je povolen libovolný počet rozbalených rozměrů.
Výčet datových typů (výčty
) umožňují přiřadit číselným veličinám smysluplné názvy. Proměnné deklarované jako výčtový typ nelze bez proměnných jiného výčtového typu přiřadit odlévání. To neplatí pro parametry, které byly upřednostňovanou technikou implementace pro vyjmenované veličiny ve Verilogu-2005:
typedef výčet logika [2:0] { ČERVENÉ, ZELENÁ, MODRÝ, TYRKYSOVÁ, PURPUROVÁ, ŽLUTÁ} color_t;color_t moje_barva = ZELENÁ;počáteční $ displej("Barva je% s", moje_barva.název());
Jak je uvedeno výše, návrhář může určit základní aritmetický typ (logika [2: 0]
v tomto případě), který slouží k reprezentaci hodnoty výčtu. Zde lze použít meta-hodnoty X a Z, které mohou představovat nelegální stavy. Integrovaná funkce název()
vrací řetězec ASCII pro aktuální výčtovou hodnotu, což je užitečné při ověřování a testování.
Nové typy celých čísel: SystemVerilog definuje byte
, zkratka
, int
a Longint
jako dvoustavové podepsané integrální typy mající 8, 16, 32 a 64 bitů. A bit
type je dvoustavový typ s proměnnou šířkou, který funguje podobně logika
. Dvoustavové typy postrádají X a Z metavalues klasického Verilogu; práce s těmito typy může vést k rychlejší simulaci.
Struktury a odbory fungují podobně jako v Programovací jazyk C.. Vylepšení SystemVerilog zahrnují zabaleno atribut a označeno atribut. The označeno
atribut umožňuje runtime sledování, které členy unie se aktuálně používají. The zabaleno
Atribut způsobí, že struktura nebo sjednocení budou mapovány 1: 1 na zabalené pole bitů. Obsah struktur
datové typy zabírají souvislý blok paměti bez mezer, podobně jako bitová pole v C a C ++:
typedef struktur zabaleno { bit [10:0] výstava; bit podepsat; bit [51:0] Mant;} FP;FP nula = 64„b0;
Jak je znázorněno v tomto příkladu, SystemVerilog také podporuje typedefs, jako v C a C ++.
Procedurální bloky
SystemVerilog představuje tři nové procedurální bloky určené k modelování Hardware: always_comb
(modelovat kombinační logika ), always_ff
(pro žabky ), a always_latch
(pro západky ). Zatímco Verilog používal jediný obecný účel vždy
Blok k modelování různých typů hardwarových struktur, každý z nových bloků SystemVerilog je určen k modelování konkrétního typu hardwaru zavedením sémantických omezení, aby se zajistilo, že hardware popsaný v blocích odpovídá zamýšlenému použití modelu. Kompilátor HDL nebo ověřovací program může podniknout další kroky, aby zajistil, že dojde pouze k zamýšlenému typu chování.
An always_comb
blokové modely kombinační logika. Simulátor odvodí ze seznamu citlivosti všechny proměnné z obsažených příkazů:
always_comb začít tmp = b * b - 4 * A * C; žádný kořen = (tmp < 0);konec
An always_latch
blok má odvodit a citlivé na hladinu západka. Seznam citlivosti je opět odvozen z kódu:
always_latch -li (en) q <= d;
An always_ff
blok je určen k modelování synchronní logika (zvláště citlivé na hrany sekvenční logika ):
always_ff @(posedge clk) počet <= počet + 1;
Automatizace elektronického designu (EDA) nástroje mohou ověřit záměr návrhu kontrolou, že hardwarový model neporušuje žádnou sémantiku využití bloku. Například nové bloky omezují přiřazení k proměnné tím, že umožňují pouze jeden zdroj, zatímco Verilog vždy
blokovat povolené přiřazení z více procesních zdrojů.
Rozhraní
U malých vzorů Verilog přístav kompaktně popisuje konektivitu modulu s okolním prostředím. Ale hlavní bloky ve velké designové hierarchii obvykle mají počty portů v tisících. SystemVerilog představuje koncept rozhraní jak snížit nadbytečnost deklarace názvu portu mezi připojenými moduly i skupinami a abstraktní související signály do uživatelem deklarovaného balíčku. Dalším konceptem je modport, který ukazuje směr logických spojení.
Příklad:
rozhraní intf; logika A; logika b; modport v (vstup A, výstup b); modport ven (vstup b, výstup A); endinterfacemodul horní; intf i (); u_a m1 (.i1(i.v)); u_b m2 (.i2(i.ven));endmodulmodul u_a (intf.v i1);endmodulmodul u_b (intf.ven i2);endmodul
Funkce ověření
Následující ověřovací funkce obvykle nejsou syntetizovatelné, což znamená, že je nelze implementovat do hardwaru založeného na kódu HDL. Místo toho pomáhají při vytváření rozšiřitelných, flexibilních zkušební stolice.
Nové datové typy
The tětiva
datový typ představuje text s proměnnou délkou tětiva. Například:
tětiva s1 = "Ahoj";tětiva s2 = "svět";tětiva p = ".?!";tětiva s3 = {s1, ", ", s2, p[2]}; // zřetězení řetězců$ displej(„[% d]% s“, s3.len(), s3); // simulace vytiskne: „[13] Dobrý den, svět!“
Kromě statického pole použitého v designu nabízí SystemVerilog dynamická pole, asociativní pole a fronty:
int cmdline_elements; // # prvky pro dynamické poleint da[]; // dynamické poleint ai[int]; // asociativní pole, indexováno intint tak jako[tětiva]; // asociativní pole, indexované řetězcemint qa[$]; // fronta, indexovaná jako pole nebo pomocí vestavěných metodpočáteční začít cmdline_elements = 16; da = Nový[ cmdline_elements ]; // Přidělte pole s 16 prvkykonec
Dynamické pole funguje podobně jako rozbalené pole, ale nabízí tu výhodu, že je dynamicky přiděleno v runtime (jak je uvedeno výše.) Zatímco velikost zabaleného pole musí být známa v době kompilace (z konstanty nebo výrazu konstanty), velikost dynamického pole lze inicializovat z jiné proměnné runtime, což umožňuje velikost pole a libovolnou velikost podle potřeby .
Asociativní pole lze považovat za binární vyhledávací strom s zadané uživatelem typ klíče a datový typ. Klíč znamená objednávání; prvky asociativního pole lze číst v lexikografickém pořadí. Nakonec fronta poskytuje většinu funkcí C ++ STL deque typ: prvky lze efektivně přidávat a odebírat z obou konců. Tato primitiva umožňují vytváření složitých datových struktur požadovaných pro výsledková listina velký design.
Třídy
SystemVerilog poskytuje objektově orientované programování Modelka.
V SystemVerilog podporují třídy a jedno dědictví modelu, ale může implementovat funkčnost podobnou vícenásobné dědičnosti pomocí takzvaných „tříd rozhraní“ (koncepčně shodných s rozhraní
funkce Java). Třídy lze parametrizovat podle typu, poskytující základní funkci C ++ šablony. Nicméně, specializace šablony a šablony funkcí nejsou podporovány.
SystemVerilog's polymorfismus funkce jsou podobné těm v C ++: programátor může konkrétně napsat a virtuální
funkce, která má odvozenou třídu získat kontrolu nad funkcí. Vidět virtuální funkce pro další informace.
Zapouzdření a skrývání dat se provádí pomocí místní
a chráněný
klíčová slova, která musí být použita na všechny položky, které mají být skryty. Ve výchozím nastavení jsou všechny vlastnosti třídy veřejnost.
Instance třídy jsou dynamicky vytvářeny pomocí Nový
klíčové slovo. A konstruktor označeno funkce nová
lze definovat. SystemVerilog má automatické odvoz odpadu, takže neexistuje žádné jazykové zařízení, které by výslovně zničilo instance vytvořené nový operátor.
Příklad:
virtuální třída Paměť; virtuální funkce bit [31:0] číst(bit [31:0] adresa); koncová funkce virtuální funkce prázdnota psát si(bit [31:0] adresa, bit [31:0] data); koncová funkceendclasstřída SRAM #(parametr AWIDTH=10) rozšiřuje Paměť; bit [31:0] mem [1<<AWIDTH]; virtuální funkce bit [31:0] číst(bit [31:0] adresa); vrátit se mem[adresa]; koncová funkce virtuální funkce prázdnota psát si(bit [31:0] adresa, bit [31:0] data); mem[adresa] = data; koncová funkceendclass
Omezené náhodné generování
Celočíselné veličiny, definované buď v definici třídy, nebo jako samostatné proměnné v nějakém lexikálním rozsahu, mohou být přiřazené náhodné hodnoty na základě souboru omezení. Tato funkce je užitečná pro vytváření randomizované scénáře pro ověření.
V rámci definic tříd je rand
a randc
modifikátory signalizují proměnné, které mají být randomizovány. randc
specifikuje permutace - randomizace na základě, kdy proměnná jednou převezme všechny možné hodnoty, než se libovolná hodnota opakuje. Proměnné bez modifikátorů nejsou náhodné.
třída eth_frame; rand bit [47:0] dest; rand bit [47:0] src; rand bit [15:0] f_type; rand byte užitečné zatížení[]; bit [31:0] fcs; rand bit [31:0] fcs_corrupt; omezení základní { užitečné zatížení.velikost uvnitř {[46:1500]}; } omezení dobrý_fr { fcs_corrupt == 0; }endclass
V tomto příkladu fcs
pole není randomizované; v praxi to bude počítáno s generátorem CRC a fcs_corrupt
pole použité k jeho poškození za účelem vložení chyb FCS. Dvě uvedená omezení platí pro vyhovující Ethernetové rámečky. Omezení mohou být selektivně povolena; tato funkce by byla vyžadována ve výše uvedeném příkladu ke generování poškozených rámců. Omezení mohou být libovolně složitá a zahrnují vzájemné vztahy mezi proměnnými, implikacemi a iterací. SystemVerilog řešitel omezení je nutné najít řešení, pokud existuje, ale neposkytuje žádné záruky, pokud jde o čas, který k tomu bude potřebovat, protože to je obecně NP-tvrdé problém (boolovská uspokojivost ).
Metody randomizace
V každé třídě SystemVerilog existují 3 předdefinované metody pro randomizaci: pre_randomize, randomize a post_randomize. Metodu randomize volá uživatel pro randomizaci proměnných třídy. Metoda pre_randomize je volána metodou randomize před randomizací a metoda post_randomize je volána metodou randomize po randomizaci.
třída eth_frame; rand bit [47:0] dest; rand bit [47:0] src; rand bit [15:0] f_type; rand byte užitečné zatížení[]; bit [31:0] fcs; rand bit poškození_rámce; omezení základní { užitečné zatížení.velikost uvnitř {[46:1500]}; } funkce prázdnota post_randomize() tento.vypočítat_fcs(); // aktualizuje pole fcs podle randomizovaného rámce -li (poškození_rámce) // pokud by měl být tento rámec poškozen tento.korupce_fcs(); // poškodil fcs koncová funkceendclass
Kontrolní omezení
K řízení randomizace se používají metody constraint_mode () a random_mode (). constraint_mode () se používá k zapnutí a vypnutí konkrétního omezení a random_mode se používá k zapnutí nebo vypnutí randomizace konkrétní proměnné. Níže uvedený kód popisuje a procedurálně testuje Ethernetový rámeček:
třída eth_frame; rand bit [47:0] dest; rand bit [47:0] src; rand bit [15:0] f_type; rand byte užitečné zatížení[]; bit [31:0] fcs; rand bit poškození_rámce; omezení základní { užitečné zatížení.velikost uvnitř {[46:1500]}; } omezení one_src_cst { src == 48'h1f00 } omezení dist_to_fcs { fcs dist {0:/30,[1:2500]:/50}; // 30 a 50 jsou váhy (30/80 nebo 50/80, v tomto příkladu) } endclass...eth_frame my_frame;my_frame.one_src_cst.constraint_mode(0); // omezení one_src_cst nebude bráno v úvahumy_frame.f_type.random_mode(0); // proměnná f_type nebude pro tuto instanci rámce náhodná.my_frame.náhodně();
Tvrzení
Tvrzení jsou užitečné pro ověření vlastností návrhu, které se projeví po dosažení určité podmínky nebo stavu. SystemVerilog má svůj vlastní specifikační jazyk tvrzení, podobně jako Jazyk specifikace vlastnosti. Podmnožina jazykových konstruktů SystemVerilog, která slouží pro tvrzení, se běžně nazývá SystemVerilog Assertion nebo SVA.[4]
SystemVerilog tvrzení jsou postaveny z sekvence a vlastnosti. Vlastnosti jsou nadmnožinou sekvencí; lze použít jakoukoli sekvenci, jako by to byla vlastnost, i když to obvykle není užitečné.
Sekvence se skládají z booleovské výrazy rozšířené o časové operátory. Nejjednodušší dočasný operátor je ##
operátor, který provádí zřetězení:[je zapotřebí objasnění ]
sekvence S1; @(posedge clk) požadavek ##1 gnt;důsledek
Tato sekvence odpovídá, pokud gnt
signál jde vysoko jeden hodinový cyklus po požadavek
jde vysoko. Všimněte si, že všechny sekvenční operace jsou synchronní s hodinami.
Mezi další sekvenční operátory patří operátory opakování i různé spojky. Tito operátoři umožňují návrháři vyjádřit složité vztahy mezi konstrukčními komponenty.
Tvrzení funguje tak, že se neustále pokoušíte vyhodnotit sekvenci nebo vlastnost. Pokud selže vlastnost, tvrzení selže. Výše uvedená sekvence se kdykoli nezdaří požadavek
je nízký. Přesně vyjádřit požadavek, že gnt
následovat požadavek
je vyžadována nemovitost:
vlastnictví req_gnt; @(posedge clk) požadavek |=> gnt;endpropertyassert_req_gnt: tvrdit vlastnictví (req_gnt) jiný $ chyba("požadavek není následován gnt.");
Tento příklad ukazuje implikace operátor |=>
. Klauzule nalevo od implikace se nazývá předchůdce a klauzule vpravo se nazývá následný. Hodnocení implikace začíná opakovanými pokusy o vyhodnocení předchůdce. Když předchůdce uspěje, pokus o následek a úspěch tvrzení závisí na úspěchu následku. V tomto příkladu se o následek pokusí až požadavek
jde vysoko, po kterém vlastnost selže, pokud gnt
není na následujících hodinách vysoká.
Kromě tvrzení podporuje SystemVerilog předpoklady a pokrytí nemovitostí. Předpoklad stanoví podmínku, že a formální logika zkušební nástroj musí předpokládat, že je to pravda. Tvrzení určuje vlastnost, která musí být prokázána jako pravdivá. v simulace, jak tvrzení, tak předpoklady jsou ověřeny proti testovacím stimulům. Pokrytí vlastností umožňuje ověřovacímu technikovi ověřit, že tvrzení přesně monitorují návrh.[vágní ]
Dosah
Dosah jak je použito v jazycích ověřování hardwaru, odkazuje na sběr statistik na základě událostí vzorkování v rámci simulace. Pokrytí se používá k určení, kdy testované zařízení (DUT) byl vystaven dostatečné rozmanitosti podnětů, takže existuje vysoká jistota, že DUT funguje správně. Toto se liší od pokrytí kódu který vybaví návrhový kód, aby zajistil provedení všech řádků kódu v návrhu. Funkční pokrytí zajišťuje, že vše je požadováno roh a okrajové případy v designový prostor byla prozkoumány.
Skupina pokrytí SystemVerilog vytvoří databázi "košů", které ukládají a histogram hodnot přidružené proměnné. Lze také definovat křížové pokrytí, které vytvoří histogram představující kartézský součin více proměnných.
A vzorkování řízení událostí při odebrání vzorku. The vzorkování událostí může být událost Verilog, vstup nebo výstup z bloku kódu nebo volání do vzorek
metoda skupiny pokrytí. Je třeba dbát na to, aby byly vzorky vzorkovány, pouze pokud to má smysl.
Například:
třída eth_frame; // Definice jako výše krycí skupina cov; krycí bod dest { koše bcast[1] = {48'hFFFFFFFFFFFF}; koše ucast[1] = výchozí; } krycí bod f_type { koše délka[16] = { [0:1535] }; koše napsaný[16] = { [1536:32767] }; koše jiný[1] = výchozí; } psize: krycí bod užitečné zatížení.velikost { koše velikost[] = { 46, [47:63], 64, [65:511], [512:1023], [1024:1499], 1500 }; } sz_x_t: přejít f_type, psize; koncová skupinaendclass
V tomto příkladu se ověřovací inženýr zajímá o distribuci rámců vysílání a jednosměrového vysílání, pole size / f_type a velikost užitečného zatížení. Rozsahy v krycím bodě velikosti užitečného zatížení odrážejí zajímavé rohové případy, včetně rámců minimální a maximální velikosti.
Synchronizace
Komplexní testovací prostředí se skládá z opakovaně použitelných ověřovacích komponent, které musí spolu komunikovat. Verilog jeudálost „primitiv umožňoval různé bloky procedurálních příkazů navzájem se spouštět, ale vynucování vlákna synchronizace bylo na programátorově (chytrém) využití. SystemVerilog nabízí dva primitiv speciálně pro synchronizaci mezi vlákny: poštovní schránka a semafor. Poštovní schránka je modelována jako FIFO fronta zpráv. FIFO může být volitelně typově parametrizováno aby pouze objekty zadaného typu může jím projít. Typicky jsou to objekty instance třídy zastupující transakce: základní operace (například odeslání rámce), které jsou prováděny ověřovacími komponenty. Semafor je modelován jako počítání semaforu.
Obecná vylepšení klasického Verilogu
Kromě výše uvedených nových funkcí zvyšuje SystemVerilog použitelnost stávajících jazykových funkcí Verilogu. Níže jsou uvedena některá z těchto vylepšení:
- Procesní operátory přiřazení (<=, =) nyní může fungovat přímo na pole.
- Definice portů (vstup, vstup, výstup) jsou nyní rozšířeny, aby podporovaly širší škálu typy dat: struktur, výčet, nemovitý a jsou podporovány vícerozměrné typy.
- The pro smyčku konstrukce nyní umožňuje automatická deklarace proměnných uvnitř příkazu for. Smyčka řízení toku je vylepšen o pokračovat a přestávka prohlášení.
- SystemVerilog přidává a dělat/ while smyčka do zatímco smyčka postavit.
- Konstantní proměnné, tj. ty, které jsou označeny jako neměnící se za běhu, lze označit pomocí konst.
- Variabilní inicializace nyní může pracovat s poli.
- Operátory přírůstku a úbytku (
x ++
,++ x
,X--
,--X
) jsou podporovány v SystemVerilog, stejně jako ostatní složený úkol operátoři (x + = a
,x - = a
,x * = a
,x / = a
,x% = a
,x << = a
,x >> = a
,x & = a
,x ^ = a
,x | = a
) jako v C a potomci. - Vylepšil se preprocesor `definovat makro -substituční schopnosti, konkrétně substituce v rámci literálových řetězců (""), stejně jako zřetězení více makro tokenů do jednoho slova.
- The vidlice / připojit se konstrukt byl rozšířen o join_none a join_any.
- Dodatky ke směrnici o `` časovém měřítku umožňují, aby byl časový rámec simulace řízen předvídatelněji ve velkém simulačním prostředí, přičemž každý zdrojový soubor pomocí místního časového harmonogramu.
- Nyní lze deklarovat porty úloh ref. Odkaz dává tělu úkolu přímý přístup ke zdrojovým argumentům v rozsahu volajícího, známému jako „projít odkazem „v počítačovém programování. Jelikož pracuje na původní proměnné samotné, může kopírovat hodnotu argumentu, proto může úloha / funkce upravovat proměnné (ale ne sítě) v rozsahu volajícího v reálný čas. Deklarace vstupního / výstupního portu předávají proměnné podle hodnoty a odložit aktualizaci proměnné rozsahu volajícího až do okamžiku ukončení úlohy.
- Nyní lze deklarovat funkce prázdnota, což to znamená se vrací bez ceny.
- Parametry lze deklarovat jakýkoli typ, včetně uživatelem definovaného typedefs.
Kromě toho SystemVerilog umožňuje pohodlné rozhraní do cizích jazyků (jako C / C ++), autor SystemVerilog DPI (Direct Programming Interface).
Software pro ověřování a syntézu
V roli ověřování designu je SystemVerilog široce používán v průmyslu návrhů čipů. Tři největší prodejci EDA (Cadence Design Systems, Mentor Graphics, Synopsys ) začlenili SystemVerilog do svého smíšeného jazyka HDL simulátory. I když zatím žádný simulátor nemůže požadovat podporu pro celý SystemVerilog LRM[když je definován jako? ], takže testovací stůl interoperabilita výzva, probíhají snahy o podporu kompatibility mezi dodavateli.[když? ] V roce 2008 Cadence a Mentor vydali Open Verification Methodology, otevřenou knihovnu tříd a uživatelský rámec pro usnadnění vývoje opakovaně použitelných testovacích stolů a konzervovaných ověřovacích IP. Společnost Synopsys, která jako první publikovala knihovnu tříd SystemVerilog (VMM), následně reagovala otevřením svého vlastního VMM široké veřejnosti. Mnoho poskytovatelů třetích stran oznámilo nebo již vydalo ověřovací IP adresu SystemVerilog.
V syntéza designu role (transformace popisu hardwaru na bránunetlist ), Přijetí SystemVerilog bylo pomalé. Mnoho konstrukčních týmů používá návrhové toky, které zahrnují více nástrojů od různých dodavatelů. Většina designérských týmů nemůže migrovat na SystemVerilog RTL-design, dokud celá jejich sada front-end nástrojů (linters, formální ověření a automatizované generátory testovacích struktur ) podporují podmnožinu společného jazyka.[potřebuje aktualizaci? ]
Viz také
- Seznam SystemVerilog Simulators (Hledat SV2005)
- Verilog-AMS
- e (ověřovací jazyk)
- SpecC
- Accellera
- SystemC
- SystemRDL
Reference
- ^ Rich, D. „Vývoj SystemVerilog“ IEEE Design and Test of Computers, červenec / srpen 2003
- ^ IEEE schvaluje SystemVerilog, revizi Verilogu
- ^ 1800-2017 - IEEE Standard for SystemVerilog - Unified Hardware Design, Specification, and Verification Language
- ^ SystemVerilog Assertion: Úvod
- 1800-2005 - Standard IEEE pro systém Verilog - Unified Hardware Design, Specification and Verification Language. 2005. doi:10.1109 / IEEESTD.2005.97972. ISBN 978-0-7381-4810-6.
- 1800-2009 - IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language. 2009. doi:10.1109 / IEEESTD.2009.5354441. ISBN 978-0-7381-6130-3.
- 1800–2012 - IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language. 2013. doi:10.1109 / IEEESTD.2013.6469140. ISBN 978-0-7381-8110-3.
- 1800-2017 - IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language. 2017. doi:10.1109 / IEEESTD.2018.8299595. ISBN 978-1-5044-4509-2.
- McGrath, Dylan (09.11.2005). „IEEE schvaluje SystemVerilog, revize Verilogu“. EE Times. Citováno 2007-01-31.
- Puneet Kumar (09.11.2005). "Výukový program systému Verilog".
- Gopi Krishna (09.11.2005). "Návody SystemVerilog, SVA, SV DPI".
- HDVL. „Další odkazy SystemVerilog“.
- Spear, Chrisi, "SystemVerilog pro ověření" Springer, New York City, NY. ISBN 0-387-76529-8
- Stuart Sutherland, Simon Davidmann, Peter Flake, „SystemVerilog for Design Second Edition: A Guide to Using SystemVerilog for Hardware Design and Modeling“ Springer, New York City, NY. ISBN 0-387-33399-1
- Ben Cohen, Srinivasan Venkataramanan, Ajeetha Kumari a Lisa Piper [1] Příručka SystemVerilog Assertions Handbook, 4. vydání, 2016- http://SystemVerilog.us
- Ben Cohen Srinivasan Venkataramanan a Ajeetha Kumari [2] Pragmatický přístup k přijetí VMM, - http://SystemVerilog.us
- Erik Seligman a Tom Schubert [3] Formální ověření: Základní sada nástrojů pro moderní design VLSI, 24. července 2015,
externí odkazy
- Standardní reference IEEE
Nejnovější standardní dokumenty SystemVerilog jsou k dispozici zdarma z IEEExplore.
- Návody
- Vývoj standardů
- IEEE P1800 - Pracovní skupina pro SystemVerilog
- Weby používané před IEEE 1800-2005
- Jazyková rozšíření
- Verilog AUTOs - Open source meta-komentářový systém ke zjednodušení údržby kódu Verilog
- Online nástroje
- Hřiště EDA - Spusťte SystemVerilog z webového prohlížeče (online IDE zdarma)
- SVeN - SystemVerilog BNF Navigator (aktuální pro IEEE 1800-2012)
- Další nástroje