Skip to content

Commit a19089e

Browse files
alvintpwangRAJA DAS
authored andcommitted
Move MCBIST lib to generic folder
Change-Id: I00f1e5043fa72227600585c5acee9ab17b6a8857 Original-Change-Id: Ib717742707bea6a626131578f5a3b1aeebc76281 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69677 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80998 Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Tested-by: RAJA DAS <rajadas2@in.ibm.com>
1 parent cd9a1a6 commit a19089e

File tree

2 files changed

+231
-0
lines changed

2 files changed

+231
-0
lines changed

src/import/generic/memory/lib/utils/shared/mss_generic_consts.H

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,26 @@ enum common_consts
5858
ATTR_RANK3 = 3, ///< Attribute index for rank3
5959
};
6060

61+
///
62+
/// @brief Common mcbist constants
63+
///
64+
enum mcbist_common_consts
65+
{
66+
CYCLES_PER_CMD = 4, ///< Best case cycles per MCBIST command
67+
MAX_RANK_PER_DIMM = 4,
68+
69+
BYTES_PER_GB = 1000000000, ///< Multiplier to go from GB to B
70+
T_PER_MT = 1000000, ///< Multiplier to go from MT/s to T/s
71+
72+
// Number of double words in...
73+
NUM_DW_IN_128B = 16,
74+
NUM_DW_IN_64B = 8,
75+
76+
BG_SCRUB_IN_HOURS = 12,
77+
CMD_TIMEBASE = 8192, ///< Represents the timebase multiplier for the MCBIST inter cmd gap
78+
MAX_CMD_GAP = 4095, ///< Represents the maximum (non-multplied) time for MCBIST inter cmd gap
79+
};
80+
6181
///
6282
/// @brief Common timings
6383
///
@@ -243,6 +263,169 @@ enum states
243263
NO_CHIP_SELECT_ACTIVE = 0xFF,
244264
};
245265

266+
namespace mcbist
267+
{
268+
269+
enum broadcast_timebase
270+
{
271+
// Number of 1024 2:1 cycle timebases to wait starting MCBIST
272+
// for SRQs to get synced for broadcast mode
273+
TB_COUNT_2 = 0b0000001,
274+
TB_COUNT_4 = 0b0000011,
275+
TB_COUNT_8 = 0b0000111,
276+
TB_COUNT_16 = 0b0001111,
277+
TB_COUNT_32 = 0b0011111,
278+
TB_COUNT_64 = 0b0111111,
279+
TB_COUNT_128 = 0b1111111,
280+
};
281+
282+
enum rmw_address
283+
{
284+
// 32B block addresses into the maint portion of the rmw buffer
285+
DW0 = 0b111110000,
286+
DW1 = 0b111110001,
287+
DW2 = 0b111110010,
288+
DW3 = 0b111110011,
289+
DW4 = 0b111110100,
290+
DW5 = 0b111110101,
291+
DW6 = 0b111110110,
292+
DW7 = 0b111110111,
293+
DW8 = 0b111111000,
294+
DW9 = 0b111111001,
295+
DWA = 0b111111010,
296+
DWB = 0b111111011,
297+
DWC = 0b111111100,
298+
DWD = 0b111111101,
299+
DWE = 0b111111110,
300+
DWF = 0b111111111,
301+
};
302+
303+
enum data_rotate_mode
304+
{
305+
// MCBIST data rotate modes refer to register MCBDRCR bits 0:3
306+
ROTATE_0_BITS = 0b0000,
307+
ROTATE_1_BITS = 0b0001,
308+
ROTATE_2_BITS = 0b0010,
309+
ROTATE_3_BITS = 0b0011,
310+
ROTATE_4_BITS = 0b0100,
311+
ROTATE_5_BITS = 0b0101,
312+
ROTATE_6_BITS = 0b0110,
313+
ROTATE_7_BITS = 0b0111,
314+
ROTATE_8_BITS = 0b1000,
315+
ROTATE_9_BITS = 0b1001,
316+
ROTATE_10_BITS = 0b1010,
317+
ROTATE_11_BITS = 0b1011,
318+
ROTATE_12_BITS = 0b1100,
319+
ROTATE_13_BITS = 0b1101,
320+
ROTATE_14_BITS = 0b1110,
321+
ROTATE_15_BITS = 0b1111,
322+
};
323+
324+
enum data_seed_mode
325+
{
326+
// MCBIST data seed modes refer to register MCBDRCR bits 21:22
327+
ALL_UNIQUE = 0b00,
328+
REPEAT_SEED_0 = 0b01,
329+
REPEAT_SEED_1 = 0b10,
330+
REPEAT_SEED_2 = 0b11,
331+
};
332+
333+
enum data_mode
334+
{
335+
// MCBIST test data modes
336+
FIXED_DATA_MODE = 0b000,
337+
RAND_FWD_MODE = 0b001,
338+
RAND_REV_MODE = 0b010,
339+
RAND_FWD_MAINT = 0b011,
340+
RAND_REV_MAINT = 0b100,
341+
DATA_EQ_ADDR = 0b101,
342+
ROTATE_LEFT_MODE = 0b110,
343+
ROTATE_RIGHT_MODE = 0b111,
344+
};
345+
346+
// 0:3 Operation Type
347+
enum op_type
348+
{
349+
WRITE = 0b0000, // fast, with no concurrent traffic
350+
READ = 0b0001, // fast, with no concurrent traffic
351+
READ_WRITE = 0b0010,
352+
WRITE_READ = 0b0011,
353+
READ_WRITE_READ = 0b0100,
354+
READ_WRITE_WRITE = 0b0101,
355+
RAND_SEQ = 0b0110,
356+
READ_READ_WRITE = 0b1000,
357+
SCRUB_RRWR = 0b1001,
358+
STEER_RW = 0b1010,
359+
ALTER = 0b1011, // (W)
360+
DISPLAY = 0b1100, // (R, slow)
361+
CCS_EXECUTE = 0b1111,
362+
363+
// if bits 9:11 (Data Mode bits) = 000 (bits 4:8 used to specify which subtest to go to)
364+
// Refresh only cmd if bits 9:11 (Data Mode bits) /= 000
365+
GOTO_SUBTEST_N = 0b0111,
366+
};
367+
368+
369+
enum test_type
370+
{
371+
USER_MODE = 0,
372+
CENSHMOO = 1,
373+
SUREFAIL = 2,
374+
MEMWRITE = 3,
375+
MEMREAD = 4,
376+
CBR_REFRESH = 5,
377+
MCBIST_SHORT = 6,
378+
SHORT_SEQ = 7,
379+
DELTA_I = 8,
380+
DELTA_I_LOOP = 9,
381+
SHORT_RAND = 10,
382+
LONG1 = 11,
383+
BUS_TAT = 12,
384+
SIMPLE_FIX = 13,
385+
SIMPLE_RAND = 14,
386+
SIMPLE_RAND_2W = 15,
387+
SIMPLE_RAND_FIXD = 16,
388+
SIMPLE_RA_RD_WR = 17,
389+
SIMPLE_RA_RD_R = 18,
390+
SIMPLE_RA_FD_R = 19,
391+
SIMPLE_RA_FD_R_INF = 20,
392+
SIMPLE_SA_FD_R = 21,
393+
SIMPLE_RA_FD_W = 22,
394+
INFINITE = 23,
395+
WR_ONLY = 24,
396+
W_ONLY = 25,
397+
R_ONLY = 26,
398+
W_ONLY_RAND = 27,
399+
R_ONLY_RAND = 28,
400+
R_ONLY_MULTI = 29,
401+
SHORT = 30,
402+
SIMPLE_RAND_BARI = 31,
403+
W_R_INFINITE = 32,
404+
W_R_RAND_INFINITE = 33,
405+
R_INFINITE1 = 34,
406+
R_INFINITE_RF = 35,
407+
MARCH = 36,
408+
SIMPLE_FIX_RF = 37,
409+
SHMOO_STRESS = 38,
410+
SIMPLE_RAND_RA = 39,
411+
SIMPLE_FIX_RA = 40,
412+
SIMPLE_FIX_RF_RA = 41,
413+
TEST_RR = 42,
414+
TEST_RF = 43,
415+
W_ONLY_INFINITE_RAND = 44,
416+
MCB_2D_CUP_SEQ = 45,
417+
MCB_2D_CUP_RAND = 46,
418+
SHMOO_STRESS_INFINITE = 47,
419+
HYNIX_1_COL = 48,
420+
RMWFIX = 49,
421+
RMWFIX_I = 50,
422+
W_INFINITE = 51,
423+
R_INFINITE = 52,
424+
};
425+
426+
427+
} // namespace mcbist
428+
246429
///
247430
/// @brief Supported DIMM speed equality deliberations
248431
///

src/import/generic/procedures/xml/error_info/generic_error.xml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,4 +392,52 @@
392392
</deconfigure>
393393
</hwpError>
394394

395+
<hwpError>
396+
<rc>RC_MSS_ZERO_FREQ_OR_SIZE</rc>
397+
<description>
398+
An zero memory frequency was passed to calculate min cmd gap
399+
</description>
400+
<ffdc>FREQ</ffdc>
401+
<ffdc>SIZE</ffdc>
402+
<callout>
403+
<procedure>CODE</procedure>
404+
<priority>HIGH</priority>
405+
</callout>
406+
</hwpError>
407+
408+
<hwpError>
409+
<rc>RC_MSS_MEMDIAGS_INVALID_PATTERN_INDEX</rc>
410+
<description>An invalid pattern index was passed to the pattern loader</description>
411+
<ffdc>INDEX</ffdc>
412+
<ffdc>MC_TYPE</ffdc>
413+
<callout>
414+
<procedure>CODE</procedure>
415+
<priority>HIGH</priority>
416+
</callout>
417+
</hwpError>
418+
419+
<hwpError>
420+
<rc>RC_MSS_MCBIST_PROGRAM_TOO_BIG</rc>
421+
<description>MCBIST program larger than currently supported size</description>
422+
<ffdc>PROGRAM_LENGTH</ffdc>
423+
<ffdc>TARGET</ffdc>
424+
<ffdc>MC_TYPE</ffdc>
425+
<callout>
426+
<procedure>CODE</procedure>
427+
<priority>HIGH</priority>
428+
</callout>
429+
</hwpError>
430+
431+
<hwpError>
432+
<rc>RC_MSS_MCBIST_INVALID_ADDRESS_PAIR_INDEX</rc>
433+
<description>An invalid address pair index</description>
434+
<ffdc>INDEX</ffdc>
435+
<ffdc>MC_TYPE</ffdc>
436+
<ffdc>TARGET</ffdc>
437+
<callout>
438+
<procedure>CODE</procedure>
439+
<priority>HIGH</priority>
440+
</callout>
441+
</hwpError>
442+
395443
</hwpErrors>

0 commit comments

Comments
 (0)