Upload
khangminh22
View
0
Download
0
Embed Size (px)
Citation preview
What is Verifica8on Reuse?
• Verifica8on Reuse: – achieving verifica$on goals through effec$ve code reuse
• Specifically: – reuse verifica8on components between environments – reuse verifica8on components between hierarchies – reuse verifica8on environments between projects – also reuse of base-‐classes, pa3erns & methodology
• Several different paradigms: – referred to as horizontal and ver$cal reuse
© Verilab & Accellera 2
“Code reuse, is the use of exis$ng so=ware, or so=ware knowledge, to build new so=ware” Wikipedia
Horizontal Reuse • Reusing verifica8on code without changing role
– similar responsibili8es, structure & use-‐case
• Reuse s$mulus, checks, coverage & messages – same s8mulus API presented to user or test writer
• Horizontal reuse usually means predictable use-‐case – typically achieved by configura8on, adap8on and flexibility – code is designed for more than one known use-‐case
© Verilab & Accellera 3
BLOCK B env
SB C
D S
M
Horizontal Reuse examples • Reuse verifica$on component in mul8ple envs
• Reuse verifica$on environment in mul8ple projects
© Verilab & Accellera 4
BLOCK A env
SB
M
C
S D
M
S D
M
PROJECT X env
SB C
D S
M
S D
M
PROJECT Y env
SB C
D S
M
S D
M
DIFFERENT DUT
DERIVATIVE DUT SAME ROLE & ENV, DIFFERENT CONFIG
SAME ROLE, DIFFERENT ENVIRONMENT
Ver8cal Reuse • Reusing verifica8on code with a different role
– different responsibili8es, structure & use-‐case • Reuse s$mulus, checks, coverage & messages, but…
– s8mulus nested or layered inside high-‐level scenario (with different user API)
– or s8mulus not reused at all (but checks, coverage & messages are)
• Ver$cal reuse usually means unknown use-‐cases – typically achieved by encapsula8on and extensibility – code is designed to allow the user to do other things
© Verilab & Accellera 5
Ver8cal Reuse Examples • Reuse passive block-‐level in top-‐level environment
• Reuse ac$ve component in top-‐level context
© Verilab & Accellera 6
ACTIVE BLK
SB C
D S
M
S D
M
PASSIVE BLK
SB
M M
C
BLOCK A env
SB
M
C
S D
M
S D
M
DIFFERENT STRUCTURE, NO STIMULUS (STIMULUS COMES FROM ANOTHER UVC)
DIFFERENT ROLE, STIMULUS IS PART OF HIGH-LEVEL SCENARIO (NOT SO RANDOM)
Reuse in UVM • UVM enables reuse, but does not guarantee it
– SystemVerilog object-‐oriented program paradigm (OOP) – UVM provides reusable base-‐classes & methodology – UVM reuses standard so=ware paIerns for u8li8es: factory, configura8on database, event pools, phases, ...
• Reuse affects all aspects of environments, including:
© Verilab & Accellera 7
– architecture – configura8on – s8mulus
– checks – coverage – modeling
Tutorial Content
© Verilab & Accellera 8
UVM
STIMULUS
CHECKS
COVERAGE
MODELING
ARCHITECT -‐URE
CONFIG
Vertical & Horizontal Reuse of UVM Environments
Configuration Object Encapsulation & Appropriate
config_db Usage
Adaptive Protocol Checks - Config Aware Assertions
Self-Tuning Functional Coverage -
Strategy & Implementation
Parameterized Classes, Interfaces & Registers
Advanced UVM Register Modeling & Performance
Effective Stimulus & Sequence Hierarchies
Behind the Scenes of the UVM Factory
Demystifying the UVM Configuration Database
DVCon EU 2014
DVCon EU 2015
Top-‐Level Verifica8on Requirements • Top-‐Level has different concerns to block-‐level
– func8onal correctness & performance of full applica$on – interac$on of modules, sub-‐systems & shared resources – opera8on with all clock, power & test domains – connec$vity of all blocks & sub-‐systems
• Cannot achieve closure on all these by looking only at external pins in a complex top-‐level SoC – require checks, coverage & debug messages at all levels
NOT ENOUGH TO PROVE OPERATION OF THE PERFECT CHIP (ALSO NEED TO ISOLATE & DEBUG FAILURES EFFECTIVELY)
© Verilab & Accellera 10
Ver8cal Reuse • Three observa8ons:
– ver8cal reuse is hard to prepare for due to change of role and unknown use-‐cases
– top-‐level environment o\en must be developed in parallel with block-‐level
– ver8cal reuse is effort for implementer and only adds value for the re-‐user
• Reality check: – don’t try to second guess everything the user might need – get structure right, validate opera8on & allow for adap8on
© Verilab & Accellera 11
REUSE GUIDELINES RETROFITTING REUSE
EFFORT: HOW MUCH?
TIME: SCHEDULE IMPACT?
COST: WHO PAYS?
Ac8ve/Passive Opera8on • Ac$ve components provide or affect the s$mulus driven to the DUT, influencing the s8mulus flow
• Passive components do not provide or affect the s$mulus in any way, they just observe
• Ac$ve/Passive mode affects: – run-‐8me architecture – func8onal capability – error tolerance – debug capability
© Verilab & Accellera 12
ACTIVE BLOCK
ENV S LIB SB
RESP AGENT
INTE
RFA
CE
S
SLAVE ENV
D VIF
M VIF
C
DUT REQ AGENT
INTE
RFA
CE
S
MASTER ENV
D VIF
M VIF
C
C
SVA
SVA
Ac8ve Block-‐Level
• S$mulus is provided by sequencers and drivers – proac$ve master generates request s8mulus – reac$ve slave generates response s8mulus
• Checks performed by interfaces, monitors & scoreboards • Coverage is collected by monitors & scoreboards • Messages are generated by all components
© Verilab & Accellera 13
PASSIVE BLOCK
ENV SB
RESP AGENT
INTE
RFA
CE
SLAVE ENV
M VIF
C
DUT REQ AGENT
INTE
RFA
CE
MASTER ENV
M VIF
C
C
SVA
SVA
Passive Block-‐Level
• No s$mulus is performed by passive components – sequencers and drivers are not even present
• Checks are s8ll performed by interfaces, monitors & scoreboards
• Coverage is s8ll collected by the monitors & scoreboards • Messages are generated by the remaining components
© Verilab & Accellera 14
ACTIVE TOP-LEVEL
ENV S LIB
SB
C
OUT env
OUT agent
M
if
C
D
BUS agent
M inte
rfac
e
S
C
BUS env
TXRX env
S
D
TX agent
M inte
rfac
e
S
D
RX agent
M inte
rfac
e
S
SB
C
D
RESP agent
M
interface
S
C
RESP env
DUT TOP
A
BLOCK-A env
SB
M M
C
if if
Passive Reuse in Top-‐Level
ALL CHECKS, COVERAGE & MESSAGES REUSED TO ENSURE: • EFFECTIVE VALIDATION OF BLOCK IN TOP-LEVEL CONTEXT • COMPREHENSIVE TOP-LEVEL OPERATION AND DEBUG
© Verilab & Accellera 15
Ac8ve/Passive Misuse
© Verilab & Accellera 16
▵ low-‐level UVC OK but env ignores ac$ve/passive ▵ drivers post sequence items to scoreboard ▵ drivers doing func8onal $meout checks ▵ coverage defined in ac$ve components ▵ configura$on updates from sequence or driver ▵ important messages from drivers ▵ error injec$on traffic reported as a warning ▵ passive components control end-‐of-‐test schedule ▵ uncontrollable end-‐of-‐test scoreboard checks ▵ ...
Ac8ve/Passive Guidelines
© Verilab & Accellera 17
➭ complete env must consider ac$ve/passive ➭ do not connect scoreboards to ac$ve components ➭ perform func8onal checks in passive comps ➭ collect func8onal coverage in passive comps ➭ generate important messages in passive comps ➭ update configura$on only from passive comps ➭ promote warnings to errors in passive mode ➭ do not control end-‐of-‐test from passive comps ➭ allow disable for scoreboard end-‐of-‐test check ➭ ... INTERNAL BUS MAY STILL BE ACTIVE
WHEN TOP SCENARIO COMPLETES
(NOT SO OBVIOUSLY) ACTIVE STIMULUS IS ALSO NOT PRESENT
TOP-LEVEL SCENARIO DECIDES WHEN TO END THE TEST
(OBVIOUSLY) ACTIVE COMPONENT IS NOT PRESENT IN PASSIVE MODE
UPDATE PSEUDO-STATIC CONFIG: • NOT SEQUENCE, BUT MONITOR • NOT REG WRITE, BUT PREDICT
Problems of Scale • Top-‐level environment is already complex • Integra8ng many block-‐level environments introduces addi8onal requirements: – build and integra8on encapsula$on – configura$on containment and consistency – namespace isola8on and cohabita$on
© Verilab & Accellera 18
BLOCK-LEVEL SUPPLIERS NEED TO MAKE THINGS AS EASY AS POSSIBLE TO INTEGRATE AND REUSE
Problems of Scale
© Verilab & Accellera 19
▵ environment pulled together only in base-‐test ▵ mul$ple dispersed config objects and fields ▵ mul$ple agent interfaces required for top-‐level ▵ macro defini$ons have global scope ▵ enumera$on literals and types without prefix ▵ inflexible inappropriate low-‐level coverage ▵ incorrect message verbosity resul8ng in cluIer ▵ ...
Scale Guidelines
© Verilab & Accellera 20
➭ encapsulate all sub-‐components in env not test ➭ use hierarchical configura$on objects for env ➭ combine mul8ple I/Fs into hierarchical interfaces ➭ avoid namespace collisions by using scope prefix ➭ encapsulate coverage in separate class for overload ➭ apply more rigorous message verbosity rules ➭ ...
TEST IS NOT REUSED BUT ENVIRONMENT IS
USER ONLY SETS TOP-CONFIG WHICH PROPAGATES DOWN
USER ONLY HAS ONE INTERFACE TO INSTANTIATE & ADD TO CONFIG_DB
MESSAGE CLUTTER UNACCEPTABLE WITH A LOT OF REUSED BLOCK ENVS
ACTIVE TOP-LEVEL
ENV S LIB
SB
C
OUT env
OUT agent
M
if
C
D
BUS agent
M inte
rfac
e
S
C
BUS env
TXRX env
S
D
TX agent
M inte
rfac
e
S
D
RX agent
M inte
rfac
e
S
SB
C
D
RESP agent
M
interface
S
C
RESP env
DUT TOP
BLOCK-X env
SB
M
M M
if if
if
C BLOCK-A
env SB
M M if if
C BLOCK-B
env
M
M
M
M
M
if
if if
if
if
C
A B
X
Un-‐Encapsulated Reuse
© Verilab & Accellera 21
UN-ENCAPSULATED REUSE IS ERROR-PRONE, HARD TO MAINTAIN & TOO MUCH EFFORT
MANY INCONSISTENT CONFIG OBJECTS & FIELDS TO MAINTAIN
MANY SMALL INTERFACES TO INSTANTIATE & SET IN CONFIG_DB
MANY COMPONENTS TO INSTANTIATE & CONNECT
ACTIVE TOP-LEVEL
ENV S LIB
SB
C
OUT env
OUT agent
M
if
C
D
BUS agent
M inte
rfac
e
S
C
BUS env
TXRX env
S
D
TX agent
M inte
rfac
e
S
D
RX agent
M inte
rfac
e
S
SB
C
D
RESP agent
M
interface
S
C
RESP env
DUT TOP
BLOCK-X env
SB
M
M M
C BLOCK-A
env SB
M M
interface
C BLOCK-B
env
M
M
M
M
M C
A B
X
interface interface
Encapsulated Reuse
© Verilab & Accellera 22
HIERARCHICAL INTERFACE (1 INST & 1 SET IN CONFIG_DB)
BLOCK-LEVEL ENV ENCAPSULATION
HIERARCHICAL CONFIG (TOP CONTROLS BLOCKS, BLOCKS CONTROL UVCS)
PROPER ENCAPSULATION MAKES VERTICAL REUSE OF MANY BLOCK-LEVEL ENVS A FEASIBLE PROPOSITION
What is the Cost of Reuse? • Addi8onal effort in verifica$on components
– architectural concepts are provided by methodology – shortcuts & quick fixes save 8me in ini8al project... – ...but in the long term all bad coding style costs money – effort here benefits both supplier and reuser
• Addi8onal effort in verifica$on environments – packaging environment, config, interfaces all costs effort – effort here only really benefits reuser
• Total cost is rela8vely low but not zero
© Verilab & Accellera 23
REUSE DOES NOT COME FOR FREE – YOU MUST DO SOMETHING !
Reality Check
• Observa8on: since reuse does not come for free... • ... it will not be correctly implemented in first instance!
• Specifically: • first project implemen8ng block-‐level has other priori$es • top-‐level project needs to start in parallel with block-‐level • second project using the block should factor in the costs • trade-‐off reuse costs verses design from scratch • trade-‐off reuse costs verses quality & debug improvements • architectural fixes for reuse should be retrofi;ed to source (since working regression provides the best cross-‐check)
© Verilab & Accellera 24
What is Retroficng?
• Retroficng Reuse: • adding reuse capability to an exis8ng component or environment that does not yet support reuse
• Specifically: • fixing a verifica8on component to comply with guidelines • re-‐architec$ng a block-‐level environment for ver8cal reuse • ...aIemp$ng reuse of an environment for the first 8me!
“RetrofiZng refers to the addi$on of new technology or features to older systems” Wikipedia
© Verilab & Accellera 25
Strategy for Retroficng • First, determine what you have
• probably supplied documenta8on will not be good enough • print & review the topology, config and factory secngs
• Next, determine scope of rework • ac8ve/passive build control or major scoreboard reconnect?
• Implement changes in block-‐level environment • run passing block-‐level regressions throughout • validate passive opera8on at block-‐level with shadow instance
• Use in the top-‐level environment • ensure top-‐level con8nues to run with no bad side-‐effects • ensure block-‐level checks, coverage and messages work
© Verilab & Accellera 26
VALIDATE PASSIVE MODE USING BLOCK-LEVEL REGRESSIONS
ACTIVE BLOCK
ENV S LIB SB
RESP AGENT
INTE
RFA
CE
S
SLAVE ENV
D VIF
M VIF
C
DUT REQ AGENT
INTE
RFA
CE
S
MASTER ENV
D VIF
M VIF
C
C
SVA
SVA
PASSIVE BLOCK
ENV SB
M M
C
if if
BLOCK-LEVEL BASE TEST
Passive Shadow
© Verilab & Accellera 27
SHADOW PASSIVE ENVIRONMENT
PROVE FUNCTIONALITY USING A PASSIVE SHADOW ENV FOR UP-FRONT OR RETROFITTED PASSIVE OPERATION
TWO INSTANCES OF THE SAME ENVIRONMENT ONE IN ACTIVE MODE, ONE IN PASSIVE MODE
NORMAL ACTIVE ENVIRONMENT
References and Further Reading • “Advanced UVM Tutorial” Verilab, DVCon Europe 2014, www.verilab.com/resources
• “Advanced UVM Register Modeling – There’s More Than One Way To Skin A Reg” M.Li3erick & M.Harnisch, DVCon 2014, www.verilab.com/resources
• “Pragma$c Verifica$on Reuse in a Ver$cal World” M.Li3erick, DVCon 2013, www.verilab.com/resources
© Verilab & Accellera 28