106 lines
2.6 KiB
Systemverilog
106 lines
2.6 KiB
Systemverilog
{% extends "lib/tb_base.sv" %}
|
|
|
|
{% block seq %}
|
|
{% sv_line_anchor %}
|
|
##1;
|
|
cb.rst <= '0;
|
|
##1;
|
|
|
|
// check initial conditions
|
|
cpuif.assert_read('h4, 'h11);
|
|
cpuif.assert_read('h8, 'h22);
|
|
cpuif.assert_read('hC, 'h33);
|
|
|
|
//---------------------------------
|
|
// set hwenable = F0
|
|
cpuif.write('h0, 'h00_F0);
|
|
|
|
// test hwenable + we
|
|
cb.hwif_in.r1.f.next <= 'hAB;
|
|
cb.hwif_in.r1.f.we <= '1;
|
|
@cb;
|
|
cb.hwif_in.r1.f.we <= '0;
|
|
cpuif.assert_read('h4, 'hA1);
|
|
|
|
// test hwenable + hwclr
|
|
cb.hwif_in.r1.f.hwclr <= '1;
|
|
@cb;
|
|
cb.hwif_in.r1.f.hwclr <= '0;
|
|
cpuif.assert_read('h4, 'h01);
|
|
|
|
// test hwenable + hwset
|
|
cb.hwif_in.r1.f.hwset <= '1;
|
|
@cb;
|
|
cb.hwif_in.r1.f.hwset <= '0;
|
|
cpuif.assert_read('h4, 'hF1);
|
|
|
|
|
|
//---------------------------------
|
|
// set hwmask = F0
|
|
cpuif.write('h0, 'hF0_00);
|
|
|
|
// test hwmask + we
|
|
cb.hwif_in.r2.f.next <= 'hAB;
|
|
cb.hwif_in.r2.f.we <= '1;
|
|
@cb;
|
|
cb.hwif_in.r2.f.we <= '0;
|
|
cpuif.assert_read('h8, 'h2B);
|
|
|
|
// test hwmask + hwclr
|
|
cb.hwif_in.r2.f.hwclr <= '1;
|
|
@cb;
|
|
cb.hwif_in.r2.f.hwclr <= '0;
|
|
cpuif.assert_read('h8, 'h20);
|
|
|
|
// test hwmask + hwset
|
|
cb.hwif_in.r2.f.hwset <= '1;
|
|
@cb;
|
|
cb.hwif_in.r2.f.hwset <= '0;
|
|
cpuif.assert_read('h8, 'h2F);
|
|
|
|
//---------------------------------
|
|
// test hwenable + hwclr via reference
|
|
// toggle hwenable = F0, hwclr=1
|
|
cpuif.write('h0, 'h1_00_F0);
|
|
cpuif.write('h0, 'h0_00_00);
|
|
cpuif.assert_read('hC, 'h03);
|
|
|
|
// test hwenable + hwset via reference
|
|
// toggle hwenable = 0F, hwset=1
|
|
cpuif.write('h0, 'h2_00_0F);
|
|
cpuif.write('h0, 'h0_00_00);
|
|
cpuif.assert_read('hC, 'h0F);
|
|
|
|
// test hwenable + we via reference
|
|
cb.hwif_in.r3.f.next <= 'hAA;
|
|
// toggle hwenable = 0F, we=1
|
|
cpuif.write('h0, 'h4_00_0F);
|
|
cpuif.write('h0, 'h0_00_00);
|
|
cpuif.assert_read('hC, 'h0A);
|
|
|
|
//---------------------------------
|
|
// test wel via reference
|
|
cb.hwif_in.r4.f.next <= 'hBB;
|
|
// toggle wel
|
|
cpuif.write('h0, 'h10_00_00);
|
|
cpuif.write('h0, 'h00_00_00);
|
|
cpuif.assert_read('h10, 'hBB);
|
|
|
|
cb.hwif_in.r4.f.next <= 'hCC;
|
|
// toggle wel
|
|
cpuif.write('h0, 'h10_00_00);
|
|
cpuif.write('h0, 'h00_00_00);
|
|
cpuif.assert_read('h10, 'hCC);
|
|
|
|
//---------------------------------
|
|
// test we and next via reference
|
|
cb.hwif_in.r5.f_next_value <= 'h54;
|
|
cpuif.assert_read('h14, 'h55);
|
|
cb.hwif_in.r5.f_next_value <= 'h56;
|
|
cb.hwif_in.r5.f_we <= '1;
|
|
@cb;
|
|
cb.hwif_in.r5.f_next_value <= '0;
|
|
cb.hwif_in.r5.f_we <= '0;
|
|
cpuif.assert_read('h14, 'h56);
|
|
{% endblock %}
|