Initial Commit - Forked from PeakRDL-regblock @ a440cc19769069be831d267505da4f3789a26695
This commit is contained in:
214
tests/test_counter_saturate/tb_template.sv
Normal file
214
tests/test_counter_saturate/tb_template.sv
Normal file
@@ -0,0 +1,214 @@
|
||||
{% extends "lib/tb_base.sv" %}
|
||||
|
||||
{% block seq %}
|
||||
{% sv_line_anchor %}
|
||||
##1;
|
||||
cb.rst <= '0;
|
||||
##1;
|
||||
|
||||
// counter controls are the same for each sub-test
|
||||
`define incr (1<<9)
|
||||
`define decr (1<<10)
|
||||
`define clr (1<<11)
|
||||
`define set (1<<12)
|
||||
`define step(n) (n<<16)
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Test incrsaturate = true; decrsaturate = true;
|
||||
//--------------------------------------------------------------------------
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
|
||||
// incrsaturate via +1
|
||||
cpuif.write('h0, `set);
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(1));
|
||||
cpuif.assert_read('h0, 'hFE, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(1));
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(1));
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
|
||||
// decrsaturate via +1
|
||||
cpuif.write('h0, `clr);
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(1));
|
||||
cpuif.assert_read('h0, 'h01, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(1));
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(1));
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
|
||||
// incrsaturate via larger steps
|
||||
cpuif.write('h0, `set);
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(1));
|
||||
cpuif.assert_read('h0, 'hFE, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(2));
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(3));
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(255));
|
||||
cpuif.assert_read('h0, 'hFF, 'hFF);
|
||||
|
||||
// decrsaturate via larger steps
|
||||
cpuif.write('h0, `clr);
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
cpuif.write('h0, `incr + `step(1));
|
||||
cpuif.assert_read('h0, 'h01, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(2));
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(3));
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
cpuif.write('h0, `decr + `step(255));
|
||||
cpuif.assert_read('h0, 'h00, 'hFF);
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Test incrsaturate = 250; decrsaturate = 5;
|
||||
//--------------------------------------------------------------------------
|
||||
cpuif.assert_read('h4, 'h00, 'hFF);
|
||||
|
||||
// incrsaturate via +1
|
||||
cpuif.write('h4, `set);
|
||||
cpuif.assert_read('h4, 'hFF, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(1));
|
||||
cpuif.assert_read('h4, 'hFE, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(1));
|
||||
cpuif.assert_read('h4, 'hFA, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(1));
|
||||
cpuif.assert_read('h4, 'hFA, 'hFF);
|
||||
|
||||
// decrsaturate via +1
|
||||
cpuif.write('h4, `clr);
|
||||
cpuif.assert_read('h4, 'h00, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(1));
|
||||
cpuif.assert_read('h4, 'h01, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(1));
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(1));
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
|
||||
// incrsaturate via larger steps
|
||||
cpuif.write('h4, `set);
|
||||
cpuif.assert_read('h4, 'hFF, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(1));
|
||||
cpuif.assert_read('h4, 'hFE, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(2));
|
||||
cpuif.assert_read('h4, 'hFA, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(3));
|
||||
cpuif.assert_read('h4, 'hFA, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(255));
|
||||
cpuif.assert_read('h4, 'hFA, 'hFF);
|
||||
|
||||
// decrsaturate via larger steps
|
||||
cpuif.write('h4, `clr);
|
||||
cpuif.assert_read('h4, 'h00, 'hFF);
|
||||
cpuif.write('h4, `incr + `step(1));
|
||||
cpuif.assert_read('h4, 'h01, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(2));
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(3));
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
cpuif.write('h4, `decr + `step(255));
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Test incrsaturate = <ref 255>; decrsaturate = <ref 0>;
|
||||
//--------------------------------------------------------------------------
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
|
||||
// incrsaturate via +1
|
||||
cpuif.write('h8, `set);
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFE, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
|
||||
// decrsaturate via +1
|
||||
cpuif.write('h8, `clr);
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'h01, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
|
||||
// incrsaturate via larger steps
|
||||
cpuif.write('h8, `set);
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFE, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(2));
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(3));
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(255));
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
|
||||
// decrsaturate via larger steps
|
||||
cpuif.write('h8, `clr);
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'h01, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(2));
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(3));
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(255));
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Test incrsaturate = <ref 250>; decrsaturate = <ref 5>;
|
||||
//--------------------------------------------------------------------------
|
||||
cpuif.write('hc, 'hFA_05);
|
||||
|
||||
cpuif.assert_read('h4, 'h05, 'hFF);
|
||||
|
||||
// incrsaturate via +1
|
||||
cpuif.write('h8, `set);
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFE, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFA, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFA, 'hFF);
|
||||
|
||||
// decrsaturate via +1
|
||||
cpuif.write('h8, `clr);
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'h01, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'h05, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'h05, 'hFF);
|
||||
|
||||
// incrsaturate via larger steps
|
||||
cpuif.write('h8, `set);
|
||||
cpuif.assert_read('h8, 'hFF, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(1));
|
||||
cpuif.assert_read('h8, 'hFE, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(2));
|
||||
cpuif.assert_read('h8, 'hFA, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(3));
|
||||
cpuif.assert_read('h8, 'hFA, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(255));
|
||||
cpuif.assert_read('h8, 'hFA, 'hFF);
|
||||
|
||||
// decrsaturate via larger steps
|
||||
cpuif.write('h8, `clr);
|
||||
cpuif.assert_read('h8, 'h00, 'hFF);
|
||||
cpuif.write('h8, `incr + `step(1));
|
||||
cpuif.assert_read('h8, 'h01, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(2));
|
||||
cpuif.assert_read('h8, 'h05, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(3));
|
||||
cpuif.assert_read('h8, 'h05, 'hFF);
|
||||
cpuif.write('h8, `decr + `step(255));
|
||||
cpuif.assert_read('h8, 'h05, 'hFF);
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user