Skip to content

Commit

Permalink
[rom_ctrl, dv] Exclusion of non-occuring cases for tlul_adapter_sram
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
KinzaQamar committed Dec 16, 2024
1 parent 4136ea4 commit 4d96421
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions hw/ip/rom_ctrl/dv/cov/rom_ctrl_cov_excl.el
Original file line number Diff line number Diff line change
Expand Up @@ -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")

0 comments on commit 4d96421

Please sign in to comment.