IP-based Design • Higher levels of abstraction • Extensive IP use & reuse
Early Software development
Source : SNUG2009
SoC Integration
Reusable Hardware Components
Hardware Development Cycle HW Integration Verification
HW/SW Integration
Software Development Cycle
Virtual modelling HW/SW Validation HW Prototyping
Firmware/ Integration OS Integration
Physical Design
Middleware
Fabrication
Application Dev
SOLUTON Earlier + Robust HW/SW integration
Reusable Software Components
HW/SW Interface (HW View)
IP Block
Register Select Signals Registers Processor Bus Interface
State Machine + Address Decoder + Write Data
Register Register
Logic block
Register
Write data Read Data Multiplexer bitfield read data from Logic
Functional Interfaces
HW/SW Interface (HW View) Memory Mapped Register Write Data
To HW
Decode Logic
Clock Enable
Processor Bus Interface
Address Enable Control
Transaction is valid for this block AND Address = Register Offset AND Transaction is a WRITE
Reset
Read Data Multiplex logic
Read Data
If Address = Register offset then Select this read data Else if Address = ... ... ... End if
Other read data
HW/SW Interface (HW View) interrupt_status_register Interrupt From HW SET
CLR Processor Bus Interface
Address Enable Control
Transaction is valid for this block AND Address = Interrupt Status Register AND Transaction is a READ
Read Data
HW/SW Interface (SW View)
Processor Bus Interface
MEMORY_MAP
IP Block
Memory Map
Memory Map Offset
4-Jul-10
7
Register Definition Bitfield Offset
Register name Bitfields
Bitfield Access Type e.g. RO-R2C
RX_FIFO_CTRL 31
30
28
26
25
24
23
22
21
20
19
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
RO
RO
RO
RO
RO
RO
RO RO RO
RO
FIFO_DEPTH
FIFO_ALARM
EN_SYNCH PARITY ERROR_CHK
F_EXTEND
4-Jul-10
16
FIFO_ENABLE
FIFO_CTRL
Bitfield Width
17
FIFO_RESET
RO
18
OE_ERROR
RW
27
Status
RO
29
0
FIFO_RESET
1
FIFIO_CLEAR
2
FIFO_TX_EN
3
FIFO_RX_EN
0
Bitfield Enumerated Values
8
Modelling the system
23
RO
22
21
20
19
18
17
RO
16
RO
15
14
RO
13
RO
12
11
10
9
8
7
6
RO
RO
5
4
3
2
RO
RO
RO
1
0
RO
F_EXTEND
MEMORY_MAP
24
EN_SYNCH PARITY ERROR_CHK
MEMORY_MAP
25
FIFO_ALARM
SPI
26
FIFO_DEPTH
0x5000
UART
27
FIFO_RESET
0xF000000
Graphics Sub-system
0x4000
28
RW
Status
0x8000000
Peripheral Sub-system
0x3000
29
OE_ERROR
Memory Sub-system
USB
30
RO
FIFO_RESET
0x000000
RX_FIFO_CTRL 31
FIFO_CTRL
4-Jul-10
MEMORY_MAP
Sub-Systems Processor(s)
Registers
IP Blocks
9
System Processors
Processor 3
MEMORY_MAP
Processor 2
MEMORY_MAP
Processor 1
MEMORY_MAP
System Instantiated Sub-Systems
00000 1C0000 4FFFF
000000 800000
Leaf IPs
8FFFFF
00000 1C0000 4FFFF
Memory Maps
4-Jul-10
10
Traditional HW/SW Interface Design Specification
IP-LEVEL Hardware D/V
SYSTEM-LEVEL Hardware D/V
SYSTEM-LEVEL Software D/V
Feedback
Feedback
HW Design
interpret
interpret SYSTEM RTL Design
Firmware Libraries
Register interpret Specify
Document interpret
Firmware testcases RTL Test
SYSTEM Test
Feedback
interpret interpret
Silicon testcases interpret
Feedback
Refinement points/Milestones
4-Jul-10
11
Compressed Design Cycle Design Specification
HW Design
IP-LEVEL Hardware D/V
interpret Feedback
RTL Test
interpret Feedback SYSTEM RTL Design
Register interpret Specify
Document
SYSTEMLEVEL Hardware D/V
SYSTEM Test interpret
Feedback Firmware Libraries interpret
interpret
SYSTEM-LEVEL Software D/V Firmware testcases
interpret Silicon testcases Feedback
4-Jul-10
12
HW/SW Interface (Verification) Specification View
SW View
HW View
Verification View
Verification Evolution New Verification thinking User Environment Applications Class Library HVL Simulation Environment
• New verification environment -
OOV Scoreboard/Checkers Constrained random Coverage driven Monitors/Drivers – TLM
• Emergence of HW verification languages -
Specman ‘e’ Vera SystemC/C++ SystemVerilog
High-level Verification Methodology
User Environment Applications Class Library HVL Simulation Environment
A high-level verification methodology consists of an HVL running in a simulation environment which can interact with the RTL. The HVL’s object-oriented infrastructure can be organized and extended to deliver high levels of productivity for specific user applications. The key mechanisms are stimulus generation, monitoring and coverage. Bailey/Martin 2007
High-level Verification Methodology
User Environment Applications Class Library HVL Simulation Environment
Evolution of the Verification methodologies (VM) • A-E-I-O-U(VM) where I = V
Verification IP Reuse Application oriented User Capability
Monitor Monitor class wb_slave_monitor class Monitor wb_slave_monitor
System System OVC
WB Library OVC
Global Bus Monitor class wb_monitor
WB Library OVC
Master Agent [n]Global Bus Monitor [1] Driver MasterAgent [0] Driver
Master Agent class wb_monitor
Sequence Sequence r
class Driver Sequencer r wb_slave_driver class Agent [n] Master class wb_slave_driver Master Agent Global [1] Bus Monitor wb_master_driver Monitor wb_slave_sequence Driver Class Sequence MasterAgent [0] class Monitor wb_monitor r class wb_slave_sequence Driver Sequence r class class class wb_master_sequencer r Driver class Monitor Sequencer rwb_slave_monitor wb_slave_driver wb_slave_ag class wb_slave_monitor class class class wb_slave_driver wb_slave_agent wb_master_monitor class wb_master_agent Class Master Agent [n] wb_master_driver Monitor wb_slave_sequence Class Master Agent [1] Monitor r class wb_slave_sequence Driver Sequence Slave Agent [n] MasterAgent [0] class class wb_master_sequencer wb_slave_monitor r class Monitor Driver Sequence r Agent Slave [1] class class wb_slave_ag class wb_slave_monitor Driver Sequencer Driver Sequence r Agent wb_slave_agent Slave [0] wb_slave_driver wb_master_monitor class wb_master_agent class Driver Sequence r class wb_slave_driver class Class Driver Sequencer r wb_master_driver Monitor wb_slave_driver class Agent [n] wb_slave_sequence Class Slave class Monitor rwb_slave_driver class wb_slave_sequence Class Slave Agent [1] wb_slave_driver class Monitor class wb_master_sequencer wb_slave_monitor r class Monitor wb_slave_sequence Driver Class Sequence Slave Agent [0] class wb_slave_ag class Monitor wb_slave_monitor r class wb_slave_sequence Driver Sequence r wb_slave_agent Monitor wb_master_monitor class class Sequencer wb_master_agent class wb_slave_sequencer r class class Driver rwb_slave_monitor wb_slave_driver wb_slave_ag class wb_slave_monitor class class class wb_slave_driver wb_slave_agent wb_slave_monitor class wb_slave_agent Class Slave Agent [n] wb_slave_driver Monitor wb_slave_sequence Class Slave Agent [1] Monitor r wb_slave_sequence Driver Sequence class Slave Agent [0] class class wb_slave_sequencer wb_slave_monitor r class Monitor Driver Sequence r wb_slave_ag class wb_slave_monitor class class Driver Sequencer r wb_slave_agent wb_slave_monitor class wb_slave_agent wb_slave_driver class class wb_slave_driver Class wb_slave_driver Monitor wb_slave_sequence Class Monitor r class wb_slave_sequence class class wb_slave_sequencer wb_slave_monitor r class Monitor wb_slave_ag class wb_slave_monitor class wb_slave_agent wb_slave_monitor class wb_slave_agent
WB Library OVC Class
LCD Specification
OVC Libraries
OVM SystemVerilog code & scripts
LCD OVC
Auto-generation of IP OVM infrastructure Standard sequence
User sequence
Register Sequencer
• •
RDB updater & checker
OVC
Analysis port
Sequencer
Register Verification Environment
•
WB-S LCD Controller
100 % autogeration with the possibility of user extensions
Sending 32 bit vector sequences to the driver
Register sequencer: •
Monitor
Modular and reusable Bus protocol changes (WB -> APB) doesn’t require any changes in the register verification part
OVC Master sequencer: •
Register Map and DB Driver
Register verification is separated from the standard slave OVC:
Executing sequences from sequence library (register data) TLM connection to the OVC master sequencer using adaptor sequences
Monitor sending the read/write data to the analysis port RDB checker & updater : •
Link between bus activity and RDB
VM attributes
COMPONENT
REGISTERS
REGISTER & BITFIELDS
REGISTER ATTRIBUTES
Conclusion
HW/SW interface requires critical verification attention HW/SW interface modelling is key to synchronizing teams HW/SW interface modelling is key to allowing smoother VM transition Demoed Auto-generation of OVM/UVM from a single source Looking forward to the next transition 4-Jul-10