500 likes | 715 Views
Väiteid saab rakendada omaduse-kontrollil. Formaalne verifitseerimine: väited. ... kuid nad on rakendatavad ka kontrollina simuleerimisel. Simuleerimisel põhinev verif.: väited. V ä i de (ingl. k. assertion ).
E N D
Väiteid saab rakendada omaduse-kontrollil... Formaalne verifitseerimine: väited Digitaalsüsteemide verifitseerimise kursus
... kuid nad on rakendatavad ka kontrollina simuleerimisel Simuleerimisel põhinev verif.: väited Digitaalsüsteemide verifitseerimise kursus
Väide (ingl. k. assertion) • Väide on lausete hulk, mis kontrollib teatud tingimuste kehtimist muutujate jaoks mingi ajaperioodi jooksul • Kui tingimust rikutakse, siis väljastatakse veateade, mis näitab ära rikke asukoha • Väiteid võib kasutada nii simuleerimisel veateadete kuvamiseks, kui ka formaalsel mudelikontrollil omadusena Digitaalsüsteemide verifitseerimise kursus
Väide (ingl. k. assertion) • Väidete kasutamine võimaldab jälgida vigu süsteemi sisesignaalides, seega: • juba enne seda kui need levivad väljundisse • saab vaadelda ka vigu, mis väljundeid ei mõjuta • Väiteid on SW ja HW silumisel kasutatud juba pikka aega, kuid alles hiljuti on jõutud püüdeni väiteid standardiseerida Digitaalsüsteemide verifitseerimise kursus
Kuidas genereerida väiteid On kaks vastandlikku strateegiat: • Otsime spetsifikatsioonist omadusi, mis peavad implementatsioonis kehtima • Otsime disainivigu (anomaaliaid), mida ei tohi spetsifikatsioonis ette tulla Digitaalsüsteemide verifitseerimise kursus
Kombinatoorsed ja järjestikulised v.-d • Väited, mis ei sõltu aja mõistest on kombinatoorsed: N. (A != 0 ) && ( A & (A-1)) • Väited, milles sõltuvus eelmistest (järgmistest) kellataktidest on järjestikulised: N. (A-1 != A) -> (A == A+1) • Väite esimese ja viimase takti vahet nim. väite aja-aknaks Digitaalsüsteemide verifitseerimise kursus
Väidete hierarhia • Nii nagu spetsifikatsioone on eri abstraktsiooni-tasemetel, nii ka väiteid saab esitada: • Käitumuslikul tasemel • Registersiirde tasemel • Loogikatasemel • Jne... Digitaalsüsteemide verifitseerimise kursus
Väite koostisosad • Väide koosneb üldjuhul 4-st komponendist: • Aktiveeriv tingimus • Signaaliregister • Väite lause • Reaktsioon Digitaalsüsteemide verifitseerimise kursus
Väite koostisosad aktiveeriv tingimus aktiveeriv tingimus signaali register väite lause reaktsioon Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. Signaalide vahemik • Verilog näide: if ( 'LOWER > S || S > 'UPPER ) $display ("signal S = %b is out of bound"); • Koos aktiveeriva tingimusega: always @(posedge clock) begin if ( (ready_to_check == 1'b1) && ('LOWER > S || S > 'UPPER )) $display ("signal S = %b is out of bound"); end Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. Signaalide vahemik Erijuhud: • Signaali väärtus jääb konstantseks • Ületäitumise (ja alatäitumise) kontroll • Min ja max väärtus Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. Määramatuse kontroll Vaatame, ega signaali mõni bitt pole X Verilogis: if ( ^A == 1'bx) $display ("ERROR: unknown value in signal A"); Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. Paarsuse kontroll Vaatame, kas signaal on paaris või paaritu Verilogis: if ( ^A == 1'b0) $display ("info: signal A is even parity"); if ( ^A == 1'b1) $display ("info: signal A is odd parity"); Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. Hulka kuuluvus 'define BEQ 1010 'define JMP 1100 'define NOOP 0000 'define SHIFT 0110 'define CLEAR 1000 if( (instr != 'BEQ) && \ (instr != 'JMP) && \ (instr != 'NOOP) && \ (instr != 'SHIFT) && \ (instr != 'CLEAR)) $display ("ERROR: illegal instruction instr = %b", instr); Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. One-hot kodeering • Peab olema TÄPSELT ÜKS üks! • Kontroll Verilogis: • if ( |(B & (B - 'WIDTH'b1)) != 1'b0 ) • $display ("Bus B is not one hot, B = %b", B); Digitaalsüsteemide verifitseerimise kursus
Väidete tüübid. One-hot kodeering • Näide: • B : 8'b00010000 • B - 8'b1 : 8'b00001111 // subtract 1 • B & (B - 8'b1) : 8'b00000000 // bitwise AND • | (B & B - 8'b1 ) : 1'b0 // reduction OR • Kui B pole one-hot: • B : 8'b01001000 • B-8'b1 : 8'b01000111 • B & (B-8'b1) : 8'b01000000 • | (B & B-8'b1 ) : 1'b1 • if ( |(B & (B - 'WIDTH'b1)) != 1'b0 ) • $display ("Bus B is not one hot, B = %b", B); Digitaalsüsteemide verifitseerimise kursus
Järjestikulised väited • Tsükliline nimistu: Digitaalsüsteemide verifitseerimise kursus
Signaalijadad Digitaalsüsteemide verifitseerimise kursus
Veel väidete variante • Saab vaadata, kas signaal muutus mingi aja-akna jooksul • Saab vaadata põhjuslikkust (ühe signaali muutus põhjustab teise muutumise) teatud aja-akna sees • Saab vaadata takteerimata järjestikväiteid. Näiteks asünkr. handshaking protokoll Digitaalsüsteemide verifitseerimise kursus
Konteiner-väited • Kontrollivad andmete õigsust peale töötlust Digitaalsüsteemide verifitseerimise kursus
SystemVerilog Assertions • Kuigi väiteid saab esitada suvalises riistvara kirjelduskeeles (VHDL, Verilog, jne.), siis võib kood venida pikaks ja väited pole korduvkasutatavad • SystemVerilog (IEEE std 1364) pakub kasutamiseks standardiseeritud väiteid • W. Lam’i raamatu ilmumishetkeks polnud standard veel kinnitatud! Digitaalsüsteemide verifitseerimise kursus
SystemVerilog Assertions • SVA eristab kaht tüüpi väiteid: • Protseduursed väited • Deklaratiivsed väited Digitaalsüsteemide verifitseerimise kursus
SVA: protseduursed väited • Protseduursed väited, kirjutatakse simuleeritavasse koodi – neid kasutatakse simuleerimisel põhineval verifitseerimisel. • Näide: assert (WR == 1'b1 && CS == 1'b0) $display ("INFO: memory ready"); // pass clause else $display ("ERROR: cannot write"); // fail clause Digitaalsüsteemide verifitseerimise kursus
SVA: deklaratiivsed väited • Deklaratiivsed väited, kirjutatakse simuleeri-tavast koodist eraldi (analoogia moodulitega) – neid kasutatakse mudelikontrollil. • Süntaks: assert property (property_definition_or_instance) action action ::= [statement] | [statement] else statement Digitaalsüsteemide verifitseerimise kursus
SVA: deklaratiivsed väited, jadad • Deklaratiivsed väited kirjeldavad temporaalset käitumist • Põhiliseks mõisteks on jada: • jada = {(Bi,Ti),i V}, • kus Bion Boole’iavaldis ajahetkel Ti, ja V on aega tähistavate täisarvude hulk (näiteks kellatakti number) Digitaalsüsteemide verifitseerimise kursus
SVA: jadad ja ajadiagrammid • SVAs jada konstruktor: ##N, kus N on viide • x ##4 z on ekvivalentne (x,t),(z,t+4) • Saab kirjeldada vahemikke • Näiteks x ##[1,3] z tähendab, et kehtib, kas x ##1 z või x ##2 z või x ##3 z • Ühele jadale vastab üldjuhul mitu ajadiagrammi Digitaalsüsteemide verifitseerimise kursus
SVA: jadad ja ajadiagrammid Digitaalsüsteemide verifitseerimise kursus
Boole’i funktsiooni kõrvutamine jadaga Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: AND • s1 AND s2 on tõene kui jadad s1 ja s2 on mõlemad saanud tõeseks: Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: OR • s1 OR s2 on tõene kui jada s1 või s2 on saanud tõeseks: OR true true Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: intersect • Sarnane JA-ga, kuid nõuab, et jadad algaksid ja lõppeksid koos: Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: first_match • On tõene sellest hetkest kui jada esmakordselt tõeseks saab: Digitaalsüsteemide verifitseerimise kursus
SVA. Op.id jadadega: implikatsioon • S1 S2, s.t. ¬S1 + S1·S2 • Kui S1 saab ajahetkel t tõeseks, siis sellest hetkest hakatakse arvutama S2, mille tulemus määrab implikatsiooni tulemuse. • Kui S1 on väär, siis implikatsioon on tõene. Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: throughout • Meenutagem, et jadaon S = {(Bi,Ti),i V} • E throughout S on {(E ·Bi,Ti),i V} • Näiteks (x1 + x2) throughout (##1 x3 ##2 x4) on ekvivalentne jadaga (##1 (x1 + x2)x3 ##2 (x1 + x2)x4) Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: within • s1 within s2 kontrollib, kas s1 esineb s2 sees ja kas mõlemad jadad on tõesed • s1 peab algama peale s2 algust ja lõppema enne s2 lõppu! Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: container • Jada saab kasutada lokaalseid muutujaid, et salvestada andmeid, mida tulevikus tarvis läheb • Vt. konteiner-väited kile 20! Digitaalsüsteemide verifitseerimise kursus
SVA. Operatsioonid jadadega: ended • s1.ended väljastab tõese väärtuse kui jada s1 saab tõeseks, s.t. lõpeb Digitaalsüsteemide verifitseerimise kursus
SVA sisseehitatud funktsioonid • $onehot (avaldis)tõene kui täpselt üks bitt avaldises on üks.$onehot0 (avaldis)tõene kui täpselt üks bitt avaldises on null. • $inset (e1, e2, ...)on tõene kui e1 on võrdne e2 või järgnevas listis loetletud väärtustega • $isunknown (avaldis)on tõene kui avaldises on vähemalt üks määramata bitt. Digitaalsüsteemide verifitseerimise kursus
SVA sisseehitatud funktsioonid • $past (avaldis, i)tagastab väärtuse, mis oli avaldisel i takti tagasi. Kui i on puudu, siis vaikimisi on i=1. Selle funktsiooniga on lihtne kontrollida Gray koodi: $onehot (S ^ $past (S)). • $countones (avaldis)Tagastab ühtede arvu avaldises Digitaalsüsteemide verifitseerimise kursus
SVA. mitme kellaga sünkroniseerimine • SVA lubab sünkroniseerida erinevate kellataktidega • Näiteks: @(posedge clk1) x1 ## (posedge clk2) x2 Digitaalsüsteemide verifitseerimise kursus
Assertion-based Verification • ABV benefits: • Dynamic – better observability detecting bugs earlier and closer to their origin • Static – better controllability direct verification to the area of interest
Assertion-based Verification • Completeness problem • Who/what and when should specify assertions? • When is it enough? • In practice design engineer writes them for VHS (Verification Hot Spots). Such spot: • contains a great number of sequential states; • deeply hidden in the design, making it difficult to control from the inputs • has many interactions with other state machines and external agents • has a combination of these properties
What assertions are? • Assertion is an asserted (=directive shows what to do) property (=a part of the DUT’ functional behavior) • speed-up • find out if anything went wrong earlier • improve quality (corner cases) • functional coverage • formal and dynamic verification • + assume, cover, expect, restrict…
What assertions are? Languages • PSL • next slide • SystemVerilog Assertions (SVA) – IEEE 1800 • a group of extensions to the Verilog HDL true[*0:$] ##1 !SOT ##1 SOT ##1 !ads1[*0:$] ##1 ads2 • OVL • Open Verification Library assertions • include PSL and VHDL checkers • A part of OVM/UVM from Mentor & Cadence • Synopsys: Open Vera Language assertions (OVA) • HDLs • assert statement s to print messages at the simulation console • severity levels • System C assertions, e, etc.
Label When to check reqack: assert always (req -> next ack); Property to be checked Verification directive What assertions are? PSL • Property Specification Language IEEE-1850 (2005) • Originated from Sugar (IBM), Accellera • Foundation Language (FL) • LTL, SERE • PSL Simple Subset for simulation • Time advances monotonically, it is finite, (operands restrictions) • Optional Branching Extension • CTL (for formal verification)
What assertions are? PSL (cont.) • Flavors: • SystemVerilog, Verilog , VHDL, SystemC, (GDL ?) • 4 layers • Boolean layer –Boolean expressions in HLD: (a&&(b||c)) • Boolean operators: AND, OR, -> • Temporal later – sequences of Boolean expressions over multiple clock cycles • Temporal operators (e.g. next_e, until, next_event) • invariance operators: always, never • SERE: ({A[*3];B}|->{C}) Sequential Extended Regular Expressions • Verification layer - directives for verification tool telling what to do with specified properties • assert, assume, cover, restrict • Modeling layer – models environment
What assertions are? LTL • Linear-Time (temporal) Logic (first introduced in 1981) • No branches, time is a path
What assertions are? CTL • Computational Tree Logic (first introduced in 1977) • branching-time logic, meaning that its model of time is a tree-like structure • there are different paths in the future, any one of which might be an actual path that is realized A[φUψ] == ( E[(ψ)U(φψ)] EG(ψ) ) • temporal operators: • A φ - φ has to hold on all paths (starting from the current state) • Eφ - there exists at least one path (-”-) where φ holds. • X φ - φ has to hold at the next state • G φ - Globally: φ has to hold on the entire subsequent path • F φ - Finally: φ eventually has to hold • φ U ψ - φ has to hold until at some position ψ holds • φ W ψ - Weak until: φ has to hold until ψ holds (= "unless".)
req req ack ack FAILED PASSED req ack NOT ACTIVATED What assertions are? Vacuity • Vacuity is a philosophical concept (not specific to PSL) • Vacuous passoccurs if a passing property contains Boolean expression that, in frames of the given simulation trace, has no effect on the property evaluation. vacuous pass