From 6bbaaf82cef6804673cccb19b2affc6bce575f8e Mon Sep 17 00:00:00 2001 From: Kinza Qamar Date: Tue, 10 Dec 2024 16:39:44 +0000 Subject: [PATCH] [rom_ctrl, dv] Exclusion of non-occuring cases for tlul_adapter_sram It is impossible to see !tl_i_int.a_valid & !error_internal. When a_valid is false, it is seen in u_err inside tlul_adapter_sram.sv. This will make a_config_allowed inside u_err false as it depends on addr_sz_chk, mask_chk and fulldata_chk. All of them are false if a_valid is false. This means that in u_err, the first term of err_o becomes true. Next, err_o become visible to error_det as tlul_error inside tlul_adapter_sram and it will be true if tlul_error is true. error_det will then be seen as error_i to u_sram_byte inside tlul_adapter_sram. Since EnableIntg parameter is 0 for rom_ctrl, error_i comes out as error_o from u_sram_byte. Then error_o would be seen as error_internal to tlul_adapter_sram and the conditional statement is not able to cover 00 case for this reason. It is impossible to get sram_ack & we_o. we_o become true when there is an a_valid and a_opcode as Put. But when a_opcode is a Put, wr_vld_error in the adapter becomes true as ErrOnWrite is true for the adapter in case of rom_ctrl. wr_vld_error lets error_det become true. Since rom_ctrl doesn't enable integrity errors, error_det comes out as error_internal directly from u_sram_byte. But this makes req_o false and hence sram_ack false. Signed-off-by: Kinza Qamar --- hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el b/hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el index bfa867e4a24e7c..64dce48a3b709d 100644 --- a/hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el +++ b/hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el @@ -112,3 +112,22 @@ Condition 34 "201396280" "(d_valid && d_error) 1 -1" (1 "01") // the request will not already have been popped from the request fifo, so reqfifo_rvalid must be // true. Condition 43 "721931741" "(rvalid_i & reqfifo_rvalid) 1 -1" (2 "10") + +// It is impossible to see !tl_i_int.a_valid & !error_internal. When a_valid is false, it is seen +// in u_err inside tlul_adapter_sram.sv. This will make a_config_allowed inside u_err false as it +// depends on addr_sz_chk, mask_chk and fulldata_chk. All of them are false if a_valid is false. +// This means that in u_err, the first term of err_o becomes true. +// Next, err_o become visible to error_det as tlul_error inside tlul_adapter_sram and it will +// be true if tlul_error is true. error_det will then be seen as error_i to u_sram_byte inside +// tlul_adapter_sram. +// Since EnableIntg parameter is 0 for rom_ctrl, error_i comes out as error_o from u_sram_byte. +// Then error_o would be seen as error_internal to tlul_adapter_sram and the conditional statement +// is not able to cover 00 case for this reason. +Condition 37 "2164803938" "(tl_i_int.a_valid & reqfifo_wready & ((~error_internal))) 1 -1" (1 "011") + +// It is impossible to get sram_ack & we_o. we_o become true when there is an a_valid and a_opcode +// as Put. But when a_opcode is a Put, wr_vld_error in the adapter becomes true as ErrOnWrite is +// true for the adapter in case of rom_ctrl. wr_vld_error lets error_det become true. Since +// rom_ctrl doesn't enable integrity errors, error_det comes out as error_internal directly from +// u_sram_byte. But this makes req_o false and hence sram_ack false. +Condition 43 "2041272341" "(sram_ack & ((~we_o))) 1 -1" (2 "10")