System on Chip Design and Test ECE 715

Slides:



Advertisements
Similar presentations
VERILOG: Synthesis - Combinational Logic Combination logic function can be expressed as: logic_output(t) = f(logic_inputs(t)) Rules Avoid technology dependent.
Advertisements

//HDL Example 8-2 // //RTL description of design example (Fig.8-9) module Example_RTL (S,CLK,Clr,E,F,A);
Traffic light contoller using FSM
Combinational Logic.
Reconfigurable Computing S. Reda, Brown University Reconfigurable Computing (EN2911X, Fall07) Lecture 07: Verilog (3/3) Prof. Sherief Reda Division of.
CSE 201 Computer Logic Design * * * * * * * Verilog Modeling
The Secrets of Practical Verification… © 2008 Think Verification.
System Integration & Silicon Implementation Group Dept. of Computer Science & Information Engineering NCTU, Taiwan IP Protection : for Digital VLSI Implementations.
FSM examples.
Pulse-Width Modulated DAC
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Senior Design I Lecture 7 - Verification.
Ring Counter Discussion 11.3 Example 32.
A Tale of Two Languages: SystemVerilog & SystemC by David C Black Senior MTS Doulos.
Gaurav Gupta Freescale Semiconductors Adiel Khan, Parag Goel, Amit Sharma, Varun S, Abhisek Verma Synopsys
1 VERILOG Fundamentals Workshop סמסטר א ' תשע " ה מרצה : משה דורון הפקולטה להנדסה Workshop Objectives: Gain basic understanding of the essential concepts.
Registers CPE 49 RMUTI KOTAT.
Functional Coverage Jean-Michel Chabloz. Coverage Code coverage, expression coverage, etc. are automatically inferred Functional coverage specifies what,
Using Formal Verification to Exhaustively Verify SoC Assemblies by Mark Handover Kenny Ranerup Applications Engineer ASIC Consultant Mentor Graphics Corp.
SoC Verification HW #2 TA: Wei-Ting Tu Assignment: 04/12/06
Chapter 11: System Design Methodology Digital System Designs and Practices Using Verilog HDL and 2008, John Wiley11-1 Ders 8: FSM Gerçekleme ve.
SystemVerilog and UVM for the ABC system verification Francis Anghinolfi 14 Nov 2013 SystemVerilog MiniWorkshop.
Optimization of Verification Effort using Reusable Sequence Collection Dipesh Handa Gaurav Chugh Gaurav Minda Kumar Rajeev Ranjan.
Chuck Benz ASIC & FPGA Design csrGen: Automated CSRs for ASIC/FPGA Processor Interfaces Chuck Benz Chuck Benz ASIC & FPGA Design
1 Extending FPGA Verification Through The PLI Charles Howard Senior Research Engineer Southwest Research Institute San Antonio, Texas (210)
Behavioral Modelling - 1. Verilog Behavioral Modelling Behavioral Models represent functionality of the digital hardware. It describes how the circuit.
SVA Encapsulation in UVM enabling phase and configuration aware assertions by Mark Litterick Verification Consultant Verilab GmbH, Munich, Germany.
1 Arithmetic, ALUs Lecture 9 Digital Design and Computer Architecture Harris & Harris Morgan Kaufmann / Elsevier, 2007.
Exp#7 Finite State Machine Design in Verilog COE203 Digital Logic Laboratory Dr. Ahmad Almulhem KFUPM Spring 2009.
Overview Logistics Last lecture Today HW5 due today
Project 2: Byte Rotation
EECE6017C - Lab 0 Introduction to Altera tools and Basic Digital Logic
Supplement on Verilog FF circuit examples
Digital Design using FPGAs and Verilog HDL
Supplement on Verilog for Algorithm State Machine Chart
Figure 8.1. The general form of a sequential circuit.
Last Lecture Talked about combinational logic always statements. e.g.,
ELEN 468 Advanced Logic Design
Verilog Introduction Fall
Testbenches HDL that tests another module: device under test (dut)
Digital System Verification
OVM & UVM Techniques for On-the-fly Reset
‘if-else’ & ‘case’ Statements
TODAY’S OUTLINE Procedural Assignments Verilog Coding Guidelines
RLE Compression using Verilog and Verification using Functional Simulation 3/8/2017.
Lecture 9: Testbench and Division
Registers and Counters
Stitching UVM Test benches into Integration-Level
Stitching UVM Test benches into Integration-Level
Testbenches HDL that tests another module: device under test (dut)
FSM MODELING MOORE FSM MELAY FSM. Introduction to DIGITAL CIRCUITS MODELING & VERIFICATION using VERILOG [Part-2]
Verilog.
Registers and Counters
Yikes! Why is my SystemVerilog Testbench So Slooooow?
SystemVerilog for Verification
Software Verification, Validation, and Acceptance Testing
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
Register-Transfer Level Components in Verilog
Lecture 9: Testbench and Division
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
Digital Design Verification
The Verilog Hardware Description Language
SystemVerilog and Verification
Lecture 4: Continuation of SystemVerilog
332:437 Lecture 9 Verilog Example
332:437 Lecture 9 Verilog Example
Registers and Counters
Registers and Counters
Introduction to Digital IC Design
332:437 Lecture 9 Verilog Example
Registers and Counters
Presentation transcript:

System on Chip Design and Test ECE 715 SV & UVM based Constrained Random Verification Technique Pranay Samanta

Outline Verification and the need of verification Why System-Verilog for verification UVM - Methodology made for verification Example Coding Understanding why this verification technique is really helpful

What is verification A process used to demonstrate the functional correctness of a design. To making sure your are verifying that you are indeed implementing what you want.

Testing vs Verification Verification is done on the RTL level or SOC level where testing done in silicon.

Respin is expensive Courtesy: IP verification -Tian-Sheuan Chang

Why System Verilog for Verification? Still Evolving Courtesy: www.doulos.com

Universal Verification Methodology I

Universal Verification Methodology II Test benches for verilog/VHDL/System C designs. UVM has system verilog base class library. Supports constrained random verification.

UVM Env (Left Hand Side of Previous Pic) Pic courtesy: UVM cookbook

UVM Base Class Library Pic courtesy: UVM cookbook

Basic Example – 2-bit adder module two_bit_adder(input clk, input reset, input a, input b, output s, output c, output finish); always begin wait(reset==0); @(posedge clk); s = a’b + ab’; c = ab; finish = 1; end endmodule

adder_top.sv module adder_top; `include “adder_env.sv” run_test(); //test-name passed by command adder_if vif(clk,reset); two_bit_adder(clk, reset, vif.a, vif.b, vif.s, vif.c, vif.finish); //clock and reset generation endmodule

adder_test.sv class adder_test extends uvm_test; task run_phase(uvm_phase phase); uvm_config_db(#int)(this,”env.agent.sequencer.run_phase”,”def ault_sequence”,adder_seq); endtask endclass

adder_seq.sv class adder_seq.sv extends uvm_sequence#(adder_packet); task run_phase(uvm_phase phase); for(i==0;i<4;i++) `uvm_do(req); `uvm_do_with(req.a=0;req.b=0;) * Will tell later endtask endclass

adder_packet.sv class adder_packet extends uvm_sequence_item; rand bit a; rand bit b; bit finish; bit c; bit s; endclass

adder_driver.sv Class adder_driver extends uvm_driver#(adder_packet); task run_phase(uvm_phase phase); reset_signals(); get_and_drive(); endtask task get_and_driver(); seq_item_port.get_next_item(req); send_to_dut(req); item_done(); task send_to_dut(adder_packet pkt); @(posedge vif.clk); vif.a = pkt.a; vif.b = pkt.b; endclass

adder_interface.sv virtual interface adder_if(input clk, input reset); logic a; logic b; logic finish; endinterface

adder_top.sv module adder_top; `include “adder_env.sv” run_test(); //test-name passed by command adder_if vif(clk,reset); two_bit_adder(clk, reset, vif.a, vif.b, vif.s, vif.c, vif.finish); //clock and reset generation endmodule

Basic Example – 2-bit adder module two_bit_adder(input clk, input reset, input a, input b, output s, output c, output finish); always begin wait(reset==0); @(posedge clk); s = a’b + ab’; c = ab; finish = 1; end endmodule

adder_monitor.sv class adder_monitor extends uvm_monitor#(adder_packet); uvm_analysis_port(#adder_packet) scoreboard_port; uvm_analysis_port(#adder_packet) coverage_port; adder_packet pkt1; @(negedge vif.clk iff vif.finish==1); pkt1.a = vif.a; pkt1.b = vif.b; pkt1.s = vif.s; pkt1.c = vif.c; scoreboard_port.write(pkt1); coverage_port.write(pkt1); endclass

adder_scoreboard.sv class adder_Scoreboard extends uvm_scoreboard; function write(adder_packet pkt_score); if(pkt_score.a!=pkt_score.b) begin if(pkt_score.s==1) $display(“Sum is right”); else $display(“Sum is wrong”); if(pkt_score.c==0) $display(“Carry is right”); else $display(“Carry is wrong”); end else …………………………………………………….. ………………………………………………………..

adder_coverage.sv class adder_coverage extends uvm_component; adder_packet pkt2; covergroup cg; cover_point_1 : coverpoint pkt2.a ; cover_point_2 : coverpoint pkt2.b ; cross_12 : cross cover_point_1,cover_point_2 ; endgroup function write(adder_packet pkt3); pkt3.sample(); endfunction endclass If not 100%, constrained stimulus needed by test. `uvm_do_with in sequence.

What I have not shown

Advantages we have understood Automatic test generation -> Time is saved for verification. Huge huge benefit. Constrained Random Verification -> Used to check corner cases. Unexpected bug being found. Reusable Environment -> Use of the same environment in different project.

Why should you be interested in verification? 70% of design time is taken by verification. Design Engineer : Verification Engineer should be 1:1. But the real scenario is not like that. So lots of job in verification in VLSI industry.

Interested? www.verificationacademy.com www.doulos.com UVM user guide SV used guide Enough to understand SV and UVM and be expert in this field. (Considering if you have platform to use your knowledge)