From 3fcd1c7338acad19ea4b5ed3d5c85bc6d7906dc9 Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Wed, 25 Feb 2026 00:08:42 -0800 Subject: [PATCH] add MemoryOperationStart.rw_mask --- crates/cpu/src/fetch.rs | 1 + crates/cpu/src/main_memory_and_io.rs | 1 + crates/cpu/tests/expected/fetch.vcd | 912 +++++++++++++++++++++++++++ crates/cpu/tests/fetch.rs | 5 + 4 files changed, 919 insertions(+) diff --git a/crates/cpu/src/fetch.rs b/crates/cpu/src/fetch.rs index eb766d9..15ff6bd 100644 --- a/crates/cpu/src/fetch.rs +++ b/crates/cpu/src/fetch.rs @@ -452,6 +452,7 @@ impl L1ICacheStateSim { mem_op_ty.write_data.element().zero(), mem_op_ty.write_data.len(), ), + rw_mask: repeat(true, mem_op_ty.write_data.len()), fetch_block_id, config, }, diff --git a/crates/cpu/src/main_memory_and_io.rs b/crates/cpu/src/main_memory_and_io.rs index f5e8779..ae0fa84 100644 --- a/crates/cpu/src/main_memory_and_io.rs +++ b/crates/cpu/src/main_memory_and_io.rs @@ -21,6 +21,7 @@ pub struct MemoryOperationStart + PhantomConstCpuC pub kind: MemoryOperationKind, pub addr: UInt<64>, pub write_data: ArrayType, CpuConfigFetchWidthInBytes>, + pub rw_mask: ArrayType>, pub fetch_block_id: UInt<{ FETCH_BLOCK_ID_WIDTH }>, // for debugging pub config: C, } diff --git a/crates/cpu/tests/expected/fetch.vcd b/crates/cpu/tests/expected/fetch.vcd index b5ff233..8129bbc 100644 --- a/crates/cpu/tests/expected/fetch.vcd +++ b/crates/cpu/tests/expected/fetch.vcd @@ -137,6 +137,16 @@ $var wire 8 m_G{n \[5] $end $var wire 8 k~t=8 \[6] $end $var wire 8 UA{3, \[7] $end $upscope $end +$scope struct rw_mask $end +$var wire 1 *aiyE \[0] $end +$var wire 1 F7@F8 \[1] $end +$var wire 1 T-P>Z \[2] $end +$var wire 1 |tQ6` \[3] $end +$var wire 1 YCm5z \[4] $end +$var wire 1 :?32J \[5] $end +$var wire 1 mS#3< \[6] $end +$var wire 1 ^qjb[ \[7] $end +$upscope $end $var wire 8 |V%2^ fetch_block_id $end $var string 1 '@T[? config $end $upscope $end @@ -330,6 +340,16 @@ $var wire 8 m_G{n" \[5] $end $var wire 8 k~t=8" \[6] $end $var wire 8 UA{3," \[7] $end $upscope $end +$scope struct rw_mask $end +$var wire 1 *aiyE" \[0] $end +$var wire 1 F7@F8" \[1] $end +$var wire 1 T-P>Z" \[2] $end +$var wire 1 |tQ6`" \[3] $end +$var wire 1 YCm5z" \[4] $end +$var wire 1 :?32J" \[5] $end +$var wire 1 mS#3<" \[6] $end +$var wire 1 ^qjb[" \[7] $end +$upscope $end $var wire 8 |V%2^" fetch_block_id $end $var string 1 '@T[?" config $end $upscope $end @@ -522,6 +542,16 @@ $var wire 8 >ntTJ \[5] $end $var wire 8 iYM#@ \[6] $end $var wire 8 46)Xi \[7] $end $upscope $end +$scope struct rw_mask $end +$var wire 1 {yHk: \[0] $end +$var wire 1 o'}"> \[1] $end +$var wire 1 6t"OJ \[2] $end +$var wire 1 +(+B~ \[3] $end +$var wire 1 xg"jv \[4] $end +$var wire 1 }U9ER \[5] $end +$var wire 1 "(@LS \[6] $end +$var wire 1 &NGtM \[7] $end +$upscope $end $var wire 8 [mj%r fetch_block_id $end $var string 1 Hn\.r config $end $upscope $end @@ -715,6 +745,16 @@ $var wire 8 >ntTJ" \[5] $end $var wire 8 iYM#@" \[6] $end $var wire 8 46)Xi" \[7] $end $upscope $end +$scope struct rw_mask $end +$var wire 1 {yHk:" \[0] $end +$var wire 1 o'}">" \[1] $end +$var wire 1 6t"OJ" \[2] $end +$var wire 1 +(+B~" \[3] $end +$var wire 1 xg"jv" \[4] $end +$var wire 1 }U9ER" \[5] $end +$var wire 1 "(@LS" \[6] $end +$var wire 1 &NGtM" \[7] $end +$upscope $end $var wire 8 [mj%r" fetch_block_id $end $var string 1 Hn\.r" config $end $upscope $end @@ -1693,6 +1733,16 @@ $var wire 8 |j.^s \[5] $end $var wire 8 Uw*G\ \[6] $end $var wire 8 H{?Xz \[7] $end $upscope $end +$scope struct rw_mask $end +$var wire 1 bwa%g \[0] $end +$var wire 1 W\Ggx \[1] $end +$var wire 1 ;=`BS \[2] $end +$var wire 1 C<|Kz \[3] $end +$var wire 1 |*w;c \[4] $end +$var wire 1 6cD[9 \[5] $end +$var wire 1 3\z-w \[6] $end +$var wire 1 0^&W_ \[7] $end +$upscope $end $var wire 8 $Z" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"max_fetches_in_flight\":16,\"log2_fetch_width_in_bytes\":3,\"log2_cache_line_size_in_bytes\":5,\"log2_l1_i_cache_line_count\":4,\"l1_i_cache_max_misses_in_flight\":2,\"default_unit_max_in_flight\":8,\"rob_size\":20}) '@T[?" 0BXk&[" @@ -3659,6 +3747,14 @@ b0 I5VgQ" b0 >ntTJ" b0 iYM#@" b0 46)Xi" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"max_fetches_in_flight\":16,\"log2_fetch_width_in_bytes\":3,\"log2_cache_line_size_in_bytes\":5,\"log2_l1_i_cache_line_count\":4,\"l1_i_cache_max_misses_in_flight\":2,\"default_unit_max_in_flight\":8,\"rob_size\":20}) Hn\.r" 0jbUZ8" @@ -4334,6 +4430,14 @@ b0 2<{,~" b0 |j.^s" b0 Uw*G\" b0 H{?Xz" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $ntTJ b0 iYM#@ b0 46)Xi +0{yHk: +0o'}"> +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"max_fetches_in_flight\":16,\"log2_fetch_width_in_bytes\":3,\"log2_cache_line_size_in_bytes\":5,\"log2_l1_i_cache_line_count\":4,\"l1_i_cache_max_misses_in_flight\":2,\"default_unit_max_in_flight\":8,\"rob_size\":20}) Hn\.r 0jbUZ8 @@ -5393,6 +5513,14 @@ b0 RVo,W b0 m_G{n b0 k~t=8 b0 UA{3, +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"max_fetches_in_flight\":16,\"log2_fetch_width_in_bytes\":3,\"log2_cache_line_size_in_bytes\":5,\"log2_l1_i_cache_line_count\":4,\"l1_i_cache_max_misses_in_flight\":2,\"default_unit_max_in_flight\":8,\"rob_size\":20}) '@T[? 0BXk&[ @@ -5508,6 +5636,14 @@ b0 sC5/E" b0 W8z?M" b0 vw`(s" b0 %poA2" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwZ" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" 12sb.i" sHdlSome\x20(1) uKE`x" b1000000000000 $Ez[\" +1{yHk:" +1o'}">" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" 11thaQ" sHdlSome\x20(1) :O"uJ" b1000000000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" 1*d$ca" b10 OT\P?" sCacheMiss\x20(2) f&*7b" @@ -6336,6 +6504,14 @@ sHdlSome\x20(1) o=yB&" b1 p:?3*" sHdlSome\x20(1) :O"uJ b1000000000000 #'rzL +1bwa%g +1W\Ggx +1;=`BS +1C<|Kz +1|*w;c +16cD[9 +13\z-w +10^&W_ 1*d$ca b10 OT\P? sCacheMiss\x20(2) f&*7b @@ -6349,15 +6525,47 @@ sHdlSome\x20(1) o=yB& b1 p:?3* sHdlSome\x20(1) uKE`x b1000000000000 $Ez[\ +1{yHk: +1o'}"> +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM 11thaQ sHdlSome\x20(1) `M^?H b1000000000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ 12sb.i sHdlSome\x20(1) e+'S}" b1000000000000 >oMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1BwZ" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $ +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0BwZ" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" b11 |V%2^" sHdlSome\x20(1) uKE`x" b100000000 $Ez[\" +1{yHk:" +1o'}">" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" b11 [mj%r" sHdlSome\x20(1) :O"uJ" b100000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" b11 $ +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM b11 [mj%r sHdlSome\x20(1) `M^?H b100000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ b11 |V%2^ sHdlSome\x20(1) e+'S}" b100000000 >oMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1Bw 1MzPp^ sHdlNone\x20(0) `M^?H" b0 Xi<(L" +0*aiyE" +0F7@F8" +0T-P>Z" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $ +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0BwZ" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" b100 |V%2^" 1hemsM" sHdlNone\x20(0) e}tY|" @@ -10793,6 +11201,14 @@ b0 0w" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" b100 [mj%r" 1Vqu3B" sHdlNone\x20(0) 2{Gzi" @@ -10808,6 +11224,14 @@ b0 =Cms<" b0 VvI\3" sHdlSome\x20(1) :O"uJ" b10000111100000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" b100 $ +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM b100 [mj%r 1Vqu3B sHdlNone\x20(0) 2{Gzi @@ -10947,6 +11387,14 @@ b0 =Cms< b0 VvI\3 sHdlSome\x20(1) `M^?H b10000111100000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ b100 |V%2^ 1hemsM sHdlNone\x20(0) e}tY| @@ -10962,9 +11410,25 @@ b0 0woMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1BwZ" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $" sHdlNone\x20(0) ZX`=`" b0 qP$z\" sHdlNone\x20(0) :O"uJ b0 #'rzL +0bwa%g +0W\Ggx +0;=`BS +0C<|Kz +0|*w;c +06cD[9 +03\z-w +00^&W_ b0 $ sHdlNone\x20(0) ZX`=` b0 qP$z\ sHdlNone\x20(0) uKE`x b0 $Ez[\ +0{yHk: +0o'}"> +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0BwZ" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" b110 |V%2^" 1hemsM" sHdlNone\x20(0) e}tY|" @@ -12290,6 +12826,14 @@ b0 Rp10#" sHdlNone\x20(0) !H^G\" sHdlSome\x20(1) uKE`x" b10010111100000000 $Ez[\" +1{yHk:" +1o'}">" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" b110 [mj%r" 1Vqu3B" sHdlNone\x20(0) 2{Gzi" @@ -12298,6 +12842,14 @@ b0 [#c$d" sHdlNone\x20(0) 9nk$f" sHdlSome\x20(1) :O"uJ" b10010111100000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" b110 $ +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM b110 [mj%r 1Vqu3B sHdlNone\x20(0) 2{Gzi @@ -12434,6 +13002,14 @@ b0 [#c$d sHdlNone\x20(0) 9nk$f sHdlSome\x20(1) `M^?H b10010111100000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ b110 |V%2^ 1hemsM sHdlNone\x20(0) e}tY| @@ -12442,9 +13018,25 @@ b0 Rp10# sHdlNone\x20(0) !H^G\ sHdlSome\x20(1) e+'S}" b10010111100000000 >oMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1BwZ" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $" @@ -14030,6 +14646,14 @@ sHdlNone\x20(0) ZX`=`" b0 qP$z\" sHdlNone\x20(0) :O"uJ b0 #'rzL +0bwa%g +0W\Ggx +0;=`BS +0C<|Kz +0|*w;c +06cD[9 +03\z-w +00^&W_ b0 $ @@ -14076,15 +14700,47 @@ sHdlNone\x20(0) ZX`=` b0 qP$z\ sHdlNone\x20(0) uKE`x b0 $Ez[\ +0{yHk: +0o'}"> +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0Bw 1MzPp^ sHdlSome\x20(1) `M^?H" b10000000000000 Xi<(L" +1*aiyE" +1F7@F8" +1T-P>Z" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" b1110 |V%2^" sHdlSome\x20(1) uKE`x" b10000000000000 $Ez[\" +1{yHk:" +1o'}">" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" b1110 [mj%r" sHdlSome\x20(1) :O"uJ" b10000000000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" b1110 $]R" sReadingCache\x20(1) 6pj#'" @@ -15224,6 +15904,14 @@ sHdlSome\x20(1) jAM}!" b10 p:?3*" sHdlSome\x20(1) :O"uJ b10000000000000 #'rzL +1bwa%g +1W\Ggx +1;=`BS +1C<|Kz +1|*w;c +16cD[9 +13\z-w +10^&W_ b1110 $]R sReadingCache\x20(1) 6pj#' @@ -15234,15 +15922,47 @@ sHdlSome\x20(1) jAM} b10 p:?3* sHdlSome\x20(1) uKE`x b10000000000000 $Ez[\ +1{yHk: +1o'}"> +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM b1110 [mj%r sHdlSome\x20(1) `M^?H b10000000000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ b1110 |V%2^ sHdlSome\x20(1) e+'S}" b10000000000000 >oMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1Bw 1MzPp^ sHdlNone\x20(0) `M^?H" b0 Xi<(L" +0*aiyE" +0F7@F8" +0T-P>Z" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $ +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0BwZ" +1|tQ6`" +1YCm5z" +1:?32J" +1mS#3<" +1^qjb[" b10111 |V%2^" 12sb.i" b10100 Rp10#" sHdlSome\x20(1) uKE`x" b1000000000000 $Ez[\" +1{yHk:" +1o'}">" +16t"OJ" +1+(+B~" +1xg"jv" +1}U9ER" +1"(@LS" +1&NGtM" b10111 [mj%r" 11thaQ" b10100 [#c$d" sHdlSome\x20(1) :O"uJ" b1000000000000 #'rzL" +1bwa%g" +1W\Ggx" +1;=`BS" +1C<|Kz" +1|*w;c" +16cD[9" +13\z-w" +10^&W_" b10111 $ +16t"OJ +1+(+B~ +1xg"jv +1}U9ER +1"(@LS +1&NGtM b10111 [mj%r 11thaQ b10100 [#c$d sHdlSome\x20(1) `M^?H b1000000000000 Xi<(L +1*aiyE +1F7@F8 +1T-P>Z +1|tQ6` +1YCm5z +1:?32J +1mS#3< +1^qjb[ b10111 |V%2^ 12sb.i b10100 Rp10# sHdlSome\x20(1) e+'S}" b1000000000000 >oMcL" +1:x~Ne" +1\]FTR" +1~lij=" +11t<+[" +1tX<6b" +1l~uX{" +1BwoMcL +1:x~Ne +1\]FTR +1~lij= +11t<+[ +1tX<6b +1l~uX{ +1Bw 1MzPp^ sHdlNone\x20(0) `M^?H" b0 Xi<(L" +0*aiyE" +0F7@F8" +0T-P>Z" +0|tQ6`" +0YCm5z" +0:?32J" +0mS#3<" +0^qjb[" b0 |V%2^" sHdlNone\x20(0) uKE`x" b0 $Ez[\" +0{yHk:" +0o'}">" +06t"OJ" +0+(+B~" +0xg"jv" +0}U9ER" +0"(@LS" +0&NGtM" b0 [mj%r" sHdlNone\x20(0) :O"uJ" b0 #'rzL" +0bwa%g" +0W\Ggx" +0;=`BS" +0C<|Kz" +0|*w;c" +06cD[9" +03\z-w" +00^&W_" b0 $ +06t"OJ +0+(+B~ +0xg"jv +0}U9ER +0"(@LS +0&NGtM b0 [mj%r sHdlNone\x20(0) `M^?H b0 Xi<(L +0*aiyE +0F7@F8 +0T-P>Z +0|tQ6` +0YCm5z +0:?32J +0mS#3< +0^qjb[ b0 |V%2^ sHdlNone\x20(0) e+'S}" b0 >oMcL" +0:x~Ne" +0\]FTR" +0~lij=" +01t<+[" +0tX<6b" +0l~uX{" +0BwoMcL +0:x~Ne +0\]FTR +0~lij= +01t<+[ +0tX<6b +0l~uX{ +0Bw) { kind, addr, write_data: _, + rw_mask, fetch_block_id, config: _, } = memory_operation_start; @@ -242,6 +243,10 @@ fn mock_memory(config: PhantomConst) { MemoryOperationKind::Read => {} MemoryOperationKind::Write => unreachable!(), } + assert!( + rw_mask.iter().all(|v| **v), + "rw_mask should be all true: {rw_mask:?}" + ); let entry = #[hdl(sim)] MemoryQueueEntry { addr,