aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vhdl/simulate/simul-execution.adb3
-rw-r--r--src/vhdl/simulate/simul-simulation.adb4
-rwxr-xr-xtestsuite/gna/issue26/testsuite.sh2
3 files changed, 6 insertions, 3 deletions
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;
diff --git a/testsuite/gna/issue26/testsuite.sh b/testsuite/gna/issue26/testsuite.sh
index 467230316..46b5352c7 100755
--- a/testsuite/gna/issue26/testsuite.sh
+++ b/testsuite/gna/issue26/testsuite.sh
@@ -3,7 +3,7 @@
. ../../testenv.sh
analyze repro.vhdl
-elab_simulate_failure time_travel > sim.err
+elab_simulate_failure time_travel > sim.err 2>&1
if ! grep -q '11' sim.err; then
echo "missing line number"
exit 1