Assertions Pokročilé techniky verifikace číslicových obvodů. Jakub Šťastný, Ph.D. ASICentrum s.r.o.

Podobné dokumenty
Assertions Pokročilé techniky verifikace číslicových obvodů. Jakub Šťastný, Ph.D. ASICentrum s.r.o.

Assertions Pokročilé techniky verifikace číslicových obvodů. Jakub Šťastný, Ph.D. ASICentrum s.r.o.

Verifikace pomocí assertions: případové studie Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

9. Praktická verifikace

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

12. VHDL pro verifikaci - Testbench I

Verifikace pomocí assertions: jazyk PSL Jakub Šťastný

2. Entity, Architecture, Process

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

7. Popis konečného automatu

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student

Praktické úlohy- 2.oblast zaměření

Paměti Flash. Paměti Flash. Základní charakteristiky

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Princip funkce počítače

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Verifikace číslicových obvodů

Číslicové obvody a jazyk VHDL

Testování sekvenčních obvodů Scan návrh

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Příklady popisu základních obvodů ve VHDL

Verifikace pomocí assertions: seznámení Jakub Šťastný

Systém řízení sběrnice

Případová studie Řadič I2C rozhraní

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

Microchip. PICmicro Microcontrollers

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

External ROM 128KB For Sinclair ZX Spectrum

Simulace číslicových obvodů: úvod Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha

Problém identity instancí asociačních tříd

Verifikace číslicových obvodů

DMA jednotka pro BCE v systémech s AXI sběrnicí Zdeněk Pohl.

SYSTÉMY NAČIPU MI-SOC

Implementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

VISUAL BASIC. Přehled témat

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Speciální obvody a jejich programování v C 2. díl

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Periferní operace využívající přímý přístup do paměti

Vestavné systémy BI-VES Přednáška 5

10. Techniky formální verifikace a validace

Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Local Interconnect Network - LIN

Přerušovací systém s prioritním řetězem

Kryptoanalýza šifry PRESENT pomocí rekonfigurovatelného hardware COPACOBANA

Úvod do mobilní robotiky NAIL028

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

11. Logické analyzátory. 12. Metodika měření s logickým analyzátorem

Boundary Scan JTAG (Joined Test Action Group) IEEE 1149.X Zápis do rozhraní


Komunikace modulu s procesorem SPI protokol

FPGA + mikroprocesorové jádro:

Miroslav Flídr Počítačové systémy LS /21- Západočeská univerzita v Plzni

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Systém přerušení. České vysoké učení technické Fakulta elektrotechnická

Přednáška - Čítače. 2013, kat. měření, ČVUT - FEL, Praha J. Fischer. A3B38MMP, 2013, J.Fischer, ČVUT - FEL, kat. měření 1

Projekt: Přístupový terminál

Návrh. číslicových obvodů

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

Řízení IO přenosů DMA řadičem

Cíle. Teoretický úvod

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Zajištění kvality programového vybavení - testování

Souhrn Apendixu A doporučení VHDL

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Knihovna ServoLib Řízení servopohonu bez zpětné vazby. TXV první vydání březen 2009 změny vyhrazeny

SPECIFICATION FOR ALDER LED

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Počítačové sítě Systém pro přenos souborů protokol FTP

Dělení pamětí Volatilní paměti Nevolatilní paměti. Miroslav Flídr Počítačové systémy LS /11- Západočeská univerzita v Plzni

Principy komunikace s adaptéry periferních zařízení (PZ)

5. A/Č převodník s postupnou aproximací

Programujeme v softwaru Statistica

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

26. PERIFERIE PŘIPOJENÉ NA ETHERCAT

A0M38SPP - Signálové procesory v praxi - přednáška 10 2

Struktura a architektura počítačů (BI-SAP) 10

Řízení reálných projektů, agilní metodiky

1. Maple - verze. 2. Maple - prostredi. Document Mode vs. Worksheet Mode

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Architektura počítačů Logické obvody

Úvod do datového a procesního modelování pomocí CASE Erwin a BPwin

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Pohled do nitra mikroprocesoru Josef Horálek

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

Vrstvy periferních rozhraní

Workshop. Vývoj embedded aplikací v systému MATLAB a Simulink. Jiří Sehnal sehnal@humusoft.cz. info@humusoft.cz.

Pokyny k použití. Model-300. Napájecí zdroj. Návod na obsluhu Operating Instructions. se systémem Aquacontrol Napájací zdroj

5. Sekvenční logické obvody

OPERAČNÍ PROGRAM PRAHA ADAPTABILITA & EU:

UPM3 Hybrid Návod na ovládání Čerpadlo UPM3 Hybrid 2-5 Instruction Manual UPM3 Hybrid Circulation Pump 6-9

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Moduly MicroUnit serie. všechny typy s výjimkou řady MU-43x, MU-44x a MU-84x

Transkript:

Assertions Pokročilé techniky verifikace číslicových obvodů Jakub Šťastný, Ph.D. ASICentrum s.r.o.

O čem budu povídat Úvod, motivace Verifikace číslicového obvodu Řízení verifikace Kdy jsme hotovi? Metriky Jejich výpočet v prostředí ModelSim/Questa Návrh pro verifikaci Co na té verifikaci tak dlouho trvá? Plánování Implementace verifikačního prostředí Psaní testů Ladění testů Oběd Assertions Výhody a nevýhody assertions Metodologie a jak začít Příklady použití v prostředí ModelSim/Questa Úskalí přednášky různí posluchači z různého prostředí s různými znalostmi 1.6.2012 Page 2

Úvod, motivace

Zdroj: Wikipedia 1.6.2012 Page 4

Trendy v oblasti číslicového návrhu Složitější a složitější aplikace - vidíme sami v běžné praxi Důležitý je time to market Exponenciálně rostoucí složitost obvodů musí být vyvážena exponenciálně se zrychlujícím návrhem Návrh = RTL design + verifikace RTL design vs verifikace: 30% vs 70% Závěr je zřejmý: potřebujeme verifikovat co nejrychleji 1.6.2012 Page 5

Verifikace co tím rozumíme Provedena prostřednictvím RTL simulace simulace na hradlové úrovni formální verifikace Obvod je simulován za různých podmínek s použitím různých scénářů Aby byl výsledek spolehlivý, je třeba značného formálního úsilí 1.plánování 2.monitorování a řízení 3.rozhodnutí, že už je hotovo 1.6.2012 Page 6

Plánování verifikace 1.6.2012 Page 7

Monitorování a řízení postupu verifikace Metriky pro monitorování postupu verifikace Tests written kolik procent testů je napsáno? Requirement coverage kolik procent požadavků z design specifikace je pokryto verifikací (simulacemi a code review)? Code coverage kolik procent řádků RTL kódu bylo vykonáno v simulacích? FSM coverage které stavy stavových automatů byly navštíveny během simulace? které přechody ač platné nebyly nikdy provedeny? Expression coverage které části logických výrazů nikdy nezpůsobily, že byl celý výraz platný? 1.6.2012 Page 8

Monitorování a řízení postupu verifikace Toggle coverage kolik procent spojů v návrhu bylo překlopeno z 1 do 0 a zpět? Functional coverage kolik procent funkcí návrhu bylo simulací vykonáno? Nedostatek času standardní stav, postup podle postup podle priorit vlastností obvodu 1.most critical/time consuming first může být depresivní rizika rychle za námi management může být nevrlý 2.the easiest first, the most critical/time consuming second návrh si osaháme před tím, než se vrhneme na rizika přináší menší depresi je potřeba nenechat se ukolébat dobrým startem při akutním nedostatku času spray and pray postup podle pokrytí bloků 1.6.2012 Page 9

Demonstrace měření code coverage v ModelSimu Generátor PWM pro mikropočítačový systém Chování vnitřního čítače CPU SFR bus INT PWM PWM LIM value DATA value PWM INT Čas [sec] 1.6.2012 Page 10

Testbench top PWM DATA registr INT registr int_val INT 4 zdrojové soubory 1.6.2012 Page 11

Praktická ukázka v ModelSimu 1.6.2012 Page 12

Praktická ukázka v ModelSimu 1.6.2012 Page 13

Praktická ukázka v ModelSimu 1.6.2012 Page 14

Praktická ukázka v ModelSimu Mocný nástroj, snadné nastavení 1.6.2012 Page 15

Návrh pro snadnější verifikaci

Co na té verifikaci tak dlouho trvá? 1. Příprava verifikačního plánu psaní specifikace prostředí a testů znovupoužitelné specifikace vlastností znovupoužitelné části verifikačního plánu příklad SPI, I2C rozhraní, 2. Návrh verifikačního prostředí (testbenche) integrace modelů, návrhu použití IP maker pro verifikaci generátor hodin, generátor resetu řadiče protokolů (I2C, SPI, ) modely rozhraní použití šablony skriptů recyklace know-how (knowledge management) 1.6.2012 Page 17

Co na té verifikaci tak dlouho trvá? 3. Vlastní psaní verifikačních testů implementace testů podle verifikačního plánu znovupoužití testů pro integrovaná IP jádra použití náhodných stimulů místo deterministických nutné použití funkčního pokrytí příklad deterministické verifikace PWM bloku 1. nahraji do PWM registru hodnotu 0x25, do registru limitu hodnotu 0xAA 2. po 0x24 pulzů hodin kontroluji zda je výstup PWM v log. 0, průběžně kontroluji zda je INT výstup v log. 0 3. po dalším pulzu zkontroluji zda je PWM v log. 1, INT v log. 0 4. po (0xAA-0x26) pulzech zkontroluji zda se výstup INT překlopí do log. 1 na jednu periodu hodin, do té doby musí být v log. 0 5. atd časově náročné vymýšlení stimulů 1.6.2012 Page 18

Příklad použití náhodných stimulů napíšeme model chování PWM bloku model bude monitorovat vstupy do PWM bloku podle nich si nastaví vnitřní stav bude generovat výstup PWM a INT s rozlišením jedné periody hodin V modelu budeme sledovat zda se do PWM někdy nahraje hodnota 0x00 a 0xFF zda se do PWM něco zapisuje a něco z něco čte napíšeme komparátor výstupů návrhu PWM modulátoru a modelu PWM modulátoru PWM návrh PWM model = Shoda/Neshoda Pokryty všechny funkce a mezní stavy? 1.6.2012 Page 19

Příklad použití náhodných stimulů Napíšeme jednoduchý test ve smyčce 128 krát 1. počká náhodný počet hodinových cyklů (min. 512, max 1024) 2. s pravděpodobností 0.5 zapíše na adresu mimo adresní rozsah registrové mapy náhodnou hodnotu, jinak zapíše do náhodně vybraného cfg registru náhodnou hodnotu zkontrolujeme, zda došlo k mezním stavům, zápisu a čtení Pokud nejsou pokryty všechny stavy Náhodné stimuly prodloužíme test více smyček upravíme generování náhodných čísel na závěr ručně připíšeme stimuly pro pokrytí nepokrytých mezních stavů PWM návrh PWM model = Shoda/Neshoda Pokryty všechny funkce a mezní stavy? 1.6.2012 Page 20

Příklad použití náhodných stimulů Co jsem tedy všechno udělal jinak? Nevýhody složitější simulační prostředí větší počáteční investice Výhody není třeba vymýšlet stimuly obětuji strojový čas a ušetřím svůj čas pro větší návrhy jednoznačně lepší postup Náhodné stimuly PWM návrh PWM model = Shoda/Neshoda Pokryty všechny funkce a mezní stavy? 1.6.2012 Page 21

Příklad použití náhodných stimulů Potenciální námitky test běží pokaždé jinak. nastavení semínka pro generátor náhodných čísel na začátku testu (stejně ale modifikace testu změní sekvenci) nevadí, protože pokrytí funkcí je zajištěno ve spojení s regresním testováním je to výhoda ve VHDL je generování náhodných čísel s danými vlastnostmi složitější 1. s pravděpodobností 0.5 zapíše na adresu mimo adresní rozsah registrové mapy náhodnou hodnotu, jinak zapíše na náhodně vybranou adresu náhodnou hodnotu ano, to je používejte SystemVerilog pro testy a verifikační prostředí, ten pro to má nativní podporu Náhodné stimuly PWM návrh PWM model = Shoda/Neshoda Pokryty všechny funkce a mezní stavy? 1.6.2012 Page 22

Co na té verifikaci tak dlouho trvá? 4. Odlaďování návrhu Ruční práce 1. spustíme baterii testů 2. najdeme ty, co selhávají 3. pro každý test zjistíme, proč obvod nefunguje 1. najdeme chybu na primárních výstupech 2. tu odtrasujeme dovnitř do obvodu 3. předáme přes BugTracker příslušnému návrháři Spotřebuje mnoho času proč? prodleva mezi návrhem a verifikací spousta detailů se zapomene nejasný RTL kód trasování dovnitř do mikroarchitektury obvodu Příčína black box přístup k obvodu 1.6.2012 Page 23

Co na té verifikaci tak dlouho trvá? Black box přístup verifikátor se nestará o implementaci testujeme jen správnou reakci výstupů bloku na přivedené stimuly pokud je v návrhu chyba, která se projeví na výstupu až po mnoha cyklech buď ji nechytíme vůbec, když simulace neběží dost dlouho, nebo ji po odchycení budeme dlouho ladit a hledat, kde vznikla White box přístup dodatečné mechanizmy pro kontrolu vnitřních stavů automatická kontrola specifikovaných vlastností bloku 1.6.2012 Page 24

Nejjednodušší white box přístup ve VHDL 1.6.2012 Page 25

Zachycení vlastností návrhu To, co jsme přidali je tzv. assertion V nejjednodušší podobě je assertion predikát (například logický výraz) umístěný do návrhu, o kterém si návrhář myslí, že bude v příslušném místě v kódu vždy pravdivý. V softwarovém průmyslu už dlouho používaná praktika. V polovodičovém průmyslu mladší, ale přesto už cca 15 let používaná metodika 1.6.2012 Page 26

Shrnutí Verifikace je časově náročná Je třeba ji plánovat, monitorovat a řídit. Čas nás stojí 1. psaní plánu recyklace 2. návrh prostředí recyklace 3. psaní testů náhodné testování 4. odlaďování návrhu whitebox vs blackbox 1.6.2012 Page 27

Příklady Checks: The configuration shall b e always valid (filter index, etc.). Functional coverage assertions: All filters in the filtering bank are used in the simulations. CPU DMA Serial interface Functional Coverage assertions: All possible configuration modes are used by the simulations Checks: write to to full, read from empty shall never happen Functional coverage assertions: full, empty state DMA read, write access happens with 0 wait state CPU read, write access happens with 0 wait state DMA read, write access happens with 1 wait state CPU read, write access happens with 1 wait state Checks Interrupt registers shall be set even if ifenable is is at zero (postmasking). Interrupt request shall be generated if if Enable at 1. Start of the filtering when the filtering runs shall be correctly handled. End of Block Processing (handshake) shall be correctly implemented. Interrupt request shall be inactive when the block is is disabled. Functional Coverage assertions All possible configuration modes are used by the simulations. Start of the filtering happens in idle as well as running mode. 1.6.2012 Page 28

Network on chip system: Coverage points: All the possible configurations of the NOC hub were simulated. All NOC FIFOs met both full and empty states. NOC arbitration conflicts have happened during the simulation. Checks: NOC transactions shall be properly formed. The NOC FIFOs handling shall be correct. NOC arbitration shall prioritize the CPU. Memories without active chip select have silent buses and clock lines. CPU core clock is stopped after HALT instruction. The req-ack handshake for clock control is correctly formed. All interrupt lines are activated by the test suite. SFR Bus Coverage assertions: All All the peripherals which could generate wait states generated some in in the simulations. Checks: Either zero or or one SFR register shall be be active at at any time. All All register maps interrupt registers have coverage points for 0/1 and various write sequnces with wait states. Timer shall be idle when disabled. Postmasking shall operate correctly. Timer shall never underflow. Interfaces: Internal FIFOs, interrupts covered, coverage points for important configuration and operational modes (eg I2S stretching, clock/pol/pha config for SPI master, etc) 1.6.2012 Page 29

Výhody assertions Izoluje chybu šetří čas při ladění pomáhá v týmovém prostředí pomáhá osvětlit funkci obvodu Oznámí a detekuje chybu i když simulace skončí dřív, než se chybové chování zpropaguje na primární výstup bez stimulů, které ji zpropagují na primární výstupy je aktivní v každé simulaci bez ohledu na stimuly Přesouvá část verifikace blíž k návrháři účinnější ladění už během návrhu bloku 1.6.2012 Page 30

Důsledky použití assertions Zjednodušení integrace IP jader assertions jsou ve znovupoužitém RTL kódu správně implementovaný návrh IP jádra kontroluje správný protokol na rozhraní např. handshake, sekvence resetů, atd. kontroluje svoji vnitřní integritu různé vnitřní podmínky pro správnou funkci Návrháři více myslí během implementace assertion si návrhář často uvědomí, že je něco špatně Monitorování výskytu stavů obvodu funkční pokrytí Podpora formální verifikace 1.6.2012 Page 31

Co můžeme namítnout proti assertions Jejich implementace je časově náročná a VHDL je na jejich psaní neohrabané Nepíšou se proto v jazyce VHDL Identifikace a odladění chyb je časově náročné. Pro významné zrychlení fáze ladění návrhu musíme akceptovat prodloužení fáze RTL návrhu. Čas na psaní assertions ve správném jazyce je typicky 1-3% času stráveného psaním RTL kódu. Musí být psány od začátku aby skutečně pomohly. Nutí návrháře myslet a současně pomáhají při ladění. První verze RTL kódu nikdy nefunguje. Zpomalují běh simulátoru Zpomalení simulace je maximálně 15-30 procent. Místo vzácného času návrháře se spotřebovává mnohem levnější čas stroje a návrhář může dělat něco zábavnějšího Je potřeba se je naučit psát Ale pak na tom mnohem víc vyděláte Jak zvládnete základy, zjistíte, že je to celkem jednoduché 1.6.2012 Page 32

Jazyky pro psaní assertions PSL Property Specification Language standard IEEE std 1850-2005 VHDL, Verilog a System C flavours syntaxí spíš vhodnější pro uživatele VHDL píše se do komentářů v kódu SVA System Verilog Assertions podmnožina System Verilogu lze přímo umístit do Verilogového kódu nutnost dalšího studia poněkud netradiční syntaxe mnohem vyšší produktivita implementace assertions podpora nástroji automatické monitorování assertions automatické monitorování pokrytí formální verifikace 1.6.2012 Page 33

1.6.2012 Page 34

Složitější příklady assertions Check: SFR bus write transaction shall set the appropriate register. Coverage: Corner cases (0x00, 0xFF) are covered. PWM DATA registr INT registr int_val INT Check: The PWM register shall be set to 0x00 after the limit value is reached. INT output shall pulse after the limit value is reached and do not pulse at any other moment. 1.6.2012 Page 35

Složitější příklady assertions z kódu -- psl default clock is rising_edge(clk); -- psl property prop_write_data is ( ((addr=address_data) AND (wr_en='1')) -> next (data_q = prev(data_in,1) )); -- psl asrt_write_data : assert always(prop_write_data) abort (res_n='0') report "No write to the data register"; Vlastnost návrhu: pokud se na adresní Definice vzorkování sběrnici objeví adresa registru a současně je signálů write enable v log. 1, musí být registr data v příštím cyklu nastaven na současnou hodnotu na vstupní datové sběrnici. Tato vlastnost bude kontrolována vždy (assert always), kromě situace kdy je aktivní reset. V případě porušení je vypsán uvedený text. 1.6.2012 Page 36

Složitější příklady assertions z kódu -- psl sequence seq_pwm_set_to_0 is {(overflow='1');(data_cmp_pwm=x"00")}; -- psl cov_pwm_set_to_0 : cover(seq_pwm_set_to_0); Definice monitorované sekvence signálů. Coverage assertion. 1.6.2012 Page 37

Praktická ukázka funkce v simulátoru 1. Do návrhu úmyslně vložím chybu pro demonstraci. 2. Spustím simulaci a ukáži, jak je chyba reportována. 3. Podíváme se také na coverage assertions jak jsou v ModelSimu vidět. 1.6.2012 Page 38

Praktická ukázka funkce v simulátoru 1.6.2012 Page 39

Jak začít

Jak začít začněte nalehko, začněte s VHDL! Nepotřebujete simulátor s podporou pro assertions. Bezbolestně se naučíte s assertions metodicky pracovat. Sami zjistíte, jak moc jsou pro vás užitečné. I když to stojí víc práce, pořád se to vyplatí. Nevýhoda žádná integrace s dalšími nástroji Návod jak na to: 1. Identifikujte bloky, které často používáte. 2. Najděte/definujte podmínky pro jejich správnou funkci Očekává blok specifickou sekvenci signálů na svém rozhraní? Mají mít nějaké vnitřní signály specifické časování? Jsou v bloku sběrnice, na kt. se nesmí objevit určité hodnoty? jsou hodnoty kódované specifickým kódem? očekáváte nějaké přesně definované sekvence hodnot? 3. Implementujte ve VHDL nesyntetizovaný kód v příslušném bloku, který tyto podmínky kontroluje a vyhlásí chybu pomocí příkazu ASSERT kdykoliv jsou porušeny. 4. Zamýšlejte se nad implementací nových bloků a hned pište dodatečný VHDL kód pro kontrolu mezních stavů atd. 1.6.2012 Page 41

Jak začít metodologie pro existující návrhy Komentáře typu tady se nikdy nestane, že a tady vždycky nastane, že jsou ideální pro konverzi na assertions. Zkušenost ukazuje, že i dodání assertions do návrhu, který už vypadá odladěně vede na detekci mnoha nových chyb. Nemá smysl pomocí assertions duplikovat RTL design (x<=x+1 bude vždy inkrementovat). 1.6.2012 Page 42

Jak začít plánování assertions Assertion name Assertion Description Status Type Assigned To cover_fifo_full Coverage point detect the full FIFO condition. tbd coverage MMA asrt_sys_clk_req Check that sys_clk signal is toggling if sys_clk_req='1'. Disabled by: block reset done immediate JST asrt_sys_dac_data Sys_dac_data block input bus shall be stable at least one clock cycle befor the dig_dac_follow falling edge. Disabled by: system reset tbd sequential MMA cover_fifo_empty_rd Coverage point detect the read condition while FIFO is empty tbd coverage MMA 1.6.2012 Page 43

Jak začít metodologie pro nové návrhy Čím častěji je buňka používaná, tím je důležitější aby kontrolovala svoje správné použití. Příklady u elementárních buněk Two Flip Flop synchronizer vstup bez zákmitů kontrola šířky pulzu na vstupu alespoň 2 hodinové pulzy cílových hodin Asynchronní hranový detektor kontrola intervalu mezi hranami hrana ze vstupu se neztratí MUX s one hot kódovaným selektorem one hot kódování selektoru Assertions pište tam, kde byste komentovali návrh. 1.6.2012 Page 44

Jak začít constrained random verifikace Pro větší návrhy s assertions se vyplatí zkusit náhodné stimuly 1. Identifikujte požadavky na stimuly návrhu Co se vyplatí generovat náhodně? Jsou nějaká omezení na náhodná data? Jsou nějaké důležité mezní stavy? 2. Implementujte VHDL kód pro monitorování výskytu potřebných mezních stavů. Informace o běhu návrhu vypisujte do logu simulátoru pomocí např. příkazu ASSERT. 1.6.2012 Page 45

Jak začít Přechod na specializované jazyky Pokud budete důslední, časem zjistíte, že při simulaci bloků s assertions dostáváte chybová hlášení, rychleji nacházíte problémy v návrhu, máte pocit, že Vám to opravdu pomáhá. Čas na přechod na specializované jazyky. PSL (jen zápis vlastností) SVA/System Verilog (komplexní podpora pro verifikaci) 1.6.2012 Page 46

Shrnutí a literatura k dalšímu studiu

Zkušenosti s ABV správná praxe 1. Formalizujte specifikaci napsanou v přirozeném jazyce 2. Pište assertions dohromady s RTL kódem, který ověřují a pište je hned. První RTL kód NIKDY nefunguje. 3. Analyzujte nalezené chyby a doplňujte assertions na jejich kontrolu. 4. Používejte assertions v blocích určených k opětovnému použití 5. Vytvořte si knihovny běžných assertions. 1.6.2012 Page 48

K dalšímu čtení a studiu o assertions Dobrá učebnice Metodika ABV Příklady v PSL VHDL PSL Verilog SVA Knihovna assertions 1.6.2012 Page 49

K dalšímu čtení a studiu o návrhu Praktické aspekty realizace číslicových systémů Okruhy témat Správná praxe systémového návrhu Práce s asynchronními signály Návrh datových cest Obvody pro aritmetické operace a další. Dostupná na e-shopu BENu http://shop.ben.cz/cz/12131 6-fpga-prakticky.aspx 1.6.2012 Page 50

K dalšímu čtení a studiu ModelSim How Tos, návody: http://amber.feld.cvut.cz/fpga/msim_certification/msim _demos.html PSL 1.1 Reference manual (trošku starší, ale pomáhá) http://www.eda.org/vfv/docs/psl-v1.1.pdf Project Veripage http://www.project-veripage.com/psl_tutorial_1.php The designer s guide to PSL http://www.doulos.com/knowhow/psl/ 1.6.2012 Page 51