[Flow] Extended yosys variable subtitution
This commit is contained in:
parent
e6d1ac4a58
commit
67cd9a69b7
|
@ -99,6 +99,8 @@ parser.add_argument('--arch_variable_file', type=str, default=None,
|
||||||
# help="Key file for shell")
|
# help="Key file for shell")
|
||||||
parser.add_argument('--yosys_tmpl', type=str, default=None,
|
parser.add_argument('--yosys_tmpl', type=str, default=None,
|
||||||
help="Alternate yosys template, generates top_module.blif")
|
help="Alternate yosys template, generates top_module.blif")
|
||||||
|
parser.add_argument('--ys_rewrite_tmpl', type=str, default=None,
|
||||||
|
help="Alternate yosys template, to rewrite verilog netlist")
|
||||||
parser.add_argument('--disp', action="store_true",
|
parser.add_argument('--disp', action="store_true",
|
||||||
help="Open display while running VPR")
|
help="Open display while running VPR")
|
||||||
parser.add_argument('--debug', action="store_true",
|
parser.add_argument('--debug', action="store_true",
|
||||||
|
@ -260,7 +262,7 @@ def main():
|
||||||
if args.power:
|
if args.power:
|
||||||
run_ace2()
|
run_ace2()
|
||||||
run_pro_blif_3arg()
|
run_pro_blif_3arg()
|
||||||
else:
|
else:
|
||||||
# Make a copy of the blif file to be compatible with vpr flow
|
# Make a copy of the blif file to be compatible with vpr flow
|
||||||
shutil.copy(args.top_module+'_yosys_out.blif', args.top_module+".blif")
|
shutil.copy(args.top_module+'_yosys_out.blif', args.top_module+".blif")
|
||||||
|
|
||||||
|
@ -489,6 +491,9 @@ def run_yosys_with_abc():
|
||||||
"LUT_SIZE": lut_size,
|
"LUT_SIZE": lut_size,
|
||||||
"OUTPUT_BLIF": args.top_module+"_yosys_out.blif",
|
"OUTPUT_BLIF": args.top_module+"_yosys_out.blif",
|
||||||
}
|
}
|
||||||
|
for indx in range(0, len(OpenFPGAArgs), 2):
|
||||||
|
tmpVar = OpenFPGAArgs[indx][2:].upper()
|
||||||
|
ys_params[tmpVar] = OpenFPGAArgs[indx+1]
|
||||||
yosys_template = args.yosys_tmpl if args.yosys_tmpl else os.path.join(
|
yosys_template = args.yosys_tmpl if args.yosys_tmpl else os.path.join(
|
||||||
cad_tools["misc_dir"], "ys_tmpl_yosys_vpr_flow.ys")
|
cad_tools["misc_dir"], "ys_tmpl_yosys_vpr_flow.ys")
|
||||||
tmpl = Template(open(yosys_template, encoding='utf-8').read())
|
tmpl = Template(open(yosys_template, encoding='utf-8').read())
|
||||||
|
@ -687,11 +692,20 @@ def extract_vpr_stats(logfile, r_filename="vpr_stat", parse_section="vpr"):
|
||||||
|
|
||||||
def run_rewrite_verilog():
|
def run_rewrite_verilog():
|
||||||
# Rewrite the verilog after optimization
|
# Rewrite the verilog after optimization
|
||||||
script_cmd = [
|
if not args.ys_rewrite_tmpl:
|
||||||
"read_blif %s" % args.top_module+".blif",
|
script_cmd = [
|
||||||
"write_verilog %s" % args.top_module+"_output_verilog.v"
|
"read_blif %s" % args.top_module+".blif",
|
||||||
]
|
"write_verilog %s" % args.top_module+"_output_verilog.v"
|
||||||
command = [cad_tools["yosys_path"], "-p", "; ".join(script_cmd)]
|
]
|
||||||
|
command = [cad_tools["yosys_path"], "-p", "; ".join(script_cmd)]
|
||||||
|
else:
|
||||||
|
ys_rewrite_params = {
|
||||||
|
"INPUT_BLIF": args.top_module+".blif",
|
||||||
|
"OUTPUT_VERILOG": args.top_module+"_output_verilog.v"
|
||||||
|
}
|
||||||
|
for indx in range(0, len(OpenFPGAArgs), 2):
|
||||||
|
tmpVar = OpenFPGAArgs[indx][2:].upper()
|
||||||
|
ys_rewrite_params[tmpVar] = OpenFPGAArgs[indx+1]
|
||||||
run_command("Yosys", "yosys_rewrite.log", command)
|
run_command("Yosys", "yosys_rewrite.log", command)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ def generate_each_task_actions(taskname):
|
||||||
curr_task_dir = repo_tasks
|
curr_task_dir = repo_tasks
|
||||||
else:
|
else:
|
||||||
clean_up_and_exit("Task directory [%s] not found" % curr_task_dir)
|
clean_up_and_exit("Task directory [%s] not found" % curr_task_dir)
|
||||||
|
|
||||||
os.chdir(curr_task_dir)
|
os.chdir(curr_task_dir)
|
||||||
|
|
||||||
curr_task_conf_file = os.path.join(curr_task_dir, "config", "task.conf")
|
curr_task_conf_file = os.path.join(curr_task_dir, "config", "task.conf")
|
||||||
|
@ -263,6 +263,8 @@ def generate_each_task_actions(taskname):
|
||||||
fallback="top")
|
fallback="top")
|
||||||
CurrBenchPara["ys_script"] = SynthSection.get(bech_name+"_yosys",
|
CurrBenchPara["ys_script"] = SynthSection.get(bech_name+"_yosys",
|
||||||
fallback=ys_for_task_common)
|
fallback=ys_for_task_common)
|
||||||
|
CurrBenchPara["ys_rewrite_script"] = SynthSection.get(bech_name+"_yosys_rewrite",
|
||||||
|
fallback=ys_for_task_common)
|
||||||
CurrBenchPara["chan_width"] = SynthSection.get(bech_name+"_chan_width",
|
CurrBenchPara["chan_width"] = SynthSection.get(bech_name+"_chan_width",
|
||||||
fallback=chan_width_common)
|
fallback=chan_width_common)
|
||||||
|
|
||||||
|
@ -381,6 +383,9 @@ def create_run_command(curr_job_dir, archfile, benchmark_obj, param, task_conf):
|
||||||
if benchmark_obj.get("ys_script"):
|
if benchmark_obj.get("ys_script"):
|
||||||
command += ["--yosys_tmpl", benchmark_obj["ys_script"]]
|
command += ["--yosys_tmpl", benchmark_obj["ys_script"]]
|
||||||
|
|
||||||
|
if benchmark_obj.get("ys_rewrite_script"):
|
||||||
|
command += ["--ys_rewrite_tmpl", benchmark_obj["ys_rewrite_script"]]
|
||||||
|
|
||||||
if task_gc.getboolean("power_analysis"):
|
if task_gc.getboolean("power_analysis"):
|
||||||
command += ["--power"]
|
command += ["--power"]
|
||||||
command += ["--power_tech", task_gc.get("power_tech_file")]
|
command += ["--power_tech", task_gc.get("power_tech_file")]
|
||||||
|
|
Loading…
Reference in New Issue