From 81860f141ca3103663be80279b3dff7f34cd8fc2 Mon Sep 17 00:00:00 2001 From: ataberk Date: Sun, 10 Aug 2025 13:54:41 +0200 Subject: fix write to precharge latency to be compliant with the standard --- sources/apps/QUAC-TRNG/src/observe.cpp | 10 +++--- sources/apps/QUAC-TRNG/src/util.cpp | 52 ++++++++++++++++---------------- sources/apps/RetentionTest/retention.cpp | 2 ++ 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/sources/apps/QUAC-TRNG/src/observe.cpp b/sources/apps/QUAC-TRNG/src/observe.cpp index 275c516..d46c174 100644 --- a/sources/apps/QUAC-TRNG/src/observe.cpp +++ b/sources/apps/QUAC-TRNG/src/observe.cpp @@ -162,7 +162,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_MV(PATTERN_REG, TEMP_PATTERN_REG)); @@ -182,7 +182,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -197,7 +197,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -212,7 +212,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -247,7 +247,7 @@ Program genWriteRange(int row_reg, int no_rows, int bank_reg, bool stripes) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0), SMC_NOP()); ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 0), SMC_NOP(), SMC_NOP(), SMC_NOP()); if(stripes) { diff --git a/sources/apps/QUAC-TRNG/src/util.cpp b/sources/apps/QUAC-TRNG/src/util.cpp index 41e4d50..40b542f 100644 --- a/sources/apps/QUAC-TRNG/src/util.cpp +++ b/sources/apps/QUAC-TRNG/src/util.cpp @@ -77,7 +77,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_MV(PATTERN_REG, TEMP_PATTERN_REG)); @@ -97,7 +97,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -112,7 +112,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -127,7 +127,7 @@ Program genWriteRange1000(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -165,7 +165,7 @@ Program genWriteRange1001(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_MV(PATTERN_REG, TEMP_PATTERN_REG)); @@ -185,7 +185,7 @@ Program genWriteRange1001(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -200,7 +200,7 @@ Program genWriteRange1001(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -221,7 +221,7 @@ Program genWriteRange1001(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -253,7 +253,7 @@ Program genWriteRange1010(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_MV(PATTERN_REG, TEMP_PATTERN_REG)); @@ -291,7 +291,7 @@ Program genWriteRange1011(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_MV(PATTERN_REG, TEMP_PATTERN_REG)); @@ -311,7 +311,7 @@ Program genWriteRange1011(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -332,7 +332,7 @@ Program genWriteRange1011(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -348,7 +348,7 @@ Program genWriteRange1011(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -380,7 +380,7 @@ Program genWriteRange1100(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -397,7 +397,7 @@ Program genWriteRange1100(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -418,7 +418,7 @@ Program genWriteRange1100(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -433,7 +433,7 @@ Program genWriteRange1100(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -471,7 +471,7 @@ Program genWriteRange1101(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -488,7 +488,7 @@ Program genWriteRange1101(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -509,7 +509,7 @@ Program genWriteRange1101(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -530,7 +530,7 @@ Program genWriteRange1101(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -564,7 +564,7 @@ Program genWriteRange1110(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -579,7 +579,7 @@ Program genWriteRange1110(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -594,7 +594,7 @@ Program genWriteRange1110(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -615,7 +615,7 @@ Program genWriteRange1110(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_inst(SMC_SLEEP(4)); @@ -653,7 +653,7 @@ Program genWriteRange1111(int row_reg, int no_rows, int bank_reg) ret.add_inst(SMC_NOP(), SMC_NOP(), SMC_NOP(), SMC_WRITE(bank_reg, 0, CAR, 1, 0, 0)); ret.add_inst(SMC_NOP(),SMC_NOP(),SMC_NOP(),SMC_NOP()); } - ret.add_inst(SMC_SLEEP(4)); + ret.add_inst(SMC_SLEEP(5)); ret.add_inst(SMC_PRE(bank_reg, 0, 1), SMC_NOP(), SMC_NOP(), SMC_NOP()); ret.add_branch(ret.BR_TYPE::BL, row_reg, INIT_LOOP, "genWriteRange:LOOP_BEGIN"); diff --git a/sources/apps/RetentionTest/retention.cpp b/sources/apps/RetentionTest/retention.cpp index a5ffbf6..afed5ae 100644 --- a/sources/apps/RetentionTest/retention.cpp +++ b/sources/apps/RetentionTest/retention.cpp @@ -106,6 +106,8 @@ int main(int argc, char*argv[]) // & precharge the open bank program.add_inst(all_nops()); program.add_inst(all_nops()); + program.add_inst(all_nops()); + program.add_inst(all_nops()); program.add_inst(__pack_mininsts( SMC_PRE(5, 0, 0), SMC_NOP(), SMC_NOP(), SMC_NOP() -- cgit v1.2.3