From f7d38d7d84687fdd9e9be388992dc22389b8c1e5 Mon Sep 17 00:00:00 2001 From: auphelia <jakobapk@web.de> Date: Tue, 12 May 2020 11:04:55 +0100 Subject: [PATCH] [Transformation] Change input argument from frequency in MHz to clock period in ns --- .../fpgadataflow/create_stitched_ip.py | 15 +++++++++++---- .../transformation/fpgadataflow/make_pynq_proj.py | 11 +++++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/finn/transformation/fpgadataflow/create_stitched_ip.py b/src/finn/transformation/fpgadataflow/create_stitched_ip.py index df9700d71..9b0a387c5 100644 --- a/src/finn/transformation/fpgadataflow/create_stitched_ip.py +++ b/src/finn/transformation/fpgadataflow/create_stitched_ip.py @@ -27,6 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os +import warnings import subprocess from finn.transformation import Transformation @@ -48,10 +49,15 @@ class CreateStitchedIP(Transformation): The packaged block design IP can be found under the ip subdirectory. """ - def __init__(self, fpgapart, fclk_mhz): + def __init__(self, fpgapart, clk_ns): super().__init__() self.fpgapart = fpgapart - self.fclk_mhz = fclk_mhz + self.clk_ns = clk_ns + if float(clk_ns) not in [5.0, 10.0, 20.0]: + warnings.warn( + """The chosen frequency may lead to failure due to clock divider + constraints.""" + ) def apply(self, model): ip_dirs = ["list"] @@ -148,8 +154,9 @@ class CreateStitchedIP(Transformation): tcl.append('create_bd_design "%s"' % block_name) tcl.extend(create_cmds) tcl.extend(connect_cmds) - fclk_hz = self.fclk_mhz * 1000000 - model.set_metadata_prop("fclk_MHz", str(self.fclk_mhz)) + fclk_mhz = 1 / (self.clk_ns * 0.001) + fclk_hz = fclk_mhz * 1000000 + model.set_metadata_prop("clk_ns", str(self.clk_ns)) tcl.append("set_property CONFIG.FREQ_HZ %f [get_bd_ports /ap_clk_0]" % fclk_hz) tcl.append("regenerate_bd_layout") tcl.append("validate_bd_design") diff --git a/src/finn/transformation/fpgadataflow/make_pynq_proj.py b/src/finn/transformation/fpgadataflow/make_pynq_proj.py index 4a0ab7121..91f6bd2c4 100644 --- a/src/finn/transformation/fpgadataflow/make_pynq_proj.py +++ b/src/finn/transformation/fpgadataflow/make_pynq_proj.py @@ -27,6 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os +import warnings import subprocess from finn.custom_op.registry import getCustomOp @@ -118,8 +119,14 @@ class MakePYNQProject(Transformation): synth_report_filename = vivado_pynq_proj_dir + "/synth_report.xml" model.set_metadata_prop("vivado_synth_rpt", synth_report_filename) - # get metadata property for clock frequency - fclk_mhz = float(model.get_metadata_prop("fclk_MHz")) + # get metadata property clk_ns to calculate clock frequency + clk_ns = float(model.get_metadata_prop("clk_ns")) + if clk_ns not in [5.0, 10.0, 20.0]: + warnings.warn( + """The chosen frequency may lead to failure due to clock divider + constraints.""" + ) + fclk_mhz = 1 / (clk_ns * 0.001) ip_config_tcl = templates.ip_config_tcl_template % ( vivado_pynq_proj_dir, -- GitLab