# Joe's initfile reference page:
# https://w3-connections.ibm.com/wikis/home?lang=en-us#!/wiki/W9dc674bd1c19_432e_9f66_0e8b6ce7195f/page/P9%20Initfile%20Strategy%20%26%20Execution
# http://ausxgsatm2.austin.ibm.com/gsa/home/j/m/jmcgill/web/public/p8/initfiles/mba_def.initfile
#--******************************************************************************
#-- ISSUES TO RESOVLE
#--******************************************************************************
#
#--******************************************************************************
#-- IMPORTANT SUPPORT NOTES AS OF 4/21/2016
#--******************************************************************************
# Currently only supports DIMMS where CL=TRCD=TRP (ie 16-16-16)
# Steve Powell says he's seen DIMMs that don't match
# What needs to be done to support other DIMMs
# Replace def_MEM_TYPE_1866_13_13_13 variables with freq+CL variables
# Because TRCD and TRP don't really matter for the equations that this variable is being used for
# So we should rewrite these equations in terms of just freq+CL
# Here we assume WL = ATTR_EFF_DRAM_CWL (which is true if no Additive Latency / Posted CAS).
# So no support for Posted CAS / Additive latency
# Only supports Burst Length 8 (CODE AND LOGIC STATEMENT)
# Initfile is hardcoded assuming BL=8 and BL/2=4
# Attribute does exist for Burst length. However, Nimbus logic does NOT support any other burst lengths
# If other burst lengths are to be supported, a logic change would be required
# Only supports RDIMM with RDIMM and LRDIMM with LRDIMM, no mixing (CODE AND LOGIC STATEMENT)
# Logic would have to support different wr data delays to differen DIMMs. It does NOT.
#
#--******************************************************************************
#-- FUTURE ENHANCEMENTS
#--******************************************************************************
# Enhancements to be done later: ATTR_EFF_RDTAG_DLY and ATTR_EFF_WRDATA_DLY attributes
# What needs to be done to support other DIMMs
# ATTR_EFF_RDTAG_DLY and ATTR_EFF_WRDATA_DLY attributes (better to calculate in code than init file)
# MBA_DSM0Q_CFG_RDTAG_DLY to use ATTR_EFF_RDTAG_DLY
# MBA_DSM0Q_CFG_WRDATA_DLY to use ATTR_EFF_WRDATA_DLY
# ATTR_EFF_TCCD_S attribute (hardcoded to 4 for now)
#--******************************************************************************
#-- REFERENCES FOR FILE
#--******************************************************************************
# Files used to check what target type attributes are
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml
# Example:
# ATTR_EFF_NUM_RANKS_PER_DIMM
# TARGET_TYPE_MCS
# File used to see if attribute is 1D or 2D array
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/output/gen/attribute_ids.H
# Example:
# typedef uint8_t ATTR_EFF_DIMM_TYPE_Type[2][2];
# File for finding correct spydef name
# 1st find the spydef file this ekb build is looking at by finding SPYDEF_FILE_LOCATION in file below
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/tools/ifCompiler/scan_procedures.mk
# 2nd open *.spydef in that dir and search for spy names
# /afs/awd/projects/eclipz/lab/p9/vbu_models/n10_e9067_tp058_ec163uXXa_soa_sq_u190_01/edc/*.spydef
# (File comes from actually building a vbu file and looking at the spydef)
# Example:
# idial MCP.PORT1.SRQ.PC.MBAREF0Q_CFG_TRFC {
# Wrapper file calling this
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/hwp/memory/p9_mss_scominit.C
# Output file generated
# /afs/awd/projects/eclipz/pz6/usr/sleung/ekb/chips/p9/procedures/hwp/initfiles/p9_mca_scom.C
#
# COMMON DEBUG
# -debug5.16.i6.d
# If complaining unsupported attribute, try commenting out of attribute in attribute file
# If complaining memory fault, maybe wrong integer length in attribute file
#--******************************************************************************
#-- Required keywords/variables
#--******************************************************************************
SyntaxVersion = 3
target_type 0 TARGET_TYPE_MCA;
target_type 1 TARGET_TYPE_MCBIST;
target_type 2 TARGET_TYPE_MCS;
target_type 3 TARGET_TYPE_SYSTEM;
define MCBIST = TGT1; # If referencing Attr from mcbist, add "MCBIST." in front
define MCS = TGT2; # If referencing Attr from mcs, add "MCS." in front
define SYS = TGT3; # If referencing Attr from system, add "SYS." in front
#--******************************************************************************
#-- Systems Config
#--******************************************************************************
#--******************************************************************************
#-- Effective Attributes
#--******************************************************************************
# PORT INDEX FOR ACCESSING PROPER ENTRY IN ARRAY
define def_POSITION = ATTR_CHIP_UNIT_POS;
define def_PORT_INDEX = def_POSITION % 2;
# define frequency range for potential support of sync mode
define def_MSS_FREQ_EQ_1866 = ( (MCBIST.ATTR_MSS_FREQ<1867));
define def_MSS_FREQ_EQ_2133 = ((MCBIST.ATTR_MSS_FREQ>=1867) && (MCBIST.ATTR_MSS_FREQ<2134));
define def_MSS_FREQ_EQ_2400 = ((MCBIST.ATTR_MSS_FREQ>=2134) && (MCBIST.ATTR_MSS_FREQ<2401));
define def_MSS_FREQ_EQ_2667 = ((MCBIST.ATTR_MSS_FREQ>=2667) );
define def_MEM_TYPE_1866_13_13_13 = def_MSS_FREQ_EQ_1866 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 13 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 13 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 13 );
define def_MEM_TYPE_1866_14_14_14 = def_MSS_FREQ_EQ_1866 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 14 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 14 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 14 );
define def_MEM_TYPE_2133_15_15_15 = def_MSS_FREQ_EQ_2133 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 15 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 15 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 15 );
define def_MEM_TYPE_2133_16_16_16 = def_MSS_FREQ_EQ_2133 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 16 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 16 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 16 );
define def_MEM_TYPE_2400_16_16_16 = def_MSS_FREQ_EQ_2400 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 16 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 16 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 16 );
define def_MEM_TYPE_2400_17_17_17 = def_MSS_FREQ_EQ_2400 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 17 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 17 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 17 );
define def_MEM_TYPE_2400_18_18_18 = def_MSS_FREQ_EQ_2400 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 18 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 18 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 18 );
define def_MEM_TYPE_2667_18_18_18 = def_MSS_FREQ_EQ_2667 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 18 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 18 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 18 );
define def_MEM_TYPE_2667_19_19_19 = def_MSS_FREQ_EQ_2667 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 19 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 19 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 19 );
define def_MEM_TYPE_2667_20_20_20 = def_MSS_FREQ_EQ_2667 && ( MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] == 20 ) && ( MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX] == 20 ) && ( MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX] == 20 );
define def_NUM_RANKS = ( MCS.ATTR_EFF_NUM_RANKS_PER_DIMM[def_PORT_INDEX][0]
+ MCS.ATTR_EFF_NUM_RANKS_PER_DIMM[def_PORT_INDEX][1] );
define def_REFRESH_INTERVAL = ((MCS.ATTR_EFF_DRAM_TREFI[def_PORT_INDEX])/(8*def_NUM_RANKS));
define def_RANK_SWITCH_TCK = 4 + ((MCBIST.ATTR_MSS_FREQ-1866)/267); # 1866: 4 2133: 5 2400: 6 2667: 7
define def_BUS_TURNAROUND_TCK = 4 + ((MCBIST.ATTR_MSS_FREQ-1866)/267); # 1866: 4 2133: 5 2400: 6 2667: 7
#--******************************************************************************
#-- Dial Assignments
#--******************************************************************************
# TMR0 SCOM REGISTER #
# DRAM TIMING PARAMETERS #
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RRDM_DLY [when=S] { # BL/2+rank_switch
spyv;
4 + def_RANK_SWITCH_TCK;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RRSMSR_DLY [when=S] { # tccd_s
spyv;
4;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RRSMDR_DLY [when=S] { # tccd_s
spyv;
4;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RROP_DLY [when=S] { # tccd_l
spyv;
MCS.ATTR_EFF_DRAM_TCCD_L[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WWDM_DLY [when=S] { # BL/2+rank_switch
spyv;
4 + def_RANK_SWITCH_TCK;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WWSMSR_DLY [when=S] { # tccd_s
spyv;
4;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WWSMDR_DLY [when=S] { # tccd_s
spyv;
4;
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WWOP_DLY [when=S] { # tccd_l
spyv;
MCS.ATTR_EFF_DRAM_TCCD_L[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RWDM_DLY [when=S] { # (RL+BL/2+turn_around)-WL
spyv;
MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] + 4 + def_BUS_TURNAROUND_TCK - MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RWSMSR_DLY [when=S] { # (RL+BL/2+turn_around)-WL
spyv;
MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] + 4 + def_BUS_TURNAROUND_TCK - MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_RWSMDR_DLY [when=S] { # (RL+BL/2+turn_around)-WL
spyv;
MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX] + 4 + def_BUS_TURNAROUND_TCK - MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WRDM_DLY [when=S] { # (WL+BL/2+turn_around)-RL
spyv;
MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX] + 4 + def_BUS_TURNAROUND_TCK - MCS.ATTR_EFF_DRAM_CL[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WRSMSR_DLY [when=S] { # WL+BL/2+(Twtr_s/clock period)
spyv;
MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX] + 4 + MCS.ATTR_EFF_DRAM_TWTR_S[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR0Q_WRSMDR_DLY [when=S] { # WL+BL/2+Twtr_s
spyv;
MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX] + 4 + MCS.ATTR_EFF_DRAM_TWTR_S[def_PORT_INDEX];
}
# TMR1 SCOM REGISTER #
# DRAM TIMING PARAMETERS #
ispy MCP.PORT0.SRQ.MBA_TMR1Q_RRSBG_DLY [when=S] { # tCCDL
spyv;
MCS.ATTR_EFF_DRAM_TCCD_L[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_WRSBG_DLY [when=S] { # WL+BL/2+Twtr_l
spyv;
MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX] + 4 + MCS.ATTR_EFF_DRAM_TWTR_L[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_TFAW [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TFAW[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_TRCD [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRCD[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_TRP [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRP[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_TRAS [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRAS[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_WR2PRE [when=S] { # CWL+BL/2+Twr
spyv;
MCS.ATTR_EFF_DRAM_CWL[def_PORT_INDEX] + 4 + MCS.ATTR_EFF_DRAM_TWR[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_RD2PRE [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRTP[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_TRRD [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRRD_S[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_TRRD_SBG [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRRD_L[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.MBA_TMR1Q_CFG_ACT_TO_DIFF_RANK_DLY [when=S] {
spyv, expr;
8, (def_MSS_FREQ_EQ_1866==1);
9, (def_MSS_FREQ_EQ_2133==1);
10, (def_MSS_FREQ_EQ_2400==1);
11, (def_MSS_FREQ_EQ_2667==1);
}
# DSM0 SCOM REGISTER #
# DRAM TIMING PARAMETERS #
# TODO ANDRE will make ATTR_EFF_RDTAG_DLY a precalculated attribute
# Can tie this off CL and frequency
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_RDTAG_DLY [when=S] { # ATTR_EFF_DIMM_TYPE: CDIMM = 0 RDIMM = 1 UDIMM = 2 LRDIMM = 3
# spyv;
# 17; # TEMPORARY since right now we only support 16-16-16 2400
spyv, expr;
14, ((def_MEM_TYPE_1866_13_13_13==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
15, ((def_MEM_TYPE_1866_14_14_14==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
16, ((def_MEM_TYPE_2133_15_15_15==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
17, ((def_MEM_TYPE_2133_16_16_16==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
17, ((def_MEM_TYPE_2400_16_16_16==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
18, ((def_MEM_TYPE_2400_17_17_17==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
19, ((def_MEM_TYPE_2400_18_18_18==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
19, ((def_MEM_TYPE_2667_18_18_18==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
20, ((def_MEM_TYPE_2667_19_19_19==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
21, ((def_MEM_TYPE_2667_20_20_20==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
16, ((def_MEM_TYPE_1866_13_13_13==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
17, ((def_MEM_TYPE_1866_14_14_14==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
18, ((def_MEM_TYPE_2133_15_15_15==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
19, ((def_MEM_TYPE_2133_16_16_16==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
19, ((def_MEM_TYPE_2400_16_16_16==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
20, ((def_MEM_TYPE_2400_17_17_17==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
21, ((def_MEM_TYPE_2400_18_18_18==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
21, ((def_MEM_TYPE_2667_18_18_18==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
22, ((def_MEM_TYPE_2667_19_19_19==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
23, ((def_MEM_TYPE_2667_20_20_20==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
}
# TODO ANDRE will make ATTR_EFF_WRDATA_DLY a precalculated attribute
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_WRDATA_DLY [when=S] {
# spyv;
# 5; # TEMPORARY since right now we only support 16-16-16 2400
spyv, expr;
3, ((def_MSS_FREQ_EQ_1866==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
4, ((def_MSS_FREQ_EQ_2133==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
5, ((def_MSS_FREQ_EQ_2400==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
6, ((def_MSS_FREQ_EQ_2667==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==1));
2, ((def_MSS_FREQ_EQ_1866==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
3, ((def_MSS_FREQ_EQ_2133==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
4, ((def_MSS_FREQ_EQ_2400==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
5, ((def_MSS_FREQ_EQ_2667==1) && (MCS.ATTR_EFF_DIMM_TYPE[def_PORT_INDEX][0]==3));
}
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_WRDONE_DLY [when=S] {
spyv;
24;
}
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_RODT_START_DLY [when=S] {
spyv, expr;
4, (def_MEM_TYPE_1866_13_13_13==1);
5, (def_MEM_TYPE_1866_14_14_14==1);
6, (def_MEM_TYPE_2133_15_15_15==1);
7, (def_MEM_TYPE_2133_16_16_16==1);
7, (def_MEM_TYPE_2400_16_16_16==1);
8, (def_MEM_TYPE_2400_17_17_17==1);
9, (def_MEM_TYPE_2400_18_18_18==1);
9, (def_MEM_TYPE_2667_18_18_18==1);
10, (def_MEM_TYPE_2667_19_19_19==1);
11, (def_MEM_TYPE_2667_20_20_20==1);
}
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_RODT_END_DLY [when=S] {
spyv, expr;
9, (def_MEM_TYPE_1866_13_13_13==1);
10, (def_MEM_TYPE_1866_14_14_14==1);
11, (def_MEM_TYPE_2133_15_15_15==1);
12, (def_MEM_TYPE_2133_16_16_16==1);
12, (def_MEM_TYPE_2400_16_16_16==1);
13, (def_MEM_TYPE_2400_17_17_17==1);
14, (def_MEM_TYPE_2400_18_18_18==1);
14, (def_MEM_TYPE_2667_18_18_18==1);
15, (def_MEM_TYPE_2667_19_19_19==1);
16, (def_MEM_TYPE_2667_20_20_20==1);
}
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_WODT_START_DLY [when=S] {
spyv;
1;
}
ispy MCP.PORT0.SRQ.MBA_DSM0Q_CFG_WODT_END_DLY [when=S] {
spyv;
6;
}
# FARB0 SCOM REGISTER #
espy MCP.PORT0.SRQ.MBA_FARB0Q_CFG_PARITY_AFTER_CMD [when=S] {
spyv;
ON;
}
# REF0 SCOM REGISTER #
#gdial std_size 4gbx4 (8GB rank)
ispy MCP.PORT0.SRQ.PC.MBAREF0Q_CFG_REFRESH_INTERVAL [when=S] {
spyv;
def_REFRESH_INTERVAL;
}
ispy MCP.PORT0.SRQ.PC.MBAREF0Q_CFG_TRFC [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRFC[def_PORT_INDEX];
}
ispy MCP.PORT0.SRQ.PC.MBAREF0Q_CFG_REFR_TSV_STACK [when=S] {
spyv;
MCS.ATTR_EFF_DRAM_TRFC_DLR[def_PORT_INDEX];
}
# RPC0 SCOM REGISTER #
ispy MCP.PORT0.SRQ.PC.MBARPC0Q_CFG_PUP_PDN [when=S] { # tCKE
spyv, expr;
5, (def_MSS_FREQ_EQ_1866==1);
6, (def_MSS_FREQ_EQ_2133==1);
6, (def_MSS_FREQ_EQ_2400==1);
7, (def_MSS_FREQ_EQ_2667==1);
}
ispy MCP.PORT0.SRQ.PC.MBARPC0Q_CFG_PDN_PUP [when=S] { # tPD
spyv, expr;
5, (def_MSS_FREQ_EQ_1866==1);
6, (def_MSS_FREQ_EQ_2133==1);
6, (def_MSS_FREQ_EQ_2400==1);
7, (def_MSS_FREQ_EQ_2667==1);
}
ispy MCP.PORT0.SRQ.PC.MBARPC0Q_CFG_PUP_AVAIL [when=S] { # tXP
spyv, expr;
6, (def_MSS_FREQ_EQ_1866==1);
7, (def_MSS_FREQ_EQ_2133==1);
8, (def_MSS_FREQ_EQ_2400==1);
9, (def_MSS_FREQ_EQ_2667==1);
}
# STR0 SCOM REGISTER #
ispy MCP.PORT0.SRQ.PC.MBASTR0Q_CFG_TCKSRE [when=S] {
spyv, expr;
10, (def_MSS_FREQ_EQ_1866==1);
11, (def_MSS_FREQ_EQ_2133==1);
12, (def_MSS_FREQ_EQ_2400==1);
14, (def_MSS_FREQ_EQ_2667==1);
}
ispy MCP.PORT0.SRQ.PC.MBASTR0Q_CFG_TCKSRX [when=S] {
spyv, expr;
10, (def_MSS_FREQ_EQ_1866==1);
11, (def_MSS_FREQ_EQ_2133==1);
12, (def_MSS_FREQ_EQ_2400==1);
14, (def_MSS_FREQ_EQ_2667==1);
}
ispy MCP.PORT0.SRQ.PC.MBASTR0Q_CFG_TCKESR [when=S] {
spyv;
5;
}
ispy MCP.PORT0.SRQ.PC.MBASTR0Q_CFG_TXSDLL [when=S] {
spyv, expr;
597, (def_MSS_FREQ_EQ_1866==1);
768, (def_MSS_FREQ_EQ_2133==1);
768, (def_MSS_FREQ_EQ_2400==1);
939, (def_MSS_FREQ_EQ_2667==1);
}
####################################################
# DD1 WORKAROUNDS
####################################################
# Force clock enable high DD1 Periodics Issue
espy MCP.PORT0.SRQ.MBA_FARB0Q_CFG_OE_ALWAYS_ON [when=S]{
spyv;
ON;
}
# Epsilon Settings per Power Bus Spreadsheet
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_JITTER_EPSILON [when=S] {
spyv;
0x1;
}
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_LOCAL_NODE_EPSILON [when=S] {
spyv;
SYS.ATTR_PROC_EPS_READ_CYCLES_T0 / 4;
}
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_NEAR_NODAL_EPSILON [when=S] {
spyv;
SYS.ATTR_PROC_EPS_READ_CYCLES_T1 / 4;
}
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_REMOTE_NODAL_EPSILON [when=S] {
spyv;
SYS.ATTR_PROC_EPS_READ_CYCLES_T2 / 4;
}
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_GROUP_EPSILON [when=S] {
spyv;
SYS.ATTR_PROC_EPS_READ_CYCLES_T1 / 4;
}
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCEPSQ_VECTOR_GROUP_EPSILON [when=S] {
spyv;
SYS.ATTR_PROC_EPS_READ_CYCLES_T2 / 4;
}
# HW366164 - SRQ Fullness Control
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_SQ_LFSR_CNTL [when=S] {
spyv;
0b0100;
}
# Number of RMW buffers available
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_NUM_RMW_BUF [when=S] {
spyv;
0b11100;
}
# All rctrl ops through tag FIFO (bit 0)
# Serialize CMDLIST pf drop through rctrl (bit 1)
# (bit 0 keep at 0)
ispy MC01.PORT0.ATCL.CL.CLSCOM.MCPERF2_RCTRL_CONFIG [when=S] {
spyv;
0b110;
}
# Max 24 64-byte read buffers (HW375534)
ispy MCP.PORT0.SRQ.MBA_RRQ0Q_CFG_RDBUFF_CAPACITY_LIMIT [when=S] {
spyv;
0b011000;
}