Skip to content
Snippets Groups Projects
Commit 78018407 authored by Yaman Umuroglu's avatar Yaman Umuroglu
Browse files

[PYNQ] fix driver gen after finn-base migration

parent b079a227
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,7 @@ import pkg_resources as pk
import numpy as np
import os
import qonnx.core.datatype as dtp
import qonnx
import shutil
import warnings
from qonnx.core.modelwrapper import ModelWrapper
......@@ -39,6 +39,7 @@ from qonnx.custom_op.registry import getCustomOp
from qonnx.transformation.base import Transformation
from qonnx.util.basic import gen_finn_dt_tensor, roundup_to_integer_multiple
import finn.util
import finn.util.data_packing as dpk
from finn.util.basic import make_build_dir
from finn.util.data_packing import (
......@@ -98,6 +99,33 @@ class MakePYNQDriver(Transformation):
)
driver_base_py = pynq_driver_dir + "/driver_base.py"
shutil.copy(driver_base_template, driver_base_py)
# driver depends on qonnx and finn packages
# extract individual source files and copy to driver folder
qonnx_target_path = pynq_driver_dir + "/qonnx"
finn_target_path = pynq_driver_dir + "/finn"
os.makedirs(qonnx_target_path + "/core", exist_ok=True)
os.makedirs(qonnx_target_path + "/util", exist_ok=True)
os.makedirs(finn_target_path + "/util", exist_ok=True)
qonnx_path = qonnx.__path__[0]
finn_util_path = finn.util.__path__[0]
files_to_copy = []
files_to_copy.append(
(qonnx_path + "/core/datatype.py", qonnx_target_path + "/core/datatype.py")
)
files_to_copy.append(
(qonnx_path + "/core/__init__.py", qonnx_target_path + "/core/__init__.py")
)
files_to_copy.append(
(qonnx_path + "/util/basic.py", qonnx_target_path + "/util/basic.py")
)
files_to_copy.append(
(
finn_util_path + "/data_packing.py",
finn_target_path + "/util/data_packing.py",
)
)
for (src_file, target_file) in files_to_copy:
shutil.copy(src_file, target_file)
# extract input-output shapes from the graph
# TODO convert this to an analysis pass?
idt = []
......@@ -261,20 +289,6 @@ class MakePYNQDriver(Transformation):
)
shutil.copy(validate_template, validate_py)
# copy all the dependencies into the driver folder
# driver imports utils/data_packing and core/datatype
# both of which are in finn-base
# e.g. $FINN_ROOT/deps/finn-base/src/finn/util/data_packing.py
dpk_root = dpk.__file__
# e.g. $FINN_ROOT/deps/finn-base/src/finn/util
dpk_root = dpk_root.replace("data_packing.py", "")
# e.g. $FINN_ROOT/deps/finn-base/src/finn/core/datatype.py
dtp_root = dtp.__file__
# e.g. $FINN_ROOT/deps/finn-base/src/finn/core
dtp_root = dtp_root.replace("datatype.py", "")
shutil.copytree(dpk_root, pynq_driver_dir + "/finn/util")
shutil.copytree(dtp_root, pynq_driver_dir + "/finn/core")
# generate weight files for runtime-writable layers
for sdp_ind, sdp_node in enumerate(model.graph.node):
......
......@@ -182,7 +182,7 @@ proc assign_axi_addr_proc {axi_intf_path} {
#align base address to range
set offset [expr ($axi_peripheral_base + ($range-1)) & ~($range-1)]
#perform assignment
assign_bd_address [get_bd_addr_segs $axi_intf_path/Reg0] -offset $offset -range $range
assign_bd_address [get_bd_addr_segs $axi_intf_path/Reg*] -offset $offset -range $range
#advance base address
set axi_peripheral_base [expr $offset + $range]
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment