Fixed modelsim include references
This commit is contained in:
parent
8f5a684b10
commit
890ead91b9
|
@ -11,27 +11,17 @@ set simtime ${SIMTIME}
|
||||||
set unit ${UNIT}
|
set unit ${UNIT}
|
||||||
|
|
||||||
#Path were both tcl script are located
|
#Path were both tcl script are located
|
||||||
set verilog_path ${VERILOG_PATH}
|
|
||||||
set project_path "${MODELSIM_PROJ_DIR}/msim_projects/"
|
set project_path "${MODELSIM_PROJ_DIR}/msim_projects/"
|
||||||
|
|
||||||
#Path were the verilog files are located
|
#Path were the verilog files are located
|
||||||
set verilog_path ${VERILOG_PATH}
|
set verilog_files ${VERILOG_PATH}/*_include_netlists_resolved.v
|
||||||
|
|
||||||
set verilog_files [list \
|
|
||||||
${VERILOG_PATH}${VERILOG_FILE1} \
|
|
||||||
${VERILOG_PATH}${VERILOG_FILE2} \
|
|
||||||
${VERILOG_PATH}fpga_defines.v
|
|
||||||
]
|
|
||||||
|
|
||||||
#Source the tcl script
|
#Source the tcl script
|
||||||
source ${MODELSIM_PROJ_DIR}/${BENCHMARK}_autocheck_proc.tcl
|
source ${MODELSIM_PROJ_DIR}/${BENCHMARK}_autocheck_proc.tcl
|
||||||
|
|
||||||
#Execute the top level procedure
|
#Execute the top level procedure
|
||||||
|
|
||||||
try {
|
try {
|
||||||
top_create_new_project $$projectname $$verilog_files $$project_path $$simtime $$unit $$top_tb
|
top_create_new_project $$projectname $$verilog_files $$project_path $$simtime $$unit $$top_tb
|
||||||
} finally {
|
} finally {
|
||||||
quit
|
quit
|
||||||
}
|
}
|
||||||
|
|
||||||
#Relaunch simulation
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ def main():
|
||||||
logfile_path = os.path.join(gc["task_dir"],
|
logfile_path = os.path.join(gc["task_dir"],
|
||||||
taskname, task_run, "modelsim_run.log")
|
taskname, task_run, "modelsim_run.log")
|
||||||
resultfile_path = os.path.join(gc["task_dir"],
|
resultfile_path = os.path.join(gc["task_dir"],
|
||||||
taskname, task_run, "modelsim_result.csv")
|
taskname, task_run, "modelsim_result.csv")
|
||||||
logfilefh = logging.FileHandler(logfile_path, "w")
|
logfilefh = logging.FileHandler(logfile_path, "w")
|
||||||
logfilefh.setFormatter(logging.Formatter(FILE_LOG_FORMAT))
|
logfilefh.setFormatter(logging.Formatter(FILE_LOG_FORMAT))
|
||||||
logger.addHandler(logfilefh)
|
logger.addHandler(logfilefh)
|
||||||
|
@ -129,7 +129,8 @@ def main():
|
||||||
task_ini_files.append(INIfile)
|
task_ini_files.append(INIfile)
|
||||||
logger.info(f"Found {len(task_ini_files)} INI files")
|
logger.info(f"Found {len(task_ini_files)} INI files")
|
||||||
results = create_tcl_script(task_ini_files)
|
results = create_tcl_script(task_ini_files)
|
||||||
collect_result(resultfile_path, results)
|
if args.run_sim:
|
||||||
|
collect_result(resultfile_path, results)
|
||||||
|
|
||||||
|
|
||||||
def clean_up_and_exit(msg):
|
def clean_up_and_exit(msg):
|
||||||
|
@ -168,7 +169,21 @@ def create_tcl_script(files):
|
||||||
|
|
||||||
config["MODELSIM_PROJ_NAME"] = args.modelsim_proj_name
|
config["MODELSIM_PROJ_NAME"] = args.modelsim_proj_name
|
||||||
config["MODELSIM_INI"] = args.modelsim_ini
|
config["MODELSIM_INI"] = args.modelsim_ini
|
||||||
|
config["VERILOG_PATH"] = os.path.join(
|
||||||
|
os.getcwd(), config["VERILOG_PATH"])
|
||||||
|
IncludeFile = os.path.join(
|
||||||
|
os.getcwd(),
|
||||||
|
config["VERILOG_PATH"],
|
||||||
|
config["VERILOG_FILE2"])
|
||||||
|
IncludeFileResolved = os.path.join(
|
||||||
|
os.getcwd(),
|
||||||
|
config["VERILOG_PATH"],
|
||||||
|
config["VERILOG_FILE2"].replace(".v", "_resolved.v"))
|
||||||
|
with open(IncludeFileResolved, "w") as fpw:
|
||||||
|
with open(IncludeFile, "r") as fp:
|
||||||
|
for eachline in fp.readlines():
|
||||||
|
eachline = eachline.replace("./SRC", "../../../SRC/")
|
||||||
|
fpw.write(eachline)
|
||||||
# Modify the variables in config file here
|
# Modify the variables in config file here
|
||||||
config["TOP_TB"] = os.path.splitext(config["TOP_TB"])[0]
|
config["TOP_TB"] = os.path.splitext(config["TOP_TB"])[0]
|
||||||
|
|
||||||
|
@ -193,13 +208,13 @@ def create_tcl_script(files):
|
||||||
"ini_file": eachFile,
|
"ini_file": eachFile,
|
||||||
"modelsim_run_dir": args.modelsim_run_dir,
|
"modelsim_run_dir": args.modelsim_run_dir,
|
||||||
"runsim_filename": runsim_filename,
|
"runsim_filename": runsim_filename,
|
||||||
"run_complete" :False,
|
"run_complete": False,
|
||||||
"status": False,
|
"status": False,
|
||||||
"finished" : True,
|
"finished": True,
|
||||||
"starttime" : 0,
|
"starttime": 0,
|
||||||
"endtime" : 0,
|
"endtime": 0,
|
||||||
"Errors": 0,
|
"Errors": 0,
|
||||||
"Warnings" : 0
|
"Warnings": 0
|
||||||
})
|
})
|
||||||
# Execute modelsim
|
# Execute modelsim
|
||||||
if args.run_sim:
|
if args.run_sim:
|
||||||
|
@ -229,7 +244,7 @@ def run_modelsim_thread(s, eachJob, job_list):
|
||||||
thread_name = threading.currentThread().getName()
|
thread_name = threading.currentThread().getName()
|
||||||
eachJob["starttime"] = time.time()
|
eachJob["starttime"] = time.time()
|
||||||
eachJob["Errors"] = 0
|
eachJob["Errors"] = 0
|
||||||
eachJob["Warnings"]= 0
|
eachJob["Warnings"] = 0
|
||||||
try:
|
try:
|
||||||
logfile = "%s_modelsim.log" % thread_name
|
logfile = "%s_modelsim.log" % thread_name
|
||||||
eachJob["logfile"] = "<task_dir>" + \
|
eachJob["logfile"] = "<task_dir>" + \
|
||||||
|
@ -248,7 +263,8 @@ def run_modelsim_thread(s, eachJob, job_list):
|
||||||
for line in process.stdout:
|
for line in process.stdout:
|
||||||
if "Errors" in line:
|
if "Errors" in line:
|
||||||
logger.info(line.strip())
|
logger.info(line.strip())
|
||||||
e,w = re.match("# .*: ([0-9].*), .*: ([0-9].*)", line).groups()
|
e, w = re.match(
|
||||||
|
"# .*: ([0-9].*), .*: ([0-9].*)", line).groups()
|
||||||
eachJob["Errors"] += int(e)
|
eachJob["Errors"] += int(e)
|
||||||
eachJob["Warnings"] += int(w)
|
eachJob["Warnings"] += int(w)
|
||||||
sys.stdout.buffer.flush()
|
sys.stdout.buffer.flush()
|
||||||
|
@ -275,8 +291,10 @@ def run_modelsim_thread(s, eachJob, job_list):
|
||||||
no_of_finished_job = sum([not eachJ["finished"] for eachJ in job_list])
|
no_of_finished_job = sum([not eachJ["finished"] for eachJ in job_list])
|
||||||
logger.info("***** %d runs pending *****" % (no_of_finished_job))
|
logger.info("***** %d runs pending *****" % (no_of_finished_job))
|
||||||
|
|
||||||
|
|
||||||
def collect_result(result_file, result_obj):
|
def collect_result(result_file, result_obj):
|
||||||
colnames = ["status", "Errors", "Warnings", "run_complete", "exectime", "finished", "logfile"]
|
colnames = ["status", "Errors", "Warnings",
|
||||||
|
"run_complete", "exectime", "finished", "logfile"]
|
||||||
if len(result_obj):
|
if len(result_obj):
|
||||||
with open(result_file, 'w', newline='') as csvfile:
|
with open(result_file, 'w', newline='') as csvfile:
|
||||||
writer = csv.DictWriter(
|
writer = csv.DictWriter(
|
||||||
|
@ -285,11 +303,12 @@ def collect_result(result_file, result_obj):
|
||||||
for eachResult in result_obj:
|
for eachResult in result_obj:
|
||||||
writer.writerow(eachResult)
|
writer.writerow(eachResult)
|
||||||
logger.info("= = = ="*10)
|
logger.info("= = = ="*10)
|
||||||
passed_jobs = [ each["status"] for each in result_obj ]
|
passed_jobs = [each["status"] for each in result_obj]
|
||||||
logger.info(f"Passed Jobs %d/%d", len(passed_jobs), len(result_obj))
|
logger.info(f"Passed Jobs %d/%d", len(passed_jobs), len(result_obj))
|
||||||
logger.info(f"Result file stored at {result_file}")
|
logger.info(f"Result file stored at {result_file}")
|
||||||
logger.info("= = = ="*10)
|
logger.info("= = = ="*10)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if args.debug:
|
if args.debug:
|
||||||
logger.info("Setting loggger in debug mode")
|
logger.info("Setting loggger in debug mode")
|
||||||
|
|
Loading…
Reference in New Issue