Skip to content

Commit

Permalink
Remove excessive secondary counter saturation clamping logic. Counter…
Browse files Browse the repository at this point in the history
…s will now be allowed to be set to values beyond their saturation point if loaded through non-increment/decrement mechanism. #114
  • Loading branch information
amykyta3 committed Dec 20, 2024
1 parent a15178c commit e788e7c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 25 deletions.
8 changes: 0 additions & 8 deletions src/peakrdl_regblock/field_logic/templates/counter_macros.sv
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@
{{field_logic.get_field_combo_identifier(node, "incrthreshold")}} = ({{field_logic.get_storage_identifier(node)}} >= {{field_logic.get_counter_incrthreshold_value(node)}});
{%- if field_logic.counter_incrsaturates(node) %}
{{field_logic.get_field_combo_identifier(node, "incrsaturate")}} = ({{field_logic.get_storage_identifier(node)}} >= {{field_logic.get_counter_incrsaturate_value(node)}});
if(next_c > {{field_logic.get_counter_incrsaturate_value(node)}}) begin
next_c = {{field_logic.get_counter_incrsaturate_value(node)}};
load_next_c = '1;
end
{%- endif %}
{%- endmacro %}

Expand All @@ -48,9 +44,5 @@
{{field_logic.get_field_combo_identifier(node, "decrthreshold")}} = ({{field_logic.get_storage_identifier(node)}} <= {{field_logic.get_counter_decrthreshold_value(node)}});
{%- if field_logic.counter_decrsaturates(node) %}
{{field_logic.get_field_combo_identifier(node, "decrsaturate")}} = ({{field_logic.get_storage_identifier(node)}} <= {{field_logic.get_counter_decrsaturate_value(node)}});
if(next_c < {{field_logic.get_counter_decrsaturate_value(node)}}) begin
next_c = {{field_logic.get_counter_decrsaturate_value(node)}};
load_next_c = '1;
end
{%- endif %}
{%- endmacro %}
34 changes: 17 additions & 17 deletions tests/test_counter_saturate/tb_template.sv
Original file line number Diff line number Diff line change
Expand Up @@ -65,33 +65,33 @@
//--------------------------------------------------------------------------
// Test incrsaturate = 250; decrsaturate = 5;
//--------------------------------------------------------------------------
cpuif.assert_read('h4, 'h05, 'hFF);
cpuif.assert_read('h4, 'h00, 'hFF);

// incrsaturate via +1
cpuif.write('h4, `set);
cpuif.assert_read('h4, 'hFA, 'hFF);
cpuif.assert_read('h4, 'hFF, 'hFF);
cpuif.write('h4, `decr + `step(1));
cpuif.assert_read('h4, 'hF9, 'hFF);
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, 'h05, 'hFF);
cpuif.assert_read('h4, 'h00, 'hFF);
cpuif.write('h4, `incr + `step(1));
cpuif.assert_read('h4, 'h06, 'hFF);
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, 'hFA, 'hFF);
cpuif.assert_read('h4, 'hFF, 'hFF);
cpuif.write('h4, `decr + `step(1));
cpuif.assert_read('h4, 'hF9, 'hFF);
cpuif.assert_read('h4, 'hFE, 'hFF);
cpuif.write('h4, `incr + `step(2));
cpuif.assert_read('h4, 'hFA, 'hFF);
cpuif.write('h4, `incr + `step(3));
Expand All @@ -101,9 +101,9 @@

// decrsaturate via larger steps
cpuif.write('h4, `clr);
cpuif.assert_read('h4, 'h05, 'hFF);
cpuif.assert_read('h4, 'h00, 'hFF);
cpuif.write('h4, `incr + `step(1));
cpuif.assert_read('h4, 'h06, 'hFF);
cpuif.assert_read('h4, 'h01, 'hFF);
cpuif.write('h4, `decr + `step(2));
cpuif.assert_read('h4, 'h05, 'hFF);
cpuif.write('h4, `decr + `step(3));
Expand Down Expand Up @@ -169,29 +169,29 @@

// incrsaturate via +1
cpuif.write('h8, `set);
cpuif.assert_read('h8, 'hFA, 'hFF);
cpuif.assert_read('h8, 'hFF, 'hFF);
cpuif.write('h8, `decr + `step(1));
cpuif.assert_read('h8, 'hF9, 'hFF);
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, 'h05, 'hFF);
cpuif.assert_read('h8, 'h00, 'hFF);
cpuif.write('h8, `incr + `step(1));
cpuif.assert_read('h8, 'h06, 'hFF);
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, 'hFA, 'hFF);
cpuif.assert_read('h8, 'hFF, 'hFF);
cpuif.write('h8, `decr + `step(1));
cpuif.assert_read('h8, 'hF9, 'hFF);
cpuif.assert_read('h8, 'hFE, 'hFF);
cpuif.write('h8, `incr + `step(2));
cpuif.assert_read('h8, 'hFA, 'hFF);
cpuif.write('h8, `incr + `step(3));
Expand All @@ -201,9 +201,9 @@

// decrsaturate via larger steps
cpuif.write('h8, `clr);
cpuif.assert_read('h8, 'h05, 'hFF);
cpuif.assert_read('h8, 'h00, 'hFF);
cpuif.write('h8, `incr + `step(1));
cpuif.assert_read('h8, 'h06, 'hFF);
cpuif.assert_read('h8, 'h01, 'hFF);
cpuif.write('h8, `decr + `step(2));
cpuif.assert_read('h8, 'h05, 'hFF);
cpuif.write('h8, `decr + `step(3));
Expand Down

0 comments on commit e788e7c

Please sign in to comment.