diff --git a/cdc/rtl/br_cdc_reg.sv b/cdc/rtl/br_cdc_reg.sv index 533c9bda3..0fb84b2ff 100644 --- a/cdc/rtl/br_cdc_reg.sv +++ b/cdc/rtl/br_cdc_reg.sv @@ -30,7 +30,17 @@ module br_cdc_reg #( // ensuring a low probability of metastability. // The recommended value is 3 for most technology nodes. // Do not decrease below that unless you have a good reason. - parameter int NumSyncStages = 3 + parameter int NumSyncStages = 3, + // If 1, cover that the push side experiences backpressure. + // If 0, assert that there is never backpressure. + parameter bit EnableCoverPushBackpressure = 1, + // If 1, assert that push_valid is stable when backpressured. + parameter bit EnableAssertPushValidStability = EnableCoverPushBackpressure, + // If 1, assert that push_data is stable when backpressured. + parameter bit EnableAssertPushDataStability = EnableAssertPushValidStability, + // If 1, then assert there are no valid bits asserted and that the FIFO is + // empty at the end of the test. + parameter bit EnableAssertFinalNotValid = 1 ) ( // Push-side interface input logic push_clk, @@ -64,7 +74,11 @@ module br_cdc_reg #( // Push side br_cdc_reg_push #( .Width(Width), - .RegisterResetActive(RegisterResetActive) + .RegisterResetActive(RegisterResetActive), + .EnableCoverPushBackpressure(EnableCoverPushBackpressure), + .EnableAssertPushValidStability(EnableAssertPushValidStability), + .EnableAssertPushDataStability(EnableAssertPushDataStability), + .EnableAssertFinalNotValid(EnableAssertFinalNotValid) ) br_cdc_reg_push ( .clk(push_clk), // ri lint_check_waive SAME_CLOCK_NAME .rst(push_rst), diff --git a/cdc/rtl/internal/br_cdc_reg_push.sv b/cdc/rtl/internal/br_cdc_reg_push.sv index 95e927e49..650f21e20 100644 --- a/cdc/rtl/internal/br_cdc_reg_push.sv +++ b/cdc/rtl/internal/br_cdc_reg_push.sv @@ -7,7 +7,11 @@ module br_cdc_reg_push #( parameter int Width = 1, - parameter bit RegisterResetActive = 1 + parameter bit RegisterResetActive = 1, + parameter bit EnableCoverPushBackpressure = 1, + parameter bit EnableAssertPushValidStability = EnableCoverPushBackpressure, + parameter bit EnableAssertPushDataStability = EnableAssertPushValidStability, + parameter bit EnableAssertFinalNotValid = 1 ) ( input logic clk, input logic rst, @@ -25,7 +29,11 @@ module br_cdc_reg_push #( // Integration Checks br_flow_checks_valid_data_intg #( .NumFlows(1), - .Width(Width) + .Width(Width), + .EnableCoverBackpressure(EnableCoverPushBackpressure), + .EnableAssertValidStability(EnableAssertPushValidStability), + .EnableAssertDataStability(EnableAssertPushDataStability), + .EnableAssertFinalNotValid(EnableAssertFinalNotValid) ) br_flow_checks_valid_data_intg ( .clk, .rst,