From e2dd285de2d54c5b93c7423a7a3d5b3da3d2a7e1 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <maltanar@gmail.com> Date: Wed, 5 Aug 2020 14:16:36 +0200 Subject: [PATCH] [ZYNQ] add debug/chipscope option --- .../transformation/fpgadataflow/make_zynq_proj.py | 11 ++++++++--- src/finn/transformation/fpgadataflow/templates.py | 12 ++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/finn/transformation/fpgadataflow/make_zynq_proj.py b/src/finn/transformation/fpgadataflow/make_zynq_proj.py index 7b6037d54..994c41fd0 100644 --- a/src/finn/transformation/fpgadataflow/make_zynq_proj.py +++ b/src/finn/transformation/fpgadataflow/make_zynq_proj.py @@ -90,9 +90,10 @@ class MakeZYNQProject(Transformation): value. """ - def __init__(self, platform): + def __init__(self, platform, enable_debug=False): super().__init__() self.platform = platform + self.enable_debug = 1 if enable_debug else 0 def apply(self, model): @@ -222,6 +223,7 @@ class MakeZYNQProject(Transformation): self.platform, pynq_part_map[self.platform], config, + self.enable_debug, get_num_default_workers(), ) ) @@ -267,11 +269,12 @@ class MakeZYNQProject(Transformation): class ZynqBuild(Transformation): """Best-effort attempt at building the accelerator for Zynq.""" - def __init__(self, platform, period_ns): + def __init__(self, platform, period_ns, enable_debug=False): super().__init__() self.fpga_part = pynq_part_map[platform] self.period_ns = period_ns self.platform = platform + self.enable_debug = enable_debug def apply(self, model): # first infer layouts @@ -311,5 +314,7 @@ class ZynqBuild(Transformation): ) kernel_model.save(dataflow_model_filename) # Assemble design from IPs - model = model.transform(MakeZYNQProject(self.platform)) + model = model.transform( + MakeZYNQProject(self.platform, enable_debug=self.enable_debug) + ) return (model, False) diff --git a/src/finn/transformation/fpgadataflow/templates.py b/src/finn/transformation/fpgadataflow/templates.py index bb4583ef4..d22163cbe 100644 --- a/src/finn/transformation/fpgadataflow/templates.py +++ b/src/finn/transformation/fpgadataflow/templates.py @@ -376,6 +376,18 @@ connect_bd_net [get_bd_pins axi_interconnect_0/ARESETN] [get_bd_pins smartconnec #custom IP instantiations/connections start here %s +# set up debug +if {%d == 1} { + set_property HDL_ATTRIBUTE.DEBUG true [get_bd_intf_nets {idma0_m_axis_0}] + set_property HDL_ATTRIBUTE.DEBUG true [get_bd_intf_nets {StreamingDataflowPartition_1_m_axis_0}] + set_property HDL_ATTRIBUTE.DEBUG true [get_bd_intf_nets {smartconnect_0_M00_AXI}] + apply_bd_automation -rule xilinx.com:bd_rule:debug -dict [list \ + [get_bd_intf_nets smartconnect_0_M00_AXI] {AXI_R_ADDRESS "Data and Trigger" AXI_R_DATA "Data and Trigger" AXI_W_ADDRESS "Data and Trigger" AXI_W_DATA "Data and Trigger" AXI_W_RESPONSE "Data and Trigger" CLK_SRC "/zynq_ps/FCLK_CLK0" SYSTEM_ILA "Auto" APC_EN "0" } \ + [get_bd_intf_nets idma0_m_axis_0] {AXIS_SIGNALS "Data and Trigger" CLK_SRC "/zynq_ps/FCLK_CLK0" SYSTEM_ILA "Auto" APC_EN "0" } \ + [get_bd_intf_nets StreamingDataflowPartition_1_m_axis_0] {AXIS_SIGNALS "Data and Trigger" CLK_SRC "/zynq_ps/FCLK_CLK0" SYSTEM_ILA "Auto" APC_EN "0" } \ + ] +} + #finalize clock and reset connections for interconnects set i 0 while {$i < $NUM_AXILITE} { -- GitLab