using systemverilog assertions in gate-level verification · pdf file ·...

20
Copyright © 2006 Verilab DVCon 2006 Using SystemVerilog Assertions in Gate-Level Verification Environments Mark Litterick (Verification Consultant) mark. litterick @ verilab .com

Upload: dodiep

Post on 17-Mar-2018

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

Copyright © 2006 Verilab DVCon 2006

Using SystemVerilog Assertions in

Gate-Level Verification Environments

Mark Litterick (Verification Consultant)

[email protected]

Page 2: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

2

Copyright © 2006 Verilab DVCon 2006

Introduction

• Gate-level simulations

– why bother?

– methodology

• Overview of ABV

– applicability to gate-level simulations

• Reliable reuse of SVA from RTL to gate-level

– clock distribution and negative hold-time

• Dedicated assertions for gate-level– timing checks and coverage

– dynamically controlling SVA

• Comment on synthesizable assertions

Page 3: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

3

Copyright © 2006 Verilab DVCon 2006

Gate-Level Simulations

• SoC features => gate-level supplements RTL simulations

complex clock relationships elaborate power management

dynamic frequency scaling multi-voltage islands

asynchronous operation functional test patterns

• Gate-level simulations are used to:

validate static timing analysis detect dynamic timing defects

check critical timing paths verify reset operation (no X filter)

• Gate-level simulations do not replace STA or prove synthesis

• Apply appropriate methodology to maximize return-on-effort

– identify features for gate-level validation in verification plan

– specify appropriate functional coverage

– target these features with intentional and stress test scenarios

Page 4: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

4

Copyright © 2006 Verilab DVCon 2006

Assertion-Based Verification

• Assertion-Based Verification is a methodology for improvingthe effectiveness of a verification environment

– define properties that specify expected behavior of design

– check property assertions by simulation or formal analysis

• Benefits of ABV include:

– improved error detection and reduced debug time due to observability

– improved integration due to built-in self-checking

– improved specification and documentation

• ABV considerations for gate-level simulations include:

– reliable reuse of assertions from RTL environment

– additional assertions dedicated to gate-level

– synthesizable assertions

Page 5: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

5

Copyright © 2006 Verilab DVCon 2006

Reusing Assertions

in Gate-Level Simulations

• When a verification environment depends on assertion-basedcheckers:

=> relevant assertions must continue to operate at gate-level

– otherwise benefits are lost

– level of checking is reduced (missed defects)

– failing simulations difficult to debug (lack of observability)

• Assertions must continue to work reliably at gate-level

– no false failures (wasted debug effort)

– no false passes (missed defects)

• Main gate-level attributes that affect assertion reliability:

– clock-tree distribution

– negative hold-time

Page 6: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

6

Copyright © 2006 Verilab DVCon 2006

RTL

Clock Distribution

• RTL clock is single net

– for each clock domain

– with no timing delays

• SVA sampling relative to anypart of clock net is reliable

– typically module CLK port

CLK

CLK

moduletop-level DUT

wire …

interface …

assign …

package …

module …

modport …

initial …

always …

task …

function …

module signals

CLK @ source

normal RTLsampling

CLK @ port

CLK @ rtl

s

SVA

Page 7: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

7

Copyright © 2006 Verilab DVCon 2006

Gate-Level

Clock-Tree Distribution

• Gate-level clock is distributednetwork of buffers/inverters

– clock-tree balanced at registers

– CLK port not on terminus

– may be multiple clock ports

• SVA sampling must berelative to balanced clock

– not module CLK port

– typically a register clock input

CLK

DATA

CLK

CLK

moduletop-level DUT

module signals

clock-tree delay

CLK @ source

hold setupunreliablesampling

CLK @ port

CLK @ reg

s

SVA

Page 8: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

8

Copyright © 2006 Verilab DVCon 2006

count[5:0] ‘b011111

setup

clk @ port

clk @ reg

s

‘b100000

$sample(bus) ‘b011111 ‘b100000

correct sampling

bind tb.top.mod sva_chk sva_chk_i (

.clk (register.CK),

.count (count));

Clock Connection Example

• Use conditional binding to appropriate clock for gate-level

bind tb.top.mod sva_chk sva_chk_i (

`ifdef RTL //only: not appropriate for gate

.clk (clk), // module port

`else // GATE only: not present in RTL

.clk (register.CK), // register clock

`endif

.count (count));

property p_count;

@(posedge clk)

!$stable(count) |->

(count == $past(count)+1’b1);

endproperty

bind tb.top.mod sva_chk sva_chk_i (

.clk (clk),

.count (count));

count[5:0] ‘b011111

setup

clk @ port

clk @ reg

s

‘b100000

$sample(bus) ‘b011111 ‘b110101

false failure because some bitschange faster than others

Page 9: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

9

Copyright © 2006 Verilab DVCon 2006

Negative Hold-Time

• Normal flip-flop model

– data setup-time prior to clock

– data hold-time after clock

CLK

D

++setup

hold

Positive Hold-Time

CLK

D

+setup hold

_

Negative Hold-Time

early CLK

early Q / late D current

late CLK

next

late Q previous

setup

current

hold

clock-skew

• Negative hold-time– allows data intended for thenext cycle to change prior toclock edge

– allows for increased clock skew

– eases clock-tree synthesis

Page 10: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

10

Copyright © 2006 Verilab DVCon 2006

SVA with

Negative Hold-Time

• Problem: SVA sampling inpreponed region (value justbefore clock event) is notreliable in presence ofnegative hold-times

N-bit BUS current

CLK

next

$sample(BUS) previous

su

not current or next

h

1-bit SIG

$sample(SIG)

next

not low

su h

s sfalse fail expected pass

property p_nht_ex;

@(posedge CLK)

$rose(SIG) |->

(BUS==`next) && ($past(BUS)==`current);

endproperty

a_nht_ex : assert property (p_nht_ex);

Page 11: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

11

Copyright © 2006 Verilab DVCon 2006

SVA in Clocking Block

• SVA must operate withinthe scope of a clockingblock for negative hold-times

– input skew must be greaterthan hold-time value

– skew of #0 or #1step do notwork reliably

– input skew must not exceedsetup-time value

– works for RTL and gate-level

N-bit BUS current

CLK

next

$sample(BUS) previous

su

current

h

1-bit SIG

$sample(SIG)

next

su h

s snot triggered pass

clocking ck_nht @(posedge CLK);

input #50ps SIG, BUS;

property p_nht_ex;

$rose(SIG) |->

(BUS==`next) && ($past(BUS)==`current);

endproperty

endclocking

a_nht_ex : assert property (p_nht_ex);

Page 12: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

12

Copyright © 2006 Verilab DVCon 2006

Dedicated Assertions

for Gate-Level Simulation

• Features targeted for Gate-Level validation may not be fullyaddressed by RTL assertions and coverage

– add new assertions for both RTL and Gate-Level

– add dedicated assertions for Gate-Level only

• Dedicated assertions can be:

– regular cycle-based properties

– non-cycle-based timing checks

• SVA can be used to implement timing checks

– timing checks can be used for assertions and coverage

– under control of verification environment

– supplements static timing analysis and structural timing checks inspecify blocks, does not replace them

Page 13: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

13

Copyright © 2006 Verilab DVCon 2006

Timing Checks

• Gate-level models have timing checks built-in

– system tasks in specify block (Verilog, SystemVerilog) or VITAL (VHDL)

• Not all timing defects trigger existing checks; for example:

– no glitch present in best-case simulation

– narrow pulse in worst-case, but not narrow enough to violate $width

– probable glitch in real-world (between best-case and worst-case)

clk0

select

clk1

RTL mux_clk

BC mux_clk

WC mux_clk

Page 14: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

14

Copyright © 2006 Verilab DVCon 2006

SVA Timing Checks

• SVA allows time andEventExpressionformal arguments

• Actual arguments canbe static values ordynamic variables

• Can be used for:– pulse width violations(e.g. for clock qualitychecks at multiplexer)

– period checks (e.g fordynamic MVI protocol)

– etc.

property p_min_time(start,stop,duration); time start_time; @(start) (1,start_time = $time) |=> @(stop) (($time - start_time) >= duration);endproperty

property p_min_high; p_min_time(posedge clk, negedge clk, 2ns);endpropertya_min_high : assert property (p_min_high);

time minp = 6ns;property p_min_period; p_min_time(posedge clk, posedge clk, minp);endpropertya_min_period : assert property (p_min_period);

Page 15: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

15

Copyright © 2006 Verilab DVCon 2006

SVA Timing Coverage

• SVA timing checks canalso be used for functionalcoverage

• cover property statementrecords a hit if propertyevaluates to true

• Can be used to ensuregate-level environmentcreated the requiredtiming relationships

property p_max_time(start,stop,duration); time start_time; @(start) (1,start_time = $time) |=> @(stop) (($time - start_time) < duration);endproperty

property p_just_before; p_max_time(data, posedge clk, 30ps);endproperty

property p_just_after; p_max_time(posedge clk, data, 30ps);endproperty

c_jb : cover property (p_just_before);c_ja : cover property (p_just_after);

Page 16: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

16

Copyright © 2006 Verilab DVCon 2006

Performance and Reliability

• For performance and reliability reasons normally avoid:

– assertions which trigger every clock cycle

– non-synchronous assertions

• Performance overhead is much less in gate-level than RTL

– many more simulation events occurring anyway

– additional performance degradation not noticeable

– care still required with coverage definition in particular

• Timing properties are prone to false failures

– especially at start of simulation

– dynamically control assertions and coverage if required

– enable assertions and coverage only when safe

– beware of over-constraining and missing defects at critical times

Page 17: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

17

Copyright © 2006 Verilab DVCon 2006

Dynamically Controlling

SVA Timing Checks

• Named assertion and coverage statements controlled by:

– $asserton, $assertoff and $assertkill system tasks

– disable iff clause

– disable statement

• Example:

– controlling checks on internally generated launch-and-capture clock forat-speed transition fault scan tests

internal clk

scan_modescan_enable

scan clk

tester clk

launch capturescan in/out scan

Page 18: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

18

Copyright © 2006 Verilab DVCon 2006

Controlling SVA using

$asserton and $assertoff

property p_min_high; // as before...a_min_high : assert property (p_min_high) else $error(“%m: width violation on positive pulse”);initial $assertoff (a_min_high);

property p_pre_launch; @(posedge clk) $fell(scan_enable) |-> scan_mode;endpropertyproperty p_post_capture; @(posedge clk) $rose(scan_enable) |-> scan_mode;endproperty

a_pre_launch : assert property (p_pre_launch) $asserton(a_min_high); else $error(”%m: fall on scan_enable when not in scan_mode");a_post_capture : assert property (p_post_capture) $assertoff(a_min_high); else $error(”%m: rise on scan_enable when not in scan_mode");

Page 19: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

19

Copyright © 2006 Verilab DVCon 2006

Synthesizable Assertions

• ABV can be extended into hardware-assisted verification flows

– acceleration

– emulation

– FPGA prototyping

• Restricting assertion coding to synthesizable subset enables

– embed assertion logic in physical netlist

– synthesize part of testbench into target hardware

• Different scenario to ensuring testbench environment workswith both RTL and gate-level representations of DUT

– mentioned for completeness only...

– ...not the focus for this paper!

Page 20: Using SystemVerilog Assertions in Gate-Level Verification · PDF file · 2007-06-01module modport initial always ... • SVA must operate within the scope of a clocking block for

20

Copyright © 2006 Verilab DVCon 2006

Conclusion

• Benefits of ABV can be extended into gate-level verification

– apply appropriate methodology to target key features

• SVA assertions can be reliably reused from RTL to gate-level

– careful connectivity to terminal points of clock-tree

– use clocking block with appropriate input skew

• Additional assertions can be specified for gate-level

– functional and timing checks

– additional coverage points for key features

• Improve effectiveness of verification environment

– detect functional failures due to incorrect STA constraints

– detect and isolate dynamic timing defects

[email protected]