Some phase renaming in TraceAnalyzer.

This commit is contained in:
Lukas Steiner (2)
2019-08-20 14:56:45 +02:00
parent 4881b8ae76
commit 1fc5f3bf88
4 changed files with 36 additions and 36 deletions

View File

@@ -68,7 +68,7 @@ shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
else if (dbPhaseName == "ACT")
return shared_ptr<Phase>(new ACT(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
std::shared_ptr<Timespan>()));
else if (dbPhaseName == "PRE_ALL")
else if (dbPhaseName == "PREA")
return shared_ptr<Phase>(new PRECHARGE_ALL(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
std::shared_ptr<Timespan>()));
else if (dbPhaseName == "REFA")

View File

@@ -164,7 +164,7 @@ shared_ptr<Transaction> TraceDB::getNextPrecharge(ID currentTransactionId)
{
QSqlQuery query(database);
QString queryText = queryTexts.queryHead +
"WHERE TransactionID > :currentID AND PhaseName IN ('PRE','PRE_ALL') LIMIT 1";
"WHERE TransactionID > :currentID AND PhaseName IN ('PRE','PREA') LIMIT 1";
query.prepare(queryText);
query.bindValue(":currentID", currentTransactionId);

View File

@@ -239,8 +239,8 @@ def ACT_count(connection):
@metric
def PRE_ALL_count(connection):
return get_phase_occurrences(connection, 'PRE_ALL')
def PREA_count(connection):
return get_phase_occurrences(connection, 'PREA')
@metric
@@ -327,17 +327,17 @@ def bank_overlap_ratio(connection):
cursor.execute("""
select p1.PhaseBegin, p1.PhaseName from Phases p1
where
(p1.PhaseName = "ACT" or p1.PhaseName = "PRE_ALL" or p1.PhaseName = "PRE" or p1.PhaseName = "RDA" or p1.PhaseName = "WRA" or p1.PhaseName = "PREB" or p1.PhaseName = "ACTB")
(p1.PhaseName = "ACT" or p1.PhaseName = "PREA" or p1.PhaseName = "PRE" or p1.PhaseName = "RDA" or p1.PhaseName = "WRA" or p1.PhaseName = "PREB" or p1.PhaseName = "ACTB")
order by PhaseBegin
""")
prevPhase = "PRE_ALL"
prevPhase = "PREA"
prevTime = 0
for c in cursor:
trace.append([(int(c[0]/clk)), c[1]])
# Insert a pseudo precharge all to mark the end of the trace
trace.append([traceEnd, "PRE_ALL"])
trace.append([traceEnd, "PREA"])
bankCounter = 0
bankTime = []
@@ -362,7 +362,7 @@ def bank_overlap_ratio(connection):
print("Unexpected ACT. bankCounter was {0} valid range is python range {1}".format(bankCounter, validBankRange))
elif t[1] == "ACTB":
actbCnt += 1
elif(t[1] == "PRE_ALL"):
elif(t[1] == "PREA"):
bankCounter = 0
elif(t[1] == "PRE"):
if (bankCounter > 0):
@@ -403,7 +403,7 @@ def bank_overlap_ratio(connection):
# @metric
# def number_of_precharges(connection):
# cursor = connection.cursor()
# cursor.execute("SELECT COUNT(*) FROM Phases WHERE PhaseName IN ('PRE','PRE_ALL','RDA','WRA')")
# cursor.execute("SELECT COUNT(*) FROM Phases WHERE PhaseName IN ('PRE','PREA','RDA','WRA')")
# result = cursor.fetchone()
# return result[0]

View File

@@ -233,9 +233,9 @@ def commandbus_slots_are_used_once(connection):
cursor = connection.cursor()
if (dramconfig.bankwiseLogic == "1"):
excludedPhases = "('REQ','RESP','PRE_ALL')"
excludedPhases = "('REQ','RESP','PREA')"
else:
excludedPhases = "('REQ','RESP','PRE_ALL','PDNA','PDNP','SREF','REFA')"
excludedPhases = "('REQ','RESP','PREA','PDNA','PDNP','SREF','REFA')"
query = """SELECT PhaseBegin,count FROM (SELECT phaseBegin,count(phasebegin) AS count
FROM Phases WHERE PhaseName NOT IN """ + excludedPhases + """ AND phasebegin>0 GROUP BY phaseBegin) WHERE count>1"""
@@ -258,7 +258,7 @@ def phase_transitions_are_valid(connection):
if (dramconfig.bankwiseLogic == "1"):
validTransitions['PRE'] = set(['ACT', 'REFB', 'SREFB'])
validTransitions['ACT'] = set(['RD', 'RDA', 'WR', 'WRA', 'PRE', 'PRE_ALL'])
validTransitions['ACT'] = set(['RD', 'RDA', 'WR', 'WRA', 'PRE', 'PREA'])
validTransitions['RD'] = set(['PRE', 'RD', 'RDA', 'WR', 'WRA', 'PDNAB'])
validTransitions['WR'] = set(['PRE', 'RD', 'RDA', 'WR', 'WRA', 'PDNAB'])
@@ -271,20 +271,20 @@ def phase_transitions_are_valid(connection):
validTransitions['PDNPB'] = set(['ACT', 'REFB', 'SREFB'])
validTransitions['SREFB'] = set(['ACT', 'REFB'])
else:
validTransitions['PRE'] = set(['ACT', 'PRE_ALL', 'REFA'])
validTransitions['PRE_ALL'] = set(['REFA', 'SREF'])
validTransitions['ACT'] = set(['RD', 'RDA', 'WR', 'WRA', 'PRE_ALL'])
validTransitions['PRE'] = set(['ACT', 'PREA', 'REFA'])
validTransitions['PREA'] = set(['REFA', 'SREF'])
validTransitions['ACT'] = set(['RD', 'RDA', 'WR', 'WRA', 'PREA'])
validTransitions['RD'] = set(['PRE', 'PRE_ALL', 'RD', 'RDA', 'WR', 'WRA', 'PDNA'])
validTransitions['WR'] = set(['PRE', 'PRE_ALL', 'RD', 'RDA', 'WR', 'WRA', 'PDNA'])
validTransitions['RDA'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['WRA'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['RD'] = set(['PRE', 'PREA', 'RD', 'RDA', 'WR', 'WRA', 'PDNA'])
validTransitions['WR'] = set(['PRE', 'PREA', 'RD', 'RDA', 'WR', 'WRA', 'PDNA'])
validTransitions['RDA'] = set(['PREA', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['WRA'] = set(['PREA', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['REFA'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['REFA'] = set(['PREA', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['PDNA'] = set(['PRE', 'PRE_ALL', 'ACT', 'RD', 'RDA', 'WR', 'WRA', 'REFA', 'PDNA', 'PDNP'])
validTransitions['PDNP'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['SREF'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['PDNA'] = set(['PRE', 'PREA', 'ACT', 'RD', 'RDA', 'WR', 'WRA', 'REFA', 'PDNA', 'PDNP'])
validTransitions['PDNP'] = set(['PREA', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['SREF'] = set(['PREA', 'ACT', 'REFA', 'PDNA', 'PDNP'])
if (dramconfig.bankwiseLogic == "1"):
query = """SELECT
@@ -294,13 +294,13 @@ def phase_transitions_are_valid(connection):
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:
# REFA, PREA, 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'))
((TBank=:bank) OR PhaseName IN ('PREA', 'SREF', 'PDNP', 'PDNA', 'REFA'))
AND PhaseName NOT IN ('REQ','RESP') ORDER BY PhaseBegin"""
for bankNumber in range(dramconfig.numberOfBanks):
@@ -321,14 +321,14 @@ def timing_constraint(FirstPhase, SecondPhase):
FirstPhaseName = FirstPhase[0]
SecondPhaseName = SecondPhase[0]
if ((FirstPhaseName == "PRE" or FirstPhaseName == "PRE_ALL") and SecondPhaseName != "PRE_ALL"):
if ((FirstPhaseName == "PRE" or FirstPhaseName == "PREA") and SecondPhaseName != "PREA"):
return dramconfig.tRP
elif (FirstPhaseName == "ACT"):
return dramconfig.tRCD
elif (FirstPhaseName == "RD"):
if (SecondPhaseName in ["PRE, PRE_ALL"]):
if (SecondPhaseName in ["PRE, PREA"]):
return dramconfig.tRTP
elif (SecondPhaseName in ["RD, RDA"]):
return max(dramconfig.tCCD_L, getReadAccessTime())
@@ -338,7 +338,7 @@ def timing_constraint(FirstPhase, SecondPhase):
return dramconfig.tRL + getReadAccessTime() + dramconfig.clk
elif (FirstPhaseName == "WR"):
if (SecondPhaseName in ["PRE, PRE_ALL", "PDNA"]):
if (SecondPhaseName in ["PRE, PREA", "PDNA"]):
return dramconfig.tWL + dramconfig.getWriteAccessTime() + dramconfig.tWR
elif (SecondPhaseName in ["RD, RDA"]):
return dramconfig.tWL + dramconfig.getWriteAccessTime() + dramconfig.tWTR_L
@@ -346,13 +346,13 @@ def timing_constraint(FirstPhase, SecondPhase):
return max(dramconfig.tCCD_L, burstlength/dramconfig.dataRate)
elif (FirstPhaseName == "RDA"):
if (SecondPhaseName in ["ACT", "PRE_ALL", "REFA"]):
if (SecondPhaseName in ["ACT", "PREA", "REFA"]):
return dramconfig.tRTP + dramconfig.tRP
elif (SecondPhaseName in ["PDNA", "PDNP"]):
return dramconfig.tRL + getReadAccessTime() + dramconfig.clk
elif (FirstPhaseName == "WRA"):
if (SecondPhaseName in ["ACT", "PRE_ALL", "REFA"]):
if (SecondPhaseName in ["ACT", "PREA", "REFA"]):
return dramconfig.tWL + getWriteAccessTime() + dramconfig.tWR + dramconfig.tRP
elif (SecondPhaseName in ["PDNA", "PDNP"]):
return dramconfig.tWL + dramconfig.getWriteAccessTime() + dramconfig.tWR + dramconfig.clk
@@ -390,7 +390,7 @@ def timing_constraits_on_the_same_bank_hold(connection):
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"""
WHERE ((TBank=:bank) OR PhaseName IN ('PREA', '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()
@@ -416,21 +416,21 @@ def row_buffer_is_used_correctly(connection):
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))
((TBank=:bank) OR (PhaseNAME = "REFA" AND TBank=0) OR (PhaseNAME = "PREA" 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')
# REFA, PREA, PDNA, PDNP and SREF are stored to bank0 for all the other banks we have also to grep this command:
# PhaseName IN ('PREA', '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'))
((TBank=:bank) OR PhaseName IN ('PREA', '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'])
prechargingPhases = set(['PRE', 'PREA', 'RDA', 'WRA'])
# phases that require the bank to be in active state and the rowbuffer to be opened
accessingPhases = set(['RD', 'RDA', 'WR', 'WRA', 'PRE'])