Module Definition
dashboard | hierarchy | modlist | groups | tests | asserts



Module Instance : tb.dut.gen_rom_scramble_enabled.u_rom

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
87.50 75.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.06 88.24 100.00 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
94.99 100.00 98.28 97.26 100.00 79.41 dut


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_prince 100.00 100.00
u_rom 94.44 83.33 100.00 100.00
u_seed_anchor 0.00 0.00
u_sp_addr 100.00 100.00


Since this is the module's only instance, the coverage report is the same as for the module.
Line Coverage for Module : rom_ctrl_scrambled_rom
Line No.TotalCoveredPercent
TOTAL4375.00
CONT_ASSIGN81100.00
CONT_ASSIGN8200
CONT_ASSIGN12811100.00
CONT_ASSIGN14911100.00
CONT_ASSIGN15311100.00

80 logic [Aw-1:0] addr_scr_nonce; 81 0/1 ==> assign data_scr_nonce = scr_nonce[63-Aw:0]; 82 unreachable assign addr_scr_nonce = scr_nonce[63-:Aw]; 83 84 // Parameter Checks ========================================================== 85 86 // The depth needs to be a power of 2 to use address scrambling 87 `ASSERT_INIT(DepthPow2Check_A, (Depth & (Depth - 1)) == 0) 88 // We only support a width up to 64 89 `ASSERT_INIT(MaxWidthCheck_A, Width <= 64) 90 91 // Address scrambling ======================================================== 92 93 logic [Aw-1:0] addr_scr; 94 prim_subst_perm #( 95 .DataWidth (Aw), 96 .NumRounds (2), 97 .Decrypt (0) 98 ) u_sp_addr ( 99 .data_i (rom_addr_i), 100 .key_i (addr_scr_nonce), 101 .data_o (addr_scr) 102 ); 103 104 // Keystream generation ====================================================== 105 106 logic [63:0] keystream; 107 108 prim_prince #( 109 .DataWidth (64), 110 .KeyWidth (128), 111 .NumRoundsHalf (3), 112 .HalfwayDataReg (1'b1), 113 .HalfwayKeyReg (1'b1) 114 ) u_prince ( 115 .clk_i (clk_i), 116 .rst_ni (rst_ni), 117 .valid_i (req_i), 118 .data_i ({data_scr_nonce, prince_addr_i}), 119 .key_i (scr_key), 120 .dec_i (1'b0), 121 .data_o (keystream), 122 .valid_o () 123 ); 124 125 if (Width < 64) begin : gen_unread_keystream 126 // Ignore top bits of keystream: we just use the bottom Width bits. 127 logic unused_top_keystream; 128 1/1 assign unused_top_keystream = ^keystream[63:Width]; Tests: T1 T2 T3  129 end 130 131 // The physical ROM ========================================================== 132 133 logic [Width-1:0] rdata_scr; 134 135 prim_rom_adv #( 136 .Width (Width), 137 .Depth (Depth), 138 .MemInitFile (MemInitFile) 139 ) u_rom ( 140 .clk_i (clk_i), 141 .rst_ni (rst_ni), 142 .req_i (req_i), 143 .addr_i (addr_scr), 144 .rvalid_o (rvalid_o), 145 .rdata_o (rdata_scr), 146 .cfg_i (cfg_i) 147 ); 148 149 1/1 assign scr_rdata_o = rdata_scr; Tests: T1 T2 T3  150 151 // XOR rdata with keystream ================================================== 152 153 1/1 assign clr_rdata_o = rdata_scr ^ keystream[Width-1:0]; Tests: T1 T2 T3 

Assert Coverage for Module : rom_ctrl_scrambled_rom
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
DepthPow2Check_A 311 311 0 0
MaxWidthCheck_A 311 311 0 0


DepthPow2Check_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 311 311 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

MaxWidthCheck_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 311 311 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%