Commit 1417d17e authored by Andrey Filippov's avatar Andrey Filippov

finalized DQS input delay vs clock phase adjustment, combined all current...

finalized DQS input delay vs clock phase adjustment, combined all current results together as a function of the clock phase
parent faaa504f
...@@ -600,6 +600,58 @@ def get_dqi_dqsi(): ...@@ -600,6 +600,58 @@ def get_dqi_dqsi():
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None] None, None, None, None, None, None, None, None, None, None, None]
} }
def get_maxErrDqs():
return {
'early': [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None,
[None, 64.362368028137894], [None, 60.302194877085981], [None, 57.647859713806497], [None, 52.291423247639955], [None, 45.786023431197577], [None, 62.652894325335417],
[None, 60.557409231331356], [None, 58.408281552858178], [None, 60.999981314941245], [None, 65.421884511722794], [50.237142039106317, 63.199432286247571],
[42.318148107136068, 63.239125888953886], [41.538888443111688, 60.584790725674402], [42.889192801896911, 61.083001361402474], [43.529422881523061, 62.777005155999802],
[56.403422132681627, 64.428413897485285], [60.611820094492721, 62.691363553713224], [61.92538079530528, 61.924777990725495], [54.735888483939341, 59.743014096351125],
[56.515433497571749, 61.47385519284785], [62.748846533787678, 63.442643973329268], [54.266395693386677, 61.890510754230952], [55.579956394199009, 59.236175590951468],
[57.416067300930322, 62.333082837840841], [60.261275728468938, 64.199294894521486], [53.229213376288939, 61.945932460921625], [60.533001322865516, 63.757641247713224],
[61.557735427846083, 62.815432605484865], [54.657069712311909, 58.852359481592003], [54.425672609429782, 60.656875181887543], [59.467910273833496, 61.246435197959869],
[53.924572880883488, 64.45713851067498], [55.23813358169582, 62.719016457544093], [55.839925177499225, 58.948775629532548], [61.566879599624116, 60.790128631727512],
[54.046083021004591, 60.382098985693375], [60.38707627184337, 64.442272136745061], [59.073515571031265, 62.78743925890857], [64.307482321184608, 58.880352828168078],
[58.580527899059263, 60.758543132262687], [57.452840958494306, 64.765505556914746], [63.105834948279863, 60.705332405862833], [64.419395649092422, 58.935972089982478],
[57.229903337726483, 60.472290777817484], [55.068968755413863, 66.207436162142642], [60.599986309400691, 60.664636149120639], [59.958689597373933, 64.724809300172552],
[61.272250298186037, 62.384602396234413], [55.842536287795468, 60.754716813399689], [55.37327622693752, 62.706581721293162], [63.58425838093919, 64.60747945679077],
[56.97441752583498, 61.096094251843738], [58.287978226647539, 60.13703706580646], [55.37535553690438, 60.976775925322897], [55.840456977829007, 67.482175741765502],
[59.785192039405473, 63.202782974627048], [53.249010887157141, 63.070874526402008], [51.935450186345037, 60.416539363122524], [57.817824439147756, 60.450092665649841],
[54.532660085694502, 66.340146180008503], [53.477056696116023, 64.116992627172976], [56.105693408017345, 61.586581081461645], [54.792132707204786, 61.2383770579927],
[54.961141918287666, 62.151790521307987], [60.02585305639515, 68.657190337750592]],
'late': None,
'nominal':[[58.315688644802336, 67.941608106525962], [58.699553582372133, 68.216610867075019], [60.013114283184464, 70.870946030354617], [55.522383831337692, 76.227382496521045],
[61.249338253462469, 82.73278231296365], [61.034502057891714, 67.5297317675778], [57.605481866448571, 71.589904918629486], [56.291921165636239, 74.244240081909084],
[59.922883974521909, 79.600676548075512], [54.195929552397018, 83.67318795743563], [59.323986578282543, 69.034479028836927], [59.598161170434622, 73.094652179888612],
[58.284600469622177, 75.748987343168324], [57.930204670535858, 81.105423809334752], [56.480323133327346, 82.16844069617639], [61.330901916723263, 67.260539655001878],
[57.1547706919566, 70.862730136048185], [55.841209991144268, 73.517065299327783], [63.030702302510207, 78.873501765494325], [61.812833478946203, 84.400362740016817],
[60.701948729767963, 68.734704692647142], [59.058996045201383, 72.794877843698828], [57.745435344389051, 75.449213006978539], [64.93492765575499, 80.805649473144967],
[59.90860812570142, 82.468215032366061], [60.656112778776873, 68.968996520593123], [57.545538650434395, 73.029169671644809], [56.231977949622063, 75.683504834924292],
[63.421470260988002, 81.039941301090835], [61.422065520468408, 82.233923204420421], [59.0723881878383, 69.777825095129515], [61.486287718935813, 73.837998246180973],
[62.799848419748145, 76.492333409460684], [55.610356108382206, 81.848769875626999], [49.883401686257542, 81.425094629884256], [59.468916655554352, 67.364298434866157],
[49.457102358747392, 67.381440082119184], [50.770663059559723, 70.035775245398895], [43.581170748193784, 75.39221171156521], [47.514454116243556, 81.897611528007815],
[54.692502136879142, 64.117246184170369], [45.355112786426673, 68.177419335222055], [46.668673487239232, 67.127024437697798], [45.748971840204618, 72.108322158970054],
[51.475926262329509, 78.613721975412659], [47.843894416891828, 63.434627451836832], [50.224282887023733, 65.513403513357559], [48.910722186211629, 68.167738676637043],
[56.100214497577568, 69.407469035206191], [61.827168919702231, 75.912868851648795], [49.794998872208467, 63.680659950289225], [59.806813169015427, 67.740833101340911],
[58.493252468203096, 67.563610671578488], [61.344311744412394, 71.598061321290174], [55.832450549015419, 78.103461137733007], [56.252879268922939, 64.844137581795167],
[60.762362958251757, 65.693923112906475], [62.075923659063861, 68.348258276185959], [56.845540347981768, 69.514314030956371], [60.831802681417201, 76.019713847398975],
[59.513305357913865, 67.313140050960271], [60.891652992573398, 67.146095188716004], [61.199083758137675, 69.800430351995715], [59.528416030051488, 75.15686681816203],
[65.255370452176379, 81.662266634604634], [56.755340584613137, 68.350709489080089], [57.851524394896131, 69.404187282975613], [59.165085095708463, 72.058522446255097],
[63.101323175941246, 77.414958912421639], [61.742212605515391, 83.920358728864244], [60.46566380481292, 67.094767107715484], [65.155845000490075, 71.154940258767169],
[63.842284299677743, 73.809275422046653], [59.538713592537619, 79.165711888213195], [53.811759170412955, 84.10815261729806], [61.019085163593758, 69.111367814980326],
[59.539590743180355, 73.171540966032012], [60.853151443992687, 75.825876129311496], [53.663659132626748, 81.182312595478265], [47.936704710502084, 82.091551910033218],
[61.789043745989915, 71.014923668091456], [54.674145892434325, 75.075096819143369], [55.987706593246656, 77.729431982422852], [48.798214281880718, 83.085868448589395],
[48.121640480828944, 80.187996056922088], [56.678274101447158, 69.59142914724805], [50.252678538604385, 73.651602298299736], [51.566239239416717, 76.305937461579219],
[48.643203555507114, 81.662373927745762], [44.607277629406795, 81.611490577765494], [54.303834394941731, 58.180895973608642], [52.627118245110267, None],
[53.940678945922372, None], [46.751186634556433, None], [47.113542363600516, None], None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],
}
def get_adjust_cmda_odelay(): def get_adjust_cmda_odelay():
return { return {
'cmda_odly_period':-1, 'cmda_odly_period':-1,
......
This diff is collapsed.
...@@ -2345,13 +2345,13 @@ class X393McntrlAdjust(object): ...@@ -2345,13 +2345,13 @@ class X393McntrlAdjust(object):
Debug feature - load hard-coded previously acquired/processed data Debug feature - load hard-coded previously acquired/processed data
to reduce debugging time for nest stages to reduce debugging time for nest stages
""" """
self.adjustment_state["dqi_dqsi"]= get_test_dq_dqs_data.get_dqi_dqsi() self.adjustment_state["dqi_dqsi"]= get_test_dq_dqs_data.get_dqi_dqsi()
self.adjustment_state["dqi_dqsi_parameters"]=get_test_dq_dqs_data.get_dqi_dqsi_parameters() self.adjustment_state["maxErrDqs"]= get_test_dq_dqs_data.get_maxErrDqs()
self.adjustment_state["dqi_dqsi_parameters"]= get_test_dq_dqs_data.get_dqi_dqsi_parameters()
self.adjustment_state.update(get_test_dq_dqs_data.get_adjust_cmda_odelay()) self.adjustment_state.update(get_test_dq_dqs_data.get_adjust_cmda_odelay())
self.adjustment_state.update(get_test_dq_dqs_data.get_wlev_data()) self.adjustment_state.update(get_test_dq_dqs_data.get_wlev_data())
self.adjustment_state.update(get_test_dq_dqs_data.get_dqsi_phase()) self.adjustment_state.update(get_test_dq_dqs_data.get_dqsi_phase())
def proc_dqi_dqsi(self, def proc_dqi_dqsi(self,
lane="all", lane="all",
bin_size=5, bin_size=5,
...@@ -2424,7 +2424,18 @@ class X393McntrlAdjust(object): ...@@ -2424,7 +2424,18 @@ class X393McntrlAdjust(object):
for k,v in rslt.items(): for k,v in rslt.items():
print ("'%s':%s,"%(k,str(v))) print ("'%s':%s,"%(k,str(v)))
print ("}") print ("}")
self.adjustment_state["dqi_dqsi_parameters"]=rslt.pop('parameters') self.adjustment_state["dqi_dqsi_parameters"]=rslt.pop('parameters')
try:
self.adjustment_state["maxErrDqs"]=rslt.pop('maxErrDqs')
if quiet<5:
print("maxErrDqs={")
for k,v in self.adjustment_state["maxErrDqs"].items():
print ("'%s':%s,"%(k,str(v)))
print ("}")
except:
print ("maxErrDqs does not exist")
self.adjustment_state["dqi_dqsi"]=rslt self.adjustment_state["dqi_dqsi"]=rslt
return rslt return rslt
...@@ -2485,3 +2496,87 @@ class X393McntrlAdjust(object): ...@@ -2485,3 +2496,87 @@ class X393McntrlAdjust(object):
quiet=1) quiet=1)
self.adjustment_state.update(dqsi_phase) self.adjustment_state.update(dqsi_phase)
return dqsi_phase return dqsi_phase
def show_all_vs_phase(self, load_hardcoded=False):
if load_hardcoded:
self.load_hardcoded_data()
rslt_names=("early","nominal","late")
DQvDQS=self.adjustment_state["dqi_dqsi"]
cmda_bspe=self.adjustment_state['cmda_bspe']
dqsi_phase=self.adjustment_state['dqsi_phase']
wlev_dqs_bspe=self.adjustment_state['wlev_dqs_bspe']
numBits=0
for n in DQvDQS:
try:
for d in DQvDQS[n]:
try:
numBits=len(d)
break
except:
pass
break
except:
pass
if not numBits:
raise Exception("showENLresults(): No no-None data provided")
numLanes=numBits//8
enl_list=[]
for k in rslt_names:
if DQvDQS[k]:
enl_list.append(k)
timing=self.x393_mcntrl_timing.get_dly_steps()
numPhaseSteps= int(timing['SDCLK_PERIOD']/timing['PHASE_STEP']+0.5)
print("Phase CMDA",end=" ")
for lane in range(numLanes):
print("DQS%di"%(lane),end=" ")
for k in enl_list:
for b in range(numBits):
print("%s-DQ%di"%(k.upper()[0], b),end=" ")
for lane in range(numLanes):
print("DQS%d0"%(lane),end=" ")
#TODO: add DQ%do
print()
for phase in range(numPhaseSteps):
print("%d"%(phase),end=" ")
#CMDA_ODEALY
if not cmda_bspe[phase]['ldly'] is None:
print("%d"%(cmda_bspe[phase]['ldly']),end=" ")
else:
print ("?",end=" ")
#DQS_IDEALY
# print ('\n\ndqsi_phase=',dqsi_phase)
for lane in range(numLanes):
if not dqsi_phase[lane][phase] is None:
print("%d"%(dqsi_phase[lane][phase]),end=" ")
else:
print ("?",end=" ")
#DQ_IDEALY, with half/clock variants
for k in enl_list:
for b in range(numBits):
lane=b//8
dqs_dly=dqsi_phase[lane][phase]
valid = not dqs_dly is None
valid = valid and not DQvDQS[k] is None
valid = valid and not DQvDQS[k][dqs_dly] is None
valid = valid and not DQvDQS[k][dqs_dly][b] is None
if valid:
print("%d"%(DQvDQS[k][dqs_dly][b]),end=" ")
else:
print ("?",end=" ")
#DQS_ODEALY
for lane in range(numLanes):
if (not wlev_dqs_bspe[lane][phase] is None) and (not wlev_dqs_bspe[lane][phase]['ldly'] is None):
print("%d"%(wlev_dqs_bspe[lane][phase]['ldly']),end=" ")
else:
print ("?",end=" ")
print()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment