diff --git a/elaborate.cc b/elaborate.cc index 1ec20a887..03e33aa35 100644 --- a/elaborate.cc +++ b/elaborate.cc @@ -2741,7 +2741,7 @@ NetProc* PDelayStatement::elaborate(Design*des, NetScope*scope) const return new NetPDelay(tmp->value().as_ulong64(), statement_->elaborate(des, scope)); else - return new NetPDelay(tmp->value().as_ulong(), 0); + return new NetPDelay(tmp->value().as_ulong64(), 0); delete dex; diff --git a/vvp/opcodes.txt b/vvp/opcodes.txt index db3de0c4e..dc24887e8 100644 --- a/vvp/opcodes.txt +++ b/vvp/opcodes.txt @@ -280,14 +280,17 @@ will be deactivated. For a full deactivation the is 0 and The same as %deassign above except this is used for real variables. -* %delay +* %delay , This opcode pauses the thread, and causes it to be rescheduled for a -time in the future. The is the number of the ticks in the +time in the future. The amount is the number of the ticks in the future to reschedule, and is >= 0. If the %delay is zero, then the thread yields the processor for another thread, but will be resumed in the current time step. +The delay amount is given as 2 32bit numbers, so that 64bit times may +be represented. + * %delayx This is similar to the %delay opcode, except that the parameter