From b088e95b6964ef70a2856bf19b33112d391d8aa5 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 23 Sep 2019 06:48:52 +0200 Subject: synth-inference: optimize for controls. --- src/synth/synth-inference.adb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/synth/synth-inference.adb b/src/synth/synth-inference.adb index 4ac726c32..e9a6eeab0 100644 --- a/src/synth/synth-inference.adb +++ b/src/synth/synth-inference.adb @@ -464,7 +464,13 @@ package body Synth.Inference is Enable : Net; begin if not Flags.Flag_Debug_Noinference then - Find_Longest_Loop (Val, Prev_Val, Last_Mux, Len); + if Get_First_Sink (Prev_Val) = No_Input then + -- PREV_VAL is never read, so there cannot be any loop. + -- This is an important optimization for control signals. + Len := -1; + else + Find_Longest_Loop (Val, Prev_Val, Last_Mux, Len); + end if; else Len := -1; end if; -- cgit v1.2.3