def test_end2end_ext_weights_build(): model_file = get_checkpoint_name("download") load_test_checkpoint_or_skip(model_file) build_env = get_build_env(build_kind, target_clk_ns) folding_config_file = pk.resource_filename( "finn.qnn-data", "test_ext_weights/tfc-w1a1-extw.json") output_dir = make_build_dir("test_end2end_ext_weights_build") cfg = build.DataflowBuildConfig( output_dir=output_dir, folding_config_file=folding_config_file, synth_clk_period_ns=target_clk_ns, board=build_env["board"], shell_flow_type=build_cfg.ShellFlowType.VIVADO_ZYNQ, generate_outputs=[ build_cfg.DataflowOutputType.ESTIMATE_REPORTS, build_cfg.DataflowOutputType.BITFILE, build_cfg.DataflowOutputType.PYNQ_DRIVER, build_cfg.DataflowOutputType.DEPLOYMENT_PACKAGE, ], ) build.build_dataflow_cfg(model_file, cfg) assert os.path.isfile(output_dir + "/deploy/bitfile/finn-accel.bit") assert os.path.isfile(output_dir + "/deploy/bitfile/finn-accel.hwh") assert os.path.isfile(output_dir + "/deploy/driver/driver.py") assert os.path.isfile(output_dir + "/deploy/driver/runtime_weights/idma0.npy") if os.path.isdir(get_checkpoint_name("build")): shutil.rmtree(get_checkpoint_name("build")) shutil.copytree(output_dir + "/deploy", get_checkpoint_name("build"))
def test_end2end_cybsec_mlp_build(QONNX_export): model_file = get_checkpoint_name("export", QONNX_export) load_test_checkpoint_or_skip(model_file) build_env = get_build_env(build_kind, target_clk_ns) output_dir = make_build_dir( f"test_end2end_cybsec_mlp_build_QONNX-{QONNX_export}") cfg = build.DataflowBuildConfig( output_dir=output_dir, target_fps=1000000, synth_clk_period_ns=target_clk_ns, board=build_env["board"], shell_flow_type=build_cfg.ShellFlowType.VIVADO_ZYNQ, generate_outputs=[ build_cfg.DataflowOutputType.ESTIMATE_REPORTS, build_cfg.DataflowOutputType.BITFILE, build_cfg.DataflowOutputType.PYNQ_DRIVER, build_cfg.DataflowOutputType.DEPLOYMENT_PACKAGE, ], ) build.build_dataflow_cfg(model_file, cfg) # check the generated files assert os.path.isfile(output_dir + "/time_per_step.json") assert os.path.isfile(output_dir + "/final_hw_config.json") assert os.path.isfile(output_dir + "/driver/driver.py") est_cycles_report = output_dir + "/report/estimate_layer_cycles.json" assert os.path.isfile(est_cycles_report) est_res_report = output_dir + "/report/estimate_layer_resources.json" assert os.path.isfile(est_res_report) assert os.path.isfile(output_dir + "/report/estimate_network_performance.json") assert os.path.isfile(output_dir + "/bitfile/finn-accel.bit") assert os.path.isfile(output_dir + "/bitfile/finn-accel.hwh") assert os.path.isfile(output_dir + "/report/post_synth_resources.xml") assert os.path.isfile(output_dir + "/report/post_route_timing.rpt") # examine the report contents with open(est_cycles_report, "r") as f: est_cycles_dict = json.load(f) assert est_cycles_dict["StreamingFCLayer_Batch_0"] == 80 assert est_cycles_dict["StreamingFCLayer_Batch_1"] == 64 with open(est_res_report, "r") as f: est_res_dict = json.load(f) assert est_res_dict["total"]["LUT"] == 11360.0 assert est_res_dict["total"]["BRAM_18K"] == 36.0 shutil.copytree(output_dir + "/deploy", get_checkpoint_name("build", QONNX_export))
for model_name in models: # set up the build configuration for this model cfg = build_cfg.DataflowBuildConfig( output_dir="output_%s_%s" % (model_name, release_platform_name), folding_config_file="folding_config/%s_folding_config.json" % model_name, synth_clk_period_ns=10.0, board=platform_name, shell_flow_type=shell_flow_type, vitis_platform=vitis_platform, generate_outputs=[build_cfg.DataflowOutputType.BITFILE], save_intermediate_models=True, ) model_file = "models/%s.onnx" % model_name # launch FINN compiler to build build.build_dataflow_cfg(model_file, cfg) # copy bitfiles into release dir if found bitfile_gen_dir = cfg.output_dir + "/bitfile" files_to_check_and_copy = [ "finn-accel.bit", "finn-accel.hwh", "finn-accel.xclbin", ] for f in files_to_check_and_copy: src_file = bitfile_gen_dir + "/" + f dst_file = platform_dir + "/" + f.replace("finn-accel", model_name) if os.path.isfile(src_file): shutil.copy(src_file, dst_file) # create zipfile for all examples for this platform shutil.make_archive( "release/" + release_platform_name,