Download presentation
Presentation is loading. Please wait.
1
02/10/06EECS150 Lab Lecture #41 Debugging EECS150 Spring 2006 – Lab Lecture #4 Philip Godoy Greg Gibeling
2
02/10/06EECS150 Lab Lecture #42 Today (1) Lab #2 Solution Simulation vs Hardware Debugging Goals Tips Algorithm Administrative Info
3
02/10/06EECS150 Lab Lecture #43 Today (2) Lab #4 Bottom Up Testing (Peak Detector) Designing Test Hardware (Broken Adder) Exhaustive FSM Testing (Broken FSM)
4
02/10/06EECS150 Lab Lecture #44 module Accumulator(In, Out, Enable, Clock, Reset); input[7:0]In; output[7:0]Out; inputEnable; inputClock, Reset; reg[7:0]Out; always @ (posedge Clock) begin if (Reset) Out <=8'h00; else if (Enable) Out <=Out + In; end endmodule Lab #2 Solution (1)
5
02/10/06EECS150 Lab Lecture #45 Lab #2 Solution (2)
6
02/10/06EECS150 Lab Lecture #46 Lab #2 Solution (3) Accumulator Simple, easy to build What is the actual circuit? Get used to answering this in your head RTL View from Lab #1 (Section 4.3 Synthesis) Peak Detector Hard to build Minute control of hardware Tools couldn’t optimize though!!
7
02/10/06EECS150 Lab Lecture #47 Simulation vs. Hardware (1) Debugging in Simulation Slow Running Time Fast Debugging Waveforms Text messages Full Visibility Can examine any signal Easy to Fix A few minutes to compile and resimulate
8
02/10/06EECS150 Lab Lecture #48 Simulation vs. Hardware (2) Debugging in Hardware Fast Running Time Full speed in fact Slow Debugging Synthesis can take hours Little or No Visibility Very hard to probe signals Maybe Impossible to Fix (ASICs)
9
02/10/06EECS150 Lab Lecture #49 Simulation vs. Hardware (3) Simulation Functional Testing & Verification Test everything at least minimally Fully Verify what you can This will save you many sleepless nights Hardware Debugging Treat this as a last resort It is painful
10
02/10/06EECS150 Lab Lecture #410 Debugging (1) Debugging Algorithm Hypothesis: What’s broken? Control: Give it controlled test inputs Expected Output: What SHOULD it do? Observe: Did it work right? If it broke: THAT’S GREAT! If we can’t break anything like this then the project must be working…
11
02/10/06EECS150 Lab Lecture #411 Debugging (2) First, check for Verilog syntax errors Run Synthesis on the module View Synthesis report to see errors Don’t debug randomly Just changing things at random often makes things look fixed It won’t really help Debug systematically Your first design may be the best
12
02/10/06EECS150 Lab Lecture #412 Debugging (3) High Level Debugging Localize the problem N64? SDRAM? Video? Test Patterns Lets you easily isolate the broken component If you know exactly what’s going in you can check what’s coming out
13
02/10/06EECS150 Lab Lecture #413 Debugging (4) Simulate the broken component(s) Writing test benches takes less time than sitting around wondering why its broken Everyone hates writing testbenches (Even the TA’s) You will hate hardware debugging more Get used to it
14
02/10/06EECS150 Lab Lecture #414 Debugging (5) Your best debugging tool is logic If 3 out of 4 components work, what’s broken? Question all your assumptions! Just because you think its true doesn’t mean it is 90% of debugging time is wasted debugging the wrong problem otherwise Given solutions and modules may not work the way you expect!
15
02/10/06EECS150 Lab Lecture #415 Debugging (6) Before you change anything Understand exactly what the problem is Find an efficient solution Evaluate alternative solutions After the change Fixes may make things worse sometimes May uncover a second bug May be an incorrect fix Repeat the debugging process
16
02/10/06EECS150 Lab Lecture #416 Debugging (7) Ask around Someone else may have had the same bug They’ll probably at least know about where the problem is Different bugs may produce the same results TAs The TAs know common problems We’re here to help, not solve it for you
17
02/10/06EECS150 Lab Lecture #417 Administrative Info Midterm I Thursday 02/16, 2-3:30pm, Room 125 Cory Review Session TBA, 125 Cory Partners You MUST have one for this week Try someone other than your best friend Restrictions You can change partners until the project starts You must be in the same lab Project in 2 weeks
18
02/10/06EECS150 Lab Lecture #418 Part1: Bottom Up Testing (1) What if EqualOut = 1’b0 and GreaterOut = 1’b0?
19
02/10/06EECS150 Lab Lecture #419 Part1: Bottom Up Testing (2) Exhaustive Testing Ideal Testing Method Circuit is 100% tested! Requires us to test a LOT! Can we do it here? (2 4 possible inputs) Method Make a truth table Have the testbench generate all inputs Make sure outputs match truth table
20
02/10/06EECS150 Lab Lecture #420 Part1: Bottom Up Testing (3)
21
02/10/06EECS150 Lab Lecture #421 Part1: Bottom Up Testing (4) Exhaustive Testing? 2 8 = 256 Possible Inputs Method Use a for loop to generate all inputs Loops allowed only in testbenches They will not synthesize Compare against a “ >= “ Print a message if they differ
22
02/10/06EECS150 Lab Lecture #422 Part1: Bottom Up Testing (5)
23
02/10/06EECS150 Lab Lecture #423 Part1: Bottom Up Testing (6) Exhaustive Testing? 2 4 = 16 Possible Inputs 2 4 = 16 Possible States 16*16 = 256 combinations We could do it in this case Can’t exhaustively test FSMs Too many state/input combinations Must rely on directed testing
24
02/10/06EECS150 Lab Lecture #424 initial begin end Part1: Bottom Up Testing (7) integeri; reg[3:0]TestValues[1:16]; $readmemh("TestValues.txt", TestValues); for(i = 1; i <= 16; i = i + 1) begin #(`Cycle); In = TestValues[i]; $display("In = %d, Peak = %d", In, Peak); end
25
02/10/06EECS150 Lab Lecture #425 Part1: Bottom Up Testing (8) Read Test Vectors from a File Designing Test Vectors Make sure to cover most cases We want 95%+ coverage Designing test vectors is a “black art” $ Processes Not synthesizeable More information in IEEE Verilog Reference
26
02/10/06EECS150 Lab Lecture #426 Part2: Test Hardware (1)
27
02/10/06EECS150 Lab Lecture #427 Part2: Test Hardware (2) Test Procedure Hit Reset (SW1) Hit Go (SW2) Record an error DD1-8 show {A, B} SW10[1] selects the sum on DD4-8 Hit Go Repeat until the tester stops
28
02/10/06EECS150 Lab Lecture #428 Part2: Test Hardware (3) The Broken Adder 16bit Adder 2 32 ≈4 Billion Test Vectors Can’t simulate this much 2:40 to test this at 27MHz Fail Modes 0: No Errors 2: Will claim 1 + 1 = 3 1-3: Can have anywhere from 0 to 4 errors
29
02/10/06EECS150 Lab Lecture #429 Part3: FSM Testing (1) Exhaustive Testing Again! Check every arc Check every output You don’t need to correct this one… We’re not giving you the source code Boring (and Easy) You will have FSM bugs Get used to debugging them
30
02/10/06EECS150 Lab Lecture #430 Part3: FSM Testing (2)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.