|
|
|
|
@@ -2,7 +2,7 @@ import sys
|
|
|
|
|
import traceback
|
|
|
|
|
import sqlite3
|
|
|
|
|
import os
|
|
|
|
|
import xml.etree.ElementTree as ET
|
|
|
|
|
import json
|
|
|
|
|
from memUtil import *
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -52,102 +52,102 @@ class DramConfig(object):
|
|
|
|
|
self.clk = clkWithUnit[0]
|
|
|
|
|
self.unitOfTime = clkWithUnit[1].lower()
|
|
|
|
|
|
|
|
|
|
self.bankwiseLogic = mcconfig.getValue("BankwiseLogic")
|
|
|
|
|
self.refMode = mcconfig.getValue("ControllerCoreRefMode")
|
|
|
|
|
self.bankwiseLogic = 0
|
|
|
|
|
self.refMode = 0
|
|
|
|
|
self.scheduler = mcconfig.getValue("Scheduler")
|
|
|
|
|
|
|
|
|
|
self.numberOfBanks = memspec.getIntValue("nbrOfBanks")
|
|
|
|
|
self.burstLength = memspec.getIntValue("burstLength")
|
|
|
|
|
self.numberOfBanks = memspec.getIntValue("memarchitecturespec","nbrOfBanks")
|
|
|
|
|
self.burstLength = memspec.getIntValue("memarchitecturespec","burstLength")
|
|
|
|
|
self.memoryType = memspec.getValue("memoryType")
|
|
|
|
|
self.dataRate = memspec.getIntValue("dataRate")
|
|
|
|
|
self.dataRate = memspec.getIntValue("memarchitecturespec","dataRate")
|
|
|
|
|
|
|
|
|
|
if (self.memoryType == "WIDEIO_SDR"):
|
|
|
|
|
self.nActivateWindow = 2
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("RC")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("RRD")
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("memtimingspec","RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("memtimingspec","RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("memtimingspec","RC")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("memtimingspec","RRD")
|
|
|
|
|
self.tRRD_L = self.tRRD_S
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("CCD")
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("memtimingspec","CCD")
|
|
|
|
|
self.tCCD_L = self.tCCD_S
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("TAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("WTR")
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("memtimingspec","RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("memtimingspec","TAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("memtimingspec","RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("memtimingspec","WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("memtimingspec","WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("memtimingspec","WTR")
|
|
|
|
|
self.tWTR_L = self.tWTR_S
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("RTP")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("XP")
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("memtimingspec","RTP")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("memtimingspec","CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("memtimingspec","CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("memtimingspec","XP")
|
|
|
|
|
self.tXPDLL = self.tXP
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("XS")
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("memtimingspec","XS")
|
|
|
|
|
self.tXSDLL = self.tXS
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("AL")
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("REFI")
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("memtimingspec","AL")
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("memtimingspec","RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("memtimingspec","REFI")
|
|
|
|
|
|
|
|
|
|
elif (self. memoryType == "DDR4"):
|
|
|
|
|
self.nActivateWindow = 4
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("RC")
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("RTP")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("RRD_S")
|
|
|
|
|
self.tRRD_L = self.clk * memspec.getIntValue("RRD_L")
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("CCD_S")
|
|
|
|
|
self.tCCD_L = self.clk * memspec.getIntValue("CCD_L")
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("FAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("WTR_S")
|
|
|
|
|
self.tWTR_L = self.clk * memspec.getIntValue("WTR_L")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("XP")
|
|
|
|
|
self.tXPDLL = self.clk * memspec.getIntValue("XPDLL")
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("XS")
|
|
|
|
|
self.tXSDLL = self.clk * memspec.getIntValue("XSDLL")
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("AL")
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("memtimingspec","RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("memtimingspec","RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("memtimingspec","RC")
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("memtimingspec","RTP")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("memtimingspec","RRD_S")
|
|
|
|
|
self.tRRD_L = self.clk * memspec.getIntValue("memtimingspec","RRD_L")
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("memtimingspec","CCD_S")
|
|
|
|
|
self.tCCD_L = self.clk * memspec.getIntValue("memtimingspec","CCD_L")
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("memtimingspec","RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("memtimingspec","FAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("memtimingspec","RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("memtimingspec","WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("memtimingspec","WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("memtimingspec","WTR_S")
|
|
|
|
|
self.tWTR_L = self.clk * memspec.getIntValue("memtimingspec","WTR_L")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("memtimingspec","CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("memtimingspec","CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("memtimingspec","XP")
|
|
|
|
|
self.tXPDLL = self.clk * memspec.getIntValue("memtimingspec","XPDLL")
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("memtimingspec","XS")
|
|
|
|
|
self.tXSDLL = self.clk * memspec.getIntValue("memtimingspec","XSDLL")
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("memtimingspec","AL")
|
|
|
|
|
if (self.refMode == "4"):
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("RFC4")
|
|
|
|
|
self.tREFI = self.clk * (memspec.getIntValue("REFI") / 4)
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("memtimingspec","RFC4")
|
|
|
|
|
self.tREFI = self.clk * (memspec.getIntValue("memtimingspec","REFI") / 4)
|
|
|
|
|
elif (self.refMode == "2"):
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("RFC2")
|
|
|
|
|
self.tREFI = self.clk * (memspec.getIntValue("REFI") / 2)
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("memtimingspec","RFC2")
|
|
|
|
|
self.tREFI = self.clk * (memspec.getIntValue("memtimingspec","REFI") / 2)
|
|
|
|
|
else:
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("REFI")
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("memtimingspec","RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("memtimingspec","REFI")
|
|
|
|
|
|
|
|
|
|
elif (self. memoryType == "DDR3"):
|
|
|
|
|
self.nActivateWindow = 4
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("RC")
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("RTP")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("RRD")
|
|
|
|
|
self.tRRD_L = self.clk * memspec.getIntValue("RRD")
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("CCD")
|
|
|
|
|
self.tCCD_L = self.clk * memspec.getIntValue("CCD")
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("FAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("WTR")
|
|
|
|
|
self.tWTR_L = self.clk * memspec.getIntValue("WTR")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("XP")
|
|
|
|
|
self.tXPDLL = self.clk * memspec.getIntValue("XPDLL")
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("XS")
|
|
|
|
|
self.tXSDLL = self.clk * memspec.getIntValue("XSDLL")
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("AL")
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("REFI")
|
|
|
|
|
self.tRP = self.clk * memspec.getIntValue("memtimingspec","RP")
|
|
|
|
|
self.tRAS = self.clk * memspec.getIntValue("memtimingspec","RAS")
|
|
|
|
|
self.tRC = self.clk * memspec.getIntValue("memtimingspec","RC")
|
|
|
|
|
self.tRTP = self.clk * memspec.getIntValue("memtimingspec","RTP")
|
|
|
|
|
self.tRRD_S = self.clk * memspec.getIntValue("memtimingspec","RRD")
|
|
|
|
|
self.tRRD_L = self.clk * memspec.getIntValue("memtimingspec","RRD")
|
|
|
|
|
self.tCCD_S = self.clk * memspec.getIntValue("memtimingspec","CCD")
|
|
|
|
|
self.tCCD_L = self.clk * memspec.getIntValue("memtimingspec","CCD")
|
|
|
|
|
self.tRCD = self.clk * memspec.getIntValue("memtimingspec","RCD")
|
|
|
|
|
self.tNAW = self.clk * memspec.getIntValue("memtimingspec","FAW")
|
|
|
|
|
self.tRL = self.clk * memspec.getIntValue("memtimingspec","RL")
|
|
|
|
|
self.tWL = self.clk * memspec.getIntValue("memtimingspec","WL")
|
|
|
|
|
self.tWR = self.clk * memspec.getIntValue("memtimingspec","WR")
|
|
|
|
|
self.tWTR_S = self.clk * memspec.getIntValue("memtimingspec","WTR")
|
|
|
|
|
self.tWTR_L = self.clk * memspec.getIntValue("memtimingspec","WTR")
|
|
|
|
|
self.tCKESR = self.clk * memspec.getIntValue("memtimingspec","CKESR")
|
|
|
|
|
self.tCKE = self.clk * memspec.getIntValue("memtimingspec","CKE")
|
|
|
|
|
self.tXP = self.clk * memspec.getIntValue("memtimingspec","XP")
|
|
|
|
|
self.tXPDLL = self.clk * memspec.getIntValue("memtimingspec","XPDLL")
|
|
|
|
|
self.tXS = self.clk * memspec.getIntValue("memtimingspec","XS")
|
|
|
|
|
self.tXSDLL = self.clk * memspec.getIntValue("memtimingspec","XSDLL")
|
|
|
|
|
self.tAL = self.clk * memspec.getIntValue("memtimingspec","AL")
|
|
|
|
|
self.tRFC = self.clk * memspec.getIntValue("memtimingspec","RFC")
|
|
|
|
|
self.tREFI = self.clk * memspec.getIntValue("memtimingspec","REFI")
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
raise Exception("MemoryType not supported yet. Insert a coin into the coin machine and try again")
|
|
|
|
|
|