Source code for hwtBuildsystem.vivado.report

from hwtBuildsystem.vivado.logParser.synthesis import VivadoSynthesisLogParser
import os


[docs] class VivadoReport(): """ This class is output from hardware synthesis made by vivado All attributes are filenames """ def __init__(self, projectRoot:str, projectName:str, topName:str): self.projectRoot = projectRoot self.projectName = projectName self.topName = topName # synth self.utilizationSynth = None # impl self.dcrOpted = None self.ioPlaced = None self.dcrRouted = None self.powerRouted = None self.routeStatus = None self.utilizationPlaced = None self.controlSetsPlaced = None self.timingSummaryRouted = None self.clokUtilizationRouted = None self.bitstreamFile = None
[docs] def setSynthFileNames(self, runName="synth_1"): self.utilizationSynth = os.path.join( self.projectRoot, self.projectName + ".runs", runName, self.topName + "_utilization_synth.rpt")
[docs] def setImplFileNames(self, runName="impl_1"): impl = os.path.join(self.projectRoot, self.projectName + ".runs", runName) implP = lambda n: os.path.join(impl, self.topName + "_" + n + ".rpt") # collect report files self.dcrOpted = implP("drc_opted") self.ioPlaced = implP("io_placed") self.dcrRouted = implP("drc_routed") self.powerRouted = implP("power_routed") self.routeStatus = implP("route_status") self.utilizationPlaced = implP("utilization_placed") self.controlSetsPlaced = implP("control_sets_placed") self.timingSummaryRouted = implP("timing_summary_routed") self.clokUtilizationRouted = implP("clock_utilization_routed")
[docs] def setBitstreamFileName(self, runName="impl_1"): impl = os.path.join(self.projectRoot, self.projectName + ".runs", runName) self.bitstreamFile = os.path.join(impl, self.topName + ".bit")
[docs] def parseUtilizationSynth(self): with open(self.utilizationSynth) as f: d = f.read() r = VivadoSynthesisLogParser(d) r.parse() return r