Formaalne verifitseerimine: väited
Väiteid saab
rakendada
omadusekontrollil...
Digitaalsüsteemide verifitseerimise kursus
1
Simuleerimisel põhinev verif.: väited
... kuid nad on
rakendatavad ka
kontrollina
simuleerimisel
Digitaalsüsteemide verifitseerimise kursus
2
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
3
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
4
Kuidas genereerida väiteid
On kaks vastandlikku strateegiat:
1. Otsime spetsifikatsioonist omadusi, mis
peavad implementatsioonis kehtima
2. Otsime disainivigu (anomaaliaid), mida
ei tohi spetsifikatsioonis ette tulla
Digitaalsüsteemide verifitseerimise kursus
5
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
6
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
7
Väite koostisosad
•
1.
2.
3.
4.
Väide koosneb üldjuhul 4-st
komponendist:
Aktiveeriv tingimus
Signaaliregister
Väite lause
Reaktsioon
Digitaalsüsteemide verifitseerimise kursus
8
Väite koostisosad
aktiveeriv tingimus
aktiveeriv tingimus
signaali register
väite lause
reaktsioon
Digitaalsüsteemide verifitseerimise kursus
9
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)
if ( (ready_to_check ==
('LOWER > S || S >
$display ("signal S =
end
begin
1'b1) &&
'UPPER ))
%b is out of bound");
Digitaalsüsteemide verifitseerimise kursus
10
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
11
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
12
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
13
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
14
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
15
Väidete tüübid. One-hot kodeering
• Näide:
B : 8'b00010000
B - 8'b1 : 8'b00001111
B & (B - 8'b1) : 8'b00000000
| (B & B - 8'b1 ) : 1'b0
// subtract 1
// bitwise AND
// reduction OR
• Kui B pole one-hot:
B
B-8'b1
B & (B-8'b1)
| (B & B-8'b1 )
:
:
:
:
8'b01001000
8'b01000111
8'b01000000
1'b1
if ( |(B & (B - 'WIDTH'b1)) != 1'b0 )
$display ("Bus B is not one hot, B = %b", B);
Digitaalsüsteemide verifitseerimise kursus
16
Järjestikulised väited
• Tsükliline nimistu:
Digitaalsüsteemide verifitseerimise kursus
17
Signaalijadad
Jada
Kirjeldus
Kodeering
Gray kood
Täpselt üks bitt muutub
S^S-1 on one-hot
Hammingu kood H bitti muutub
S^S-1 omab H ühte
Inkrement/dekre- Signaal kasvab/kahaneb N biti
ment
võrra
S-S-1 = N / S-1-S = N
Delta-muutus
Signaalimuutus vahemikus R
|(S-S-1)| ≤ R
Vahemikukontroll!
Üleminekujada
Üleminek järgib kindlat mustrit Hulka kuuluvus!
Põhjus-tagajärg
Signaali A väide taktil T
põhjustab B väite taktil T+N
Digitaalsüsteemide verifitseerimise kursus
A-N –> B
18
Veel väidete variante
• Saab vaadata, kas signaal muutus mingi ajaakna 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
19
Konteiner-väited
• Kontrollivad andmete õigsust peale töötlust
Digitaalsüsteemide verifitseerimise kursus
20
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
21
SystemVerilog Assertions
•
SVA eristab kaht tüüpi väiteid:
1. Protseduursed väited
2. Deklaratiivsed väited
Digitaalsüsteemide verifitseerimise kursus
22
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
23
SVA: deklaratiivsed väited
• Deklaratiivsed väited, kirjutatakse simuleeritavast 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
24
SVA: deklaratiivsed väited, jadad
• Deklaratiivsed väited kirjeldavad
temporaalset käitumist
• Põhiliseks mõisteks on jada:
• jada = {(Bi,Ti),i V},
• kus Bi on Boole’i avaldis ajahetkel Ti, ja
V on aega tähistavate täisarvude hulk
(näiteks kellatakti number)
Digitaalsüsteemide verifitseerimise kursus
25
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
26
SVA: jadad ja ajadiagrammid
Digitaalsüsteemide verifitseerimise kursus
27
Boole’i funktsiooni kõrvutamine
jadaga
Digitaalsüsteemide verifitseerimise kursus
28
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
29
SVA. Operatsioonid jadadega: OR
• s1 OR s2 on tõene kui jada s1 või s2 on
saanud tõeseks:
OR
true
Digitaalsüsteemide verifitseerimise kursus
true
30
SVA. Operatsioonid jadadega:
intersect
• Sarnane JA-ga, kuid nõuab, et jadad
algaksid ja lõppeksid koos:
Digitaalsüsteemide verifitseerimise kursus
31
SVA. Operatsioonid jadadega:
first_match
• On tõene sellest hetkest kui jada
esmakordselt tõeseks saab:
Digitaalsüsteemide verifitseerimise kursus
32
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
33
SVA. Operatsioonid jadadega:
throughout
• Meenutagem, et jada on 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
34
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
35
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
36
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
37
SVA sisseehitatud funktsioonid
1. $onehot (avaldis) tõene kui täpselt üks bitt
avaldises on üks. $onehot0 (avaldis) tõene
kui täpselt üks bitt avaldises on null.
2. $inset (e1, e2, ...) on tõene kui e1 on võrdne
e2 või järgnevas listis loetletud väärtustega
3. $isunknown (avaldis) on tõene kui
avaldises on vähemalt üks määramata bitt.
Digitaalsüsteemide verifitseerimise kursus
38
SVA sisseehitatud funktsioonid
4. $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)).
5. $countones (avaldis) Tagastab ühtede
arvu avaldises
Digitaalsüsteemide verifitseerimise kursus
39
SVA. mitme kellaga
sünkroniseerimine
• SVA lubab sünkroniseerida erinevate
kellataktidega
• Näiteks:
@(posedge clk1) x1 ## (posedge clk2) x2
Digitaalsüsteemide verifitseerimise kursus
40
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
PSL Assertions based Verification with HLDD Tools
41
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
PSL Assertions based Verification with HLDD Tools
42
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…
43
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.
44
What assertions are?
Label
When to check
PSL
reqack: assert always (req -> next ack);
Verification
directive
Property to be
checked
• 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)
45
What assertions are?
• Flavors:
PSL (cont.)
– 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
46
What assertions are?
LTL
• Linear-Time (temporal) Logic (first introduced in 1981)
• No branches, time is a path
47
What assertions are?
CTL
• Computational Tree Logic (first introduced in 1977)
– branching-time logic, meaning that its model of time is a treelike 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".)
48
What assertions are?
Vacuity
• Vacuity is a philosophical concept (not specific to PSL)
• Vacuous pass occurs if a passing property contains
Boolean expression that, in frames of the given
simulation trace, has no effect on the property
evaluation.
req
req
ack
ack
PASSED
req
ack
FAILED
NOT ACTIVATED
vacuous pass
49
Assertion-based Verification
PSL Assertions based Verification with HLDD Tools
50
Descargar

Document