From 911a0bfa0886f638fc82306d67d6b619d07173e6 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 11 Dec 2017 18:34:44 +0100 Subject: simul: emit proper error message for negative timeout. --- src/vhdl/simulate/simul-execution.adb | 3 +-- src/vhdl/simulate/simul-simulation.adb | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/vhdl/simulate/simul-execution.adb b/src/vhdl/simulate/simul-execution.adb index b7888608b..e18016c21 100644 --- a/src/vhdl/simulate/simul-execution.adb +++ b/src/vhdl/simulate/simul-execution.adb @@ -4638,8 +4638,7 @@ package body Simul.Execution is Release (Proc.Instance.Marker, Instance_Pool.all); end Finish_Procedure_Frame; - procedure Execute_If_Statement - (Proc : Process_State_Acc; Stmt: Iir_Wait_Statement) + procedure Execute_If_Statement (Proc : Process_State_Acc; Stmt : Iir) is Clause: Iir; Cond: Boolean; diff --git a/src/vhdl/simulate/simul-simulation.adb b/src/vhdl/simulate/simul-simulation.adb index 5b7035c3f..a674fa784 100644 --- a/src/vhdl/simulate/simul-simulation.adb +++ b/src/vhdl/simulate/simul-simulation.adb @@ -18,6 +18,7 @@ with Types; use Types; with Simul.Execution; use Simul.Execution; +with Simul.Debugger; use Simul.Debugger; with Areapools; use Areapools; with Grt.Signals; with Grt.Processes; @@ -524,6 +525,9 @@ package body Simul.Simulation is Expr := Get_Timeout_Clause (Stmt); if Expr /= Null_Iir then Res := Execute_Expression (Instance, Expr); + if Res.I64 < 0 then + Error_Msg_Exec ("negative timeout clause", Stmt); + end if; Grt.Processes.Ghdl_Process_Wait_Set_Timeout (Std_Time (Res.I64), null, 0); end if; -- cgit v1.2.3