Skip to content
Snippets Groups Projects
Commit 1490d1e6 authored by auphelia's avatar auphelia
Browse files

[Transformation] Add signature insertion into ip stitching

parent be802469
No related branches found
No related tags found
No related merge requests found
......@@ -85,12 +85,13 @@ class CreateStitchedIP(Transformation):
The packaged block design IP can be found under the ip subdirectory.
"""
def __init__(self, fpgapart, clk_ns, ip_name="finn_design", vitis=False):
def __init__(self, fpgapart, clk_ns, ip_name="finn_design", vitis=False, signature=False):
super().__init__()
self.fpgapart = fpgapart
self.clk_ns = clk_ns
self.ip_name = ip_name
self.vitis = vitis
self.signature = signature
self.has_aximm = False
self.has_m_axis = False
self.m_axis_idx = 0
......@@ -225,12 +226,37 @@ class CreateStitchedIP(Transformation):
)
self.s_axis_idx += 1
def insert_signature(self):
signature_vlnv = "AMD:user:axi_info_top:1.0"
signature_name = "axi_info_top0"
self.create_cmds.append(
"create_bd_cell -type ip -vlnv %s %s" % (signature_vlnv, signature_name)
)
# set clk and reset
self.connect_cmds.append(
"connect_bd_net [get_bd_ports ap_clk] [get_bd_pins %s/ap_clk]"
% signature_name
)
self.connect_cmds.append(
"connect_bd_net [get_bd_ports ap_rst_n] [get_bd_pins %s/ap_rst_n]"
% signature_name
)
# make axilite interface external
self.connect_cmds.append(
"make_bd_intf_pins_external [get_bd_intf_pins %s/s_axi]" % signature_name
)
self.connect_cmds.append(
"set_property name s_axis_info [get_bd_intf_ports s_axi_0]"
)
def apply(self, model):
# ensure non-relative readmemh .dat files
model = model.transform(ReplaceVerilogRelPaths())
ip_dirs = ["list"]
# add RTL streamer IP
ip_dirs.append("$::env(FINN_ROOT)/finn-rtllib/memstream")
if self.signature == True:
ip_dirs.append("$::env(FINN_ROOT)/finn-rtllib/axi_info")
if model.graph.node[0].op_type not in ["StreamingFIFO", "IODMA"]:
warnings.warn(
"""First node is not StreamingFIFO or IODMA.
......@@ -288,6 +314,10 @@ class CreateStitchedIP(Transformation):
if node.output[i] == out_name:
self.connect_m_axis_external(node, idx=i)
if self.signature == True:
self.insert_signature()
# create a temporary folder for the project
prjname = "finn_vivado_stitch_proj"
vivado_stitch_proj_dir = make_build_dir(prefix="vivado_stitch_proj_")
......
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