1 / 50

Formaalne verifitseerimine: väited

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 ).

Download Presentation

Formaalne verifitseerimine: väited

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Väiteid saab rakendada omaduse-kontrollil... Formaalne verifitseerimine: väited Digitaalsüsteemide verifitseerimise kursus

  2. ... kuid nad on rakendatavad ka kontrollina simuleerimisel Simuleerimisel põhinev verif.: väited Digitaalsüsteemide verifitseerimise kursus

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. Väite koostisosad • Väide koosneb üldjuhul 4-st komponendist: • Aktiveeriv tingimus • Signaaliregister • Väite lause • Reaktsioon Digitaalsüsteemide verifitseerimise kursus

  9. Väite koostisosad aktiveeriv tingimus aktiveeriv tingimus signaali register väite lause reaktsioon Digitaalsüsteemide verifitseerimise kursus

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. Järjestikulised väited • Tsükliline nimistu: Digitaalsüsteemide verifitseerimise kursus

  18. Signaalijadad Digitaalsüsteemide verifitseerimise kursus

  19. 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

  20. Konteiner-väited • Kontrollivad andmete õigsust peale töötlust Digitaalsüsteemide verifitseerimise kursus

  21. 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

  22. SystemVerilog Assertions • SVA eristab kaht tüüpi väiteid: • Protseduursed väited • Deklaratiivsed väited Digitaalsüsteemide verifitseerimise kursus

  23. 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

  24. 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

  25. 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

  26. 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

  27. SVA: jadad ja ajadiagrammid Digitaalsüsteemide verifitseerimise kursus

  28. Boole’i funktsiooni kõrvutamine jadaga Digitaalsüsteemide verifitseerimise kursus

  29. 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

  30. 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

  31. SVA. Operatsioonid jadadega: intersect • Sarnane JA-ga, kuid nõuab, et jadad algaksid ja lõppeksid koos: Digitaalsüsteemide verifitseerimise kursus

  32. SVA. Operatsioonid jadadega: first_match • On tõene sellest hetkest kui jada esmakordselt tõeseks saab: Digitaalsüsteemide verifitseerimise kursus

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. SVA. mitme kellaga sünkroniseerimine • SVA lubab sünkroniseerida erinevate kellataktidega • Näiteks: @(posedge clk1) x1 ## (posedge clk2) x2 Digitaalsüsteemide verifitseerimise kursus

  41. 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

  42. 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

  43. 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…

  44. 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.

  45. 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)

  46. 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

  47. What assertions are? LTL • Linear-Time (temporal) Logic (first introduced in 1981) • No branches, time is a path

  48. 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".)

  49. 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

  50. Assertion-based Verification

More Related