Advanced Debug With Questa
Advanced Debug With Questa
Agenda
Introduction Debug Enhancements for Traditional Languages Debugging Constraints Debugging Assertions Debugging Dynamic Objects
Todays Verification
Designs grow ~2x every 18 months
Moores law still applies 2x more logic and complexity to verify Higher quality verification demanded
Get new products to market faster Take maximum advantage of Moores law Build the most competitive products
OVM delivering advanced techniques to everyone Ability to create unknown out-of-body code experiences
Language and methodology are the starting point
SV Testbench/AVM 1.x SVA and PSL Functional coverage VOPT Verilog TLM support
Verification Management SV OVM 1.0 Power-Aware Simulation SV&SC Transaction View Assertion Thread View Post-Sim Debug
Window Manager Hyperlinked navigation FSM Viewing VHDL Hierarchical References VHDL Encryption Lossless Cover Merge
SV Testbench/AVM 2.x Unified Coverage Database VOPT SV, VHDL & SystemC Full SystemC TLM FSM extraction Source Code Annotation
Class browsing & wave viewing SV/SystemC thread debugging UPF Power-Aware SystemC TLM 2.0 Time to next simulation improvements
Proven Technology
Agenda
Introduction Debugging Enhancements for Traditional Languages Debugging Constraints Debugging Assertions Debugging Dynamic Objects
Message Viewer
Drag & drop signals into and out of group Drag & drop group as one object Collapse & expand group as needed
Delta-time steps
Hyperlinked variables
16
17
Control display of: * Transition counts * State counts * Conditional paths * Balloon popups * Wave cursor linking
FSM states: * Brown - Reset state * Yellow - Previous state * Green - Present state * Blue - Not one of the above
Agenda
Introduction Debugging Enhancements for Traditional Languages Debugging Constraints Debugging Assertions Debugging Dynamic Objects
Using Using
vsim solvefaildebug
class TBar extends TFoo; constraint c0 { a == c; } endclass TBar f = new; int status; $display("status = f.randomize();");
# test.v(22): randomize() failed due to conflicts between the following constraints: # test.v(5): ((f.a)<(f.b)) # test.v(6): ((f.b)<(f.c)) # test.v(13): ((f.a)==(f.c))
Agenda
Introduction Debugging Enhancements for Traditional Languages Debugging Constraints Debugging Assertions Debugging Dynamic Objects
Integrated Assertion Browser View assertions in wave window Assertion Thread Viewer
Best
Analysis Window
Blue low-line indicates assertion is inactive Simply D&D Assertions from Assertion Browser into Wave Window to view assertions Assertions can be expanded to view all signals associated with the assertion
Redundant failure: individual spawned thread failed but other threads still active
Yellow dot indicates additional thread spawned
Drag & drop signals into and out of group Drag & drop group as one object Collapse & expand group as needed
Agenda
Introduction Debugging Enhancements for Traditional Languages Debugging Constraints Debugging Assertions Debugging Dynamic Objects
Window
Default view organized by extended class, can also be viewed by base class
DUT DUT
Workspace Instances
Module based hierarchy created by vopt/vsim elaboration
module cpu_wb_environment; cpu_wb_agent wb_agent(); eth_mii_rx_agent rx_agent(); eth_mii_tx_agent tx_agent(); endmodule
Workspace Instances
Component hierarchy created at runtime
class cpu_wb_environment extends ovm_env; cpu_wb_agent wb_agent; eth_mii_rx_agent rx_agent; eth_mii_tx_agent tx_agent; function new() endfunction function void build; wb_agent = new("wb_agent",this); rx_agent = new("rx_agent",this); tx_agent = new("tx_agent",this); endfunction // new endclass module top; cpu_wb_environment env; initial begin env = new(env); env.run_test(); end endmodule
Wave window name reflects static class hierarchy scenario_base class reference can be added to and viewed in the wave window
Object Window contents are filtered to show only user added members
Summary
Questas debug features which will increase your verification productivity
industry leading integrated and interactive debugging features supporting mixed languages in single environment
Questas debug features will increase verification productivity of traditional languages and techniques
Questas supports advanced debug features required by todays advanced verification languages and methodologies