From 5484238aa40bdbe95cd8cce4d77dc0f86b87a625 Mon Sep 17 00:00:00 2001 From: Frans Skarman <frans.skarman@liu.se> Date: Tue, 14 Feb 2023 16:38:58 +0000 Subject: [PATCH] Add critical path computation --- b_asic/signal_flow_graph.py | 6 ++++++ test/test_sfg.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py index c4a6545d..bacdb629 100644 --- a/b_asic/signal_flow_graph.py +++ b/b_asic/signal_flow_graph.py @@ -1451,3 +1451,9 @@ class SFG(AbstractOperation): if format is not None: dg.format = format dg.view() + + def critical_path(self): + # Import here needed to avoid circular imports + from b_asic.schedule import Schedule + + return Schedule(self, scheduling_algorithm="ASAP").schedule_time diff --git a/test/test_sfg.py b/test/test_sfg.py index 00079b7d..f4f9dc4a 100644 --- a/test/test_sfg.py +++ b/test/test_sfg.py @@ -1559,3 +1559,12 @@ class TestSFGErrors: match=re.escape("Output index out of range (expected 0-0, got 1)"), ): sfg.inputs_required_for_output(1) + + +class TestCriticalPath: + def test_single_accumulator(self, sfg_simple_accumulator: SFG): + sfg_simple_accumulator.set_latency_of_type(Addition.type_name(), 5) + assert sfg_simple_accumulator.critical_path() == 5 + + sfg_simple_accumulator.set_latency_of_type(Addition.type_name(), 6) + assert sfg_simple_accumulator.critical_path() == 6 -- GitLab