133 lines
4.5 KiB
Plaintext
133 lines
4.5 KiB
Plaintext
package Debugger_Test;
|
|
|
|
import GetPut::*;
|
|
import ClientServer::*;
|
|
import Connectable::*;
|
|
import StmtFSM::*;
|
|
import Assert::*;
|
|
|
|
import VRAM::*;
|
|
import Debugger::*;
|
|
import Testing::*;
|
|
|
|
module mkTB();
|
|
let testflags <- mkTestFlags();
|
|
let cycles <- mkCycleCounter();
|
|
|
|
let vram <- mkVRAM(4);
|
|
let dut <- mkDebugger();
|
|
mkConnection(dut.vram, vram.debugger);
|
|
|
|
function Action put(DebugRequest req);
|
|
return action
|
|
if (testflags.verbose)
|
|
$display("%0d (%0d): Debugger.put( ", cycles.all, cycles, fshow(req), ")");
|
|
dut.server.request.put(req);
|
|
endaction;
|
|
endfunction
|
|
|
|
function ActionValue#(DebugResponse) get();
|
|
return actionvalue
|
|
let ret <- dut.server.response.get();
|
|
if (testflags.verbose)
|
|
$display("%0d (%0d): Debugger.get() = ", cycles.all, cycles, fshow(ret));
|
|
return ret;
|
|
endactionvalue;
|
|
endfunction
|
|
|
|
runTest(200,
|
|
mkTest("Debugger", seq
|
|
action
|
|
put(tagged Ping);
|
|
cycles.reset();
|
|
endaction
|
|
|
|
action
|
|
let pong <- get();
|
|
dynamicAssert(pong == VRAMResponse{data: 'hEA}, "wrong pong response");
|
|
dynamicAssert(cycles == 1, "wrong debugger delay");
|
|
endaction
|
|
|
|
put(tagged MemByteOp VRAMRequest { addr: 0, data: tagged Valid 0 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 1, data: tagged Valid 42 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 2, data: tagged Valid 66 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 3, data: tagged Valid 91 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 4, data: tagged Valid 154 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 5, data: tagged Valid 201 });
|
|
put(tagged MemByteOp VRAMRequest { addr: 6, data: tagged Valid 243 });
|
|
|
|
action
|
|
put(tagged MemByteOp VRAMRequest { addr: 1, data: tagged Invalid });
|
|
cycles.reset();
|
|
endaction
|
|
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 42}, "wrong read response");
|
|
dynamicAssert(cycles == 3, "wrong debugger delay");
|
|
endaction
|
|
|
|
action
|
|
put(tagged MemByteOp VRAMRequest { addr: 2, data: tagged Invalid });
|
|
cycles.reset();
|
|
endaction
|
|
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 66}, "wrong read response");
|
|
dynamicAssert(cycles == 3, "wrong debugger delay");
|
|
endaction
|
|
|
|
action
|
|
put(tagged ReadRange ReadRange { start: 0, count: 7 });
|
|
cycles.reset();
|
|
endaction
|
|
|
|
put(tagged MemByteOp VRAMRequest { addr: 1, data: tagged Invalid });
|
|
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 0}, "wrong read response");
|
|
dynamicAssert(cycles == 3, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 42}, "wrong read response");
|
|
dynamicAssert(cycles == 4, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 66}, "wrong read response");
|
|
dynamicAssert(cycles == 5, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 91}, "wrong read response");
|
|
dynamicAssert(cycles == 6, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 154}, "wrong read response");
|
|
dynamicAssert(cycles == 7, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 201}, "wrong read response");
|
|
dynamicAssert(cycles == 8, "wrong debugger delay");
|
|
endaction
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 243}, "wrong read response");
|
|
dynamicAssert(cycles == 9, "wrong debugger delay");
|
|
endaction
|
|
// Result of the final byte read
|
|
action
|
|
let read <- get();
|
|
dynamicAssert(read == VRAMResponse{data: 42}, "wrong read response");
|
|
dynamicAssert(cycles == 12, "wrong debugger delay");
|
|
endaction
|
|
endseq));
|
|
endmodule
|
|
|
|
endpackage
|