diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/synth/netlists-cleanup.adb | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/src/synth/netlists-cleanup.adb b/src/synth/netlists-cleanup.adb index 21d6f94d1..54cb6300e 100644 --- a/src/synth/netlists-cleanup.adb +++ b/src/synth/netlists-cleanup.adb @@ -21,6 +21,9 @@  with Netlists.Utils; use Netlists.Utils;  package body Netlists.Cleanup is +   --  Return False iff INST has no outputs (and INST is not Id_Free). +   --  Return True iff all outputs of INST are unconnected. +   --  Return False otherwise.     function Is_Unused_Instance (Inst : Instance) return Boolean     is        Nbr_Outputs : constant Port_Idx := Get_Nbr_Outputs (Inst); @@ -43,6 +46,7 @@ package body Netlists.Cleanup is        return True;     end Is_Unused_Instance; +   --  Move INST on LIST iff INST is unused.     procedure Extract_If_Unused (Inst : Instance; List : in out Instance) is     begin        if Is_Unused_Instance (Inst) then @@ -92,8 +96,10 @@ package body Netlists.Cleanup is                    Inp := Get_Input (Inst, K);                    Drv := Get_Driver (Inp);                    if Drv /= No_Net then -                     --  The input was already unconnected. +                     --  Disconnect the input.                       Disconnect (Inp); +                     --  Possibly consider the driver as unconnected if was +                     --  the last input connected.                       if Get_First_Sink (Drv) = No_Input then                          Inst2 := Get_Net_Parent (Drv);                          Extract_If_Unused (Inst2, List);  | 
