diff options
| -rw-r--r-- | src/ghdldrv/ghdlsynth.adb | 19 | ||||
| -rw-r--r-- | src/synth/synthesis.adb | 3 | 
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ghdldrv/ghdlsynth.adb b/src/ghdldrv/ghdlsynth.adb index cc10d0daf..243120b21 100644 --- a/src/ghdldrv/ghdlsynth.adb +++ b/src/ghdldrv/ghdlsynth.adb @@ -58,6 +58,7 @@ package body Ghdlsynth is        Disp_Inline : Boolean := True;        Disp_Id : Boolean := True;        Oformat : Out_Format := Format_Default; +      Expect_Failure : Boolean := False;     end record;     function Decode_Command (Cmd : Command_Synth; Name : String)                             return Boolean; @@ -96,6 +97,9 @@ package body Ghdlsynth is          and then Is_Generic_Override_Option (Option)        then           Res := Decode_Generic_Override_Option (Option); +      elsif Option = "--expect-failure" then +         Cmd.Expect_Failure := True; +         Res := Option_Ok;        elsif Option = "--disp-noinline" then           Cmd.Disp_Inline := False;           Res := Option_Ok; @@ -333,6 +337,9 @@ package body Ghdlsynth is        end if;        Synthesis.Synth_Design (Config, Res, Inst); +      if Res = No_Module then +         return No_Module; +      end if;        Disp_Design (Command_Synth (Cmd.all), Format_None, Res, Config, Inst); @@ -367,13 +374,23 @@ package body Ghdlsynth is        Config := Ghdl_Synth_Configure (True, Args);        if Config = Null_Iir then -         raise Errorout.Compilation_Error; +         if Cmd.Expect_Failure then +            return; +         else +            raise Errorout.Compilation_Error; +         end if;        end if;        Netlists.Errors.Initialize;        Synthesis.Synth_Design (Config, Res, Inst);        if Res = No_Module then +         if Cmd.Expect_Failure then +            return; +         else +            raise Errorout.Compilation_Error; +         end if; +      elsif Cmd.Expect_Failure then           raise Errorout.Compilation_Error;        end if; diff --git a/src/synth/synthesis.adb b/src/synth/synthesis.adb index e2d72142e..6583460cf 100644 --- a/src/synth/synthesis.adb +++ b/src/synth/synthesis.adb @@ -58,7 +58,8 @@ package body Synthesis is        Synth_Top_Entity (Global_Instance, Arch, Config, Inst);        Synth_All_Instances;        if Errorout.Nbr_Errors > 0 then -         raise Compilation_Error; +         M := No_Module; +         return;        end if;        M := Get_Top_Module (Global_Instance);  | 
