More improvements
This commit is contained in:
@@ -277,16 +277,22 @@ def phase_transitions_are_valid(connection):
|
||||
validTransitions['PDNP'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
|
||||
validTransitions['SREF'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
|
||||
|
||||
# This was the original query:
|
||||
# query = """SELECT PhaseName, phases.ID FROM phases INNER JOIN transactions ON phases.transact=transactions.ID WHERE TBank=:bank AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
# However, refreshes, pre_all and self-refreshes are attributed to Bank 0 therefore this must be added to the order evaluation:
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
((TBank=:bank) OR (PhaseNAME = "REFA" AND TBank=0) OR (PhaseNAME = "PRE_ALL" AND TBank=0) OR (PhaseNAME = "SREF" AND TBank=0))
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
if dramconfig.bankwiseLogic:
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
(TBank=:bank) AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
else:
|
||||
# REFA, PRE_ALL, PDNA, PDNP and SREF are attributed to Bank 0 therefore this must be added to the order evaluation:
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
((TBank=:bank) OR PhaseName IN ('PRE_ALL', 'SREF', 'PDNP, 'PDNA', 'REFA'))
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
|
||||
for bankNumber in range(dramconfig.numberOfBanks):
|
||||
cursor.execute(query, {"bank": bankNumber})
|
||||
@@ -346,11 +352,11 @@ def timing_constraint(FirstPhase, SecondPhase):
|
||||
return dramconfig.tRFC
|
||||
|
||||
elif (FirstPhaseName in ["PDNA", "PDNP"]):
|
||||
print("{0}".format(FirstPhaseName))
|
||||
print("{0}".format(formatTime(FirstPhase[3])))
|
||||
print("{0}".format(formatTime(FirstPhase[2])))
|
||||
print("{0}".format(formatTime(dramconfig.tXP)))
|
||||
print("{0}".format(formatTime(dramconfig.clk)))
|
||||
# print("{0}".format(FirstPhaseName))
|
||||
# print("{0}".format(formatTime(FirstPhase[3])))
|
||||
# print("{0}".format(formatTime(FirstPhase[2])))
|
||||
# print("{0}".format(formatTime(dramconfig.tXP)))
|
||||
# print("{0}".format(formatTime(dramconfig.clk)))
|
||||
return (FirstPhase[3] - FirstPhase[2]) + dramconfig.tXP - dramconfig.clk
|
||||
|
||||
elif (FirstPhaseName == "SREF"):
|
||||
@@ -365,13 +371,13 @@ def timing_constraits_on_the_same_bank_hold(connection):
|
||||
cursor = connection.cursor()
|
||||
validTransitions = {}
|
||||
|
||||
if dramconfig.bankwiseLogic:
|
||||
query = """SELECT PhaseName, phases.ID, PhaseBegin, PhaseEnd FROM phases INNER JOIN transactions ON phases.transact=transactions.ID WHERE TBank=:bank
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
else:
|
||||
query = """SELECT PhaseName, phases.ID, PhaseBegin, PhaseEnd FROM phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE (TBank=:bank OR PhaseName IN ('PRE_ALL', 'SREF', 'PDNP, 'PDNA', 'REFA')) AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
|
||||
if dramconfig.bankwiseLogic:
|
||||
query = """SELECT PhaseName, phases.ID, PhaseBegin, PhaseEnd FROM phases INNER JOIN transactions ON phases.transact=transactions.ID WHERE TBank=:bank
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
else:
|
||||
query = """SELECT PhaseName, phases.ID, PhaseBegin, PhaseEnd FROM phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE (TBank=:bank OR PhaseName IN ('PRE_ALL', 'SREF', 'PDNP, 'PDNA', 'REFA')) AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
for bankNumber in range(dramconfig.numberOfBanks):
|
||||
cursor.execute(query, {"bank": bankNumber})
|
||||
lastRow = cursor.fetchone()
|
||||
@@ -391,15 +397,24 @@ def row_buffer_is_used_correctly(connection):
|
||||
|
||||
cursor = connection.cursor()
|
||||
|
||||
# REFA and PRE_ALL are stored to bank0 for all the other banks we have also to grep this commands:
|
||||
# (PhaseNAME = "REFA" AND TBank=0) OR (PhaseNAME = "PRE_ALL" AND TBank=0))
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
((TBank=:bank) OR (PhaseNAME = "REFA" AND TBank=0) OR (PhaseNAME = "PRE_ALL" AND TBank=0))
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
if dramconfig.bankwiseLogic:
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
((TBank=:bank) OR (PhaseNAME = "REFA" AND TBank=0) OR (PhaseNAME = "PRE_ALL" AND TBank=0))
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
else:
|
||||
# REFA, PRE_ALL, PDNA, PDNP and SREF are stored to bank0 for all the other banks we have also to grep this command:
|
||||
# PhaseName IN ('PRE_ALL', 'SREF', 'PDNP, 'PDNA', 'REFA')
|
||||
query = """SELECT
|
||||
PhaseName, phases.ID
|
||||
FROM
|
||||
phases INNER JOIN transactions ON phases.transact=transactions.ID
|
||||
WHERE
|
||||
((TBank=:bank) OR PhaseName IN ('PRE_ALL', 'SREF', 'PDNP, 'PDNA', 'REFA'))
|
||||
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
|
||||
|
||||
# phases that precharge the bank and close the rowbuffer
|
||||
prechargingPhases = set(['PRE', 'PRE_ALL', 'RDA', 'WRA'])
|
||||
@@ -440,7 +455,7 @@ def no_commands_during_refresh(connection):
|
||||
test_query = """SELECT PhaseName FROM phases INNER JOIN transactions ON phases.transact=transactions.ID WHERE ((PhaseBegin >= ? and PhaseEnd <= ?) or (PhaseBegin <= ? and PhaseEnd > ?) or (PhaseBegin < ? and PhaseEnd >= ?)) and PhaseName NOT IN ('REQ','RESP','REFB') and TBank = ?"""
|
||||
else:
|
||||
query = """SELECT PhaseBegin, PhaseEnd FROM phases WHERE PhaseName = 'REFA' """
|
||||
test_query = """SELECT PhaseName FROM phases WHERE ((PhaseBegin >= ? and PhaseEnd <= ?) or (PhaseBegin <= ? and PhaseEnd > ?) or (PhaseBegin < ? and PhaseEnd >= ?)) and PhaseName NOT IN ('REQ','RESP', 'REFA')"""
|
||||
test_query = """SELECT PhaseName FROM phases WHERE ((PhaseBegin >= ? and PhaseEnd <= ?) or (PhaseBegin <= ? and PhaseEnd > ?) or (PhaseBegin < ? and PhaseEnd >= ?)) and PhaseName NOT IN ('REQ', 'RESP', 'REFA')"""
|
||||
|
||||
cursor.execute(query);
|
||||
result = cursor.fetchall();
|
||||
|
||||
Reference in New Issue
Block a user