Martin Whitaker
dc189fec8c
Added new vvp latch statement to README file.
2016-03-12 12:14:03 +00:00
Martin Whitaker
99afea6946
Added support for LPM latches to vvp.
2016-03-12 09:04:51 +00:00
Maciej Suminski
9cf1dcbae2
vvp: Corrected vvp_net_fun_t::recv_vec4_pv() (commit de968e18)
2016-03-07 09:54:28 +01:00
Maciej Suminski
69b7c000d0
vvp: Implemented vvp_net_fun_t::recv_vec4_pv().
2016-03-07 09:54:28 +01:00
Stephen Williams
9a7f31c728
Functions that return strings pass the return value on the stack.
2016-03-01 15:38:28 -08:00
Cary R
7d21891147
Fix space issues.
2016-02-28 22:09:39 -08:00
Martin Whitaker
46105e0c5a
Delayed output of vvp dff to end of current time slot.
...
Flip-flops are generally modelled in behavioural code using non-blocking
assignments. This change makes the synthesised code behave the same as
the behavioural code. It's a more realistic model of a real flip-flop
too, which will always have some clock-to-output delay.
2016-02-21 00:00:39 +00:00
Cary R
3e52b2be66
Fix valgrind compile
2016-02-03 22:25:57 -08:00
Cary R
841593d013
Remove some compile warnings
2016-02-03 21:40:18 -08:00
Stephen Williams
76ced1cf7c
Fix %ret/* and %retload/* opcodes to search up for function thread.
2016-02-01 14:51:18 -08:00
Stephen Williams
f494b478cc
Merge branch 'master' into return-stack
...
# Conflicts:
# sv_vpi_user.h
2016-02-01 14:47:44 -08:00
Stephen Williams
ce692f90ad
Implement and use the %retload/real opcode.
2016-02-01 09:31:06 -08:00
Stephen Williams
c114edfa6c
Handle void functions with new .scope format.
2016-02-01 09:29:49 -08:00
Stephen Williams
604a62379c
Make .scope aware of return type, and extend %ret/vec4 operands
...
The .scope needs to be aware of return types so that the %call/vec4
function knows how to intialize the return value. We also need to
extend the %ret/vec4 to support writing parts of the return value.
2016-01-31 15:29:52 -08:00
Stephen Williams
e435a879fc
Add ability to read back return value / Add vec4 stacked user functions.
...
Also:
- handle functions as arguments to system tasks.
- Cleanup detect of signal as return value.
2016-01-24 18:36:26 -08:00
Stephen Williams
0c91a6b041
Add .ufunc/real functor to handle functions with return value on stack.
2016-01-17 16:23:28 -08:00
Stephen Williams
bfc9cd8715
Make real functions in processes use parent stack for return value.
2016-01-10 17:09:33 -08:00
Maciej Suminski
517c9785e8
vvp: Code cleaning (vpi_tasks).
2016-01-05 14:23:25 +01:00
Maciej Suminski
df6b24fd3a
ivl & vvp: Enabled 'string' as the return type in VPI functions.
2016-01-05 14:23:25 +01:00
Cary R
e44010c2a3
Remove redundant class keyword
2015-12-29 13:02:58 -08:00
Cary R
71ff9e70ea
Fix valgrind release code to work with new scope definition
2015-12-29 12:46:42 -08:00
Cary R
8367285f3b
Fix some struct versus class warnings for vpiScope
2015-12-29 12:29:10 -08:00
Stephen Williams
63ad15ee2e
Rework user function calls to use specialized opcodes.
...
Create The %callf/* opcodes to invoke user defined functions in a
more specialized way. This allows for some sanity checking on the
way, and also is a step towards keeping return values on stacks.
2015-12-27 20:29:10 -08:00
Stephen Williams
1b33bf8615
Normalize the parsing of %fork and %disable opcodes.
2015-12-27 13:07:42 -08:00
Stephen Williams
f275dac7a8
Kill a bunch of __vpiScope struct vs class warnings.
2015-12-27 11:37:10 -08:00
Stephen Williams
2fedb4942e
C++-ify more __vpiScope members.
2015-12-23 17:38:13 -08:00
Stephen Williams
fff69390ac
C++-ify the __vpiScope classes.
2015-12-20 20:26:57 -08:00
Stephen Williams
3e3f245d8c
Document the vvp .scope record.
...
Also clean up some dead code in the vvp parser.
2015-12-20 16:31:03 -08:00
Cary R
e85d95a659
Cleanup any allocated event queue data
2015-12-14 21:08:17 -08:00
Cary R
aacb4df1dd
Fix memory leak found with valgrind
2015-12-13 14:55:05 -08:00
Christian Taedcke
6d5aabd4f0
Make a few constructors explicit.
...
This removes cppcheck warnings.
2015-10-22 12:33:33 +02:00
Cary R
97fca3fc4b
Fix the modpath delay to ignore bits that are not changing
2015-10-21 22:01:24 -07:00
Cary R
a65c007fdb
Fix some cppcheck warnings
2015-10-02 09:43:54 -07:00
Stephen Williams
466b6464bc
Some minor vvp runtime performance tweaks.
2015-10-01 12:43:56 -07:00
Stephen Williams
4338d43cea
Opcodes documentation fixes.
2015-09-30 16:25:35 -07:00
Stephen Williams
fe7156289b
Remove some useless vvp opcodes.
2015-09-30 15:41:22 -07:00
Stephen Williams
df7b1879dd
Rework vvp file version checking.
2015-08-17 15:37:28 -07:00
Martin Whitaker
9f4b485c1c
Updated copyright dates displayed for main programs and targets.
2015-08-17 22:05:08 +01:00
Larry Doolittle
4dd65926ae
Spelling fixes
2015-08-17 11:35:10 -07:00
Martin Whitaker
94595fb5f2
Fixed version number in vvp man page.
2015-08-16 23:07:09 +01:00
Cary R
3082dceb6e
Update vvp examples to have correct version number
2015-08-15 20:30:20 -07:00
Frederick C. Kurz
d766e82aa1
Changes for vvp/vvp_net.h
...
"# include <string>" was added so "Microsoft Visual Studio Express 2015 RC Web" could compile it without error. "static void operator delete[](void*); was preprocessed so "Microsoft Visual Studio Express 2015 RC Web" could link it without error for a function not yet implemented.
2015-07-22 18:02:52 -07:00
Frederick C. Kurz
c35f2f8334
Changes to vvp/vthread.cc
...
"child->delay_delete = 1;" was added, for when building with "Microsoft Visual Studio Express 2015 RC Web" in DEBUG mode, so that pr2909555.v would pass with -strict, otherwise it would cause memory access error will trying to access the previously deleted "child" variable.
2015-07-22 18:02:45 -07:00
Frederick C. Kurz
afd225a44d
Changes to vvp/vpi_vthr_vector.cc
...
Changed for "Microsoft Visual Studio Express 2015 RC Web" so gold files would match.
2015-07-22 18:00:59 -07:00
Frederick C. Kurz
b36a0a2c54
Changes to vvp/vpi_signal.cc
...
Changed the #ifdef structure so "Microsoft Visual Studio Express 2015 RC Web" could compile it without error.
2015-07-22 17:56:58 -07:00
Frederick C. Kurz
a3728dcf20
Changes to vvp/vpi_mcd.cc
...
Changed for"Microsoft Visual Studio Express 2015 RC Web" so vpi/pr723.v would pass.
2015-07-22 17:56:20 -07:00
Frederick C. Kurz
5f906369b5
Changes to vvp/vpi_callback.cc
...
Changed for"Microsoft Visual Studio Express 2015 RC Web" so gold files would match.
2015-07-22 10:10:32 -07:00
Frederick C. Kurz
12f4d29df3
Changes to vvp/class_type.cc
...
Changed for "Microsoft Visual Studio Express 2015 RC Web" so sv_class14.v would pass without runtime memory error.
2015-07-22 10:06:19 -07:00
Martin Whitaker
97c6339241
Ensure VPI release on net connected to island returns correct value.
2015-07-01 09:00:43 +01:00
Martin Whitaker
8d2149f5aa
Further fix for GitHub issue #73 - also handle part selects.
2015-06-30 23:59:00 +01:00
Martin Whitaker
e8225bd39e
Fix for GitHub issue #73 - allow for island ports in vpi_put_value.
...
In the special case that a net is attached to an island port, values
driven onto the net via the VPI must go to the functor, not the filter,
so that they propagate through the island.
2015-06-30 21:50:13 +01:00
Martin Whitaker
637fc40dd9
Fix various bugs in vpi_put_value.
...
When putting a value onto a wire, the value needs to be sent to the
filter, not the functor (the functor may be part of the expression
that drives the wire).
Force and release weren't implemented properly (or at all in the
case of real values). They need to behave the same as the force
and release operations in vthread.cc.
2015-06-26 08:49:41 +01:00
Martin Whitaker
dad223316e
Fix propagation of unforced bits when forcing a part select.
...
vvp_net_t::force_vec4 propagates all bits of the forced value passed
to it, regardless of the mask value. I can't see any way to fix this
directly, so instead make sure anything that calls force_vec4 sets
the unforced bits of the passed value to the correct value.
2015-06-25 00:13:57 +01:00
Larry Doolittle
b23faff27c
Just a few more spelling fixes
...
Includes some user-visible messages
2015-06-17 08:09:34 -07:00
Martin Whitaker
b242663cae
Support negedge flip-flops in synthesis and in vvp.
...
Also extend the support for FF asynchronous set values to vvp and
fix the dff functor in vvp to correctly model asynchronous set/clr
behaviour.
2015-06-13 16:47:57 +01:00
Larry Doolittle
2739f83702
Spelling fixes in C and C++ comments
2015-06-04 15:00:29 -07:00
Stephen Williams
05d591ccd6
Fix broken write to log files.
2015-06-03 14:32:04 -07:00
Stephen Williams
e6c6f6c81e
Use fwrite to write $display output, instead of fprintf
...
This change makes it safe to write non-ascii characters, which
is an issue when the %u format is used.
2015-06-03 10:00:35 -07:00
Larry Doolittle
33c651aa00
Spelling fixes in .txt files
2015-05-25 12:52:03 -07:00
Martin Whitaker
c75498b1d4
Add -i (interactive) option to vvp.
...
This forces <stdout> to be unbuffered. This is useful when using the
mintty terminal emulator in Windows (as used by MSYS2 and CygWin),
which identifies as a pipe, not a tty.
2015-05-16 00:39:03 +01:00
Martin Whitaker
b6304129fa
Fix for GutHub issue #64 - vvp interrupt/continue in Windows.
...
Windows implements the original UNIX semantics for signal(), which
means you have to re-establish the signal handler each time a signal
is caught.
2015-05-15 22:30:03 +01:00
Martin Whitaker
ac4f4cf1a0
Update man pages.
...
Removed obsolete -m32 and -ivl options from iverilog-vpi man page
and revised description of -mingw option. Also removed duplicate
descriptions of --cflags, --ldflags, and --ldlibs options. Updated
link to main iverilog web page in all man pages.
2015-05-10 13:19:51 +01:00
Martin Whitaker
cfbc90812b
Enable use of MinGW ANSI stdio routines.
...
Defining __USE_MINGW_ANSI_STDIO=1 provides C99 compatible printf
and scanf routines, which avoids the need for workarounds for the
various failings of the Microsoft C runtime library.
2015-05-10 11:45:42 +01:00
Martin Whitaker
6a3edc63d5
Fix printf format for size_t values when using 64-bit MinGW.
...
The Microsoft C runtime does not support the %zu and %zd formats.
Previously these were replaced with %u and %d, but for 64-bit we
need to use %llu and %lld.
2015-05-08 20:20:14 +01:00
Martin Whitaker
45dc13e496
Use uintptr_t/intptr_t when casting between pointer and integer.
...
The code was using (unsigned) long, but a long is 32-bits in the
Windows 64-bit ABI.
2015-05-05 23:00:09 +01:00
Larry Doolittle
5dc1396eea
Spelling fixes
2015-04-13 11:35:12 -07:00
Martin Whitaker
e006f9e132
Fix vvp crash when a part select of a wire is passed to $monitor.
...
When the PV expression is compiled, the parent net may not yet be
resolved, so we may not be able to get its VPI handle straight away.
2015-03-17 21:14:30 +00:00
Cary R
feb710a186
Add support for any width 2-state darray objects
2015-02-27 11:43:25 -08:00
Cary R
62abb199d7
Add support for 4-state dynamic arrays
2015-02-26 17:56:49 -08:00
Cary R
ae629f8c41
Add ability to put a string value to a SV string (from plusargs)
2015-02-25 19:20:50 -08:00
Cary R
47688d234b
Assert if an unsupported dynamic array type is given.
2015-01-16 18:54:43 -08:00
Cary R
09439c55ab
Add new object to the vpi_get_str(vpiType, handle) code.
2015-01-14 19:08:00 -08:00
Maciej Suminski
961d6a8f3b
vpi: $left and $right functions for arrays and strings.
2015-01-12 11:08:31 +01:00
Cary R
4a41a53b42
For valgrind clean up the class definitions at the end.
2015-01-10 16:18:59 -08:00
Martin Whitaker
a1630e1d30
Fix for br968.
...
__vpiVThrVec4Stack::vpi_get_value_int_ was always treating the thread variable
as unsigned, rather than observing the value of __vpiVThrVec4Stack::signed_flag_.
Not sure why this was done - none of the regression tests broke when I changed
this.
2015-01-10 17:24:50 +00:00
Cary R
e61ed48914
Clean up vals_words when a dynamic array is accessed using the vpi
2015-01-09 17:38:39 -08:00
Cary R
d29a6d134f
Fix valgrind cleanup of dynamic and queue arrays
2015-01-09 15:05:48 -08:00
Cary R
6310b47538
Fix a memory leak when searching for an element by name
2015-01-08 16:14:20 -08:00
Stephen Williams
96d181efed
Support vpiStrengthVal for vec4 stack objects.
2014-12-23 14:42:45 -08:00
Cary R
3ccc59eaa3
Fix compile with valgrind hooks after vec4-stack changes
2014-12-12 14:28:07 -08:00
Martin Whitaker
0282b8450c
Fix potential memory leak when a thread is disabled.
...
A disable statement can terminate a thread whilst it still has
local variables on the stack (e.g. the loop counter for a repeat
statement). We need to clear the thread stacks when this happens.
2014-12-11 20:10:17 +00:00
Cary R
48b0fed29e
Use uint64_t casting of constants since UL does not work on 32-bit machines
...
Using a UL constant in a unit64_t context does not work on a 32-bit
machine since UL is 32-bits. Instead create uint64_t constants using
static casts and the appropriate bit operators.
2014-12-10 14:41:18 -08:00
Cary R
edf112b900
Update all the vvp examples to work correctly
2014-12-08 20:55:19 -08:00
Cary R
c28188618b
File example vvp code so make check passes.
2014-12-08 10:43:46 -08:00
Martin Whitaker
0d7daf5862
Fix vvp memory leak for user function calls in a continuous assignment.
2014-12-07 13:47:50 +00:00
Stephen Williams
105521b547
Merge branch 'master' into vec4-stack
2014-12-06 08:24:46 -08:00
Cary R
fd3086f0a9
Fix compile warnings on RHEL5
2014-12-05 19:03:07 -08:00
Cary R
d62a307c34
Fix 32-bit issue in vector4_to_value()
2014-12-05 18:00:08 -08:00
Stephen Williams
409f8c5823
Add the vec4 %subi instruction
2014-12-05 09:45:29 -08:00
Stephen Williams
03198356a5
vec4-stack stack manipulation improvements.
2014-12-04 17:15:27 -08:00
Stephen Williams
b1d2393789
Optimize the %sub instruction by integrating it with vvp_vector4_t class
2014-12-04 17:01:16 -08:00
Stephen Williams
0f740289e9
Optimize %mul instructions by integrating with vvp_vector4_t class.
2014-12-04 16:00:57 -08:00
Stephen Williams
46ce236cfb
Optimize the %add and %addi instructions
...
Tightly integrate with the vvp_vector4_t class to get much
better add performance.
2014-12-04 12:38:08 -08:00
Stephen Williams
86139c855d
Optimize the vec4-stack %cmp/s and %cmpi/s instructions.
...
Magnitude compare is called a LOT, so it is worth putting some
special effort into it.
2014-12-04 10:42:48 -08:00
Stephen Williams
eb070b061b
Optimize the vec4_to_index, which implements %ix/vec4 instructions.
2014-12-03 17:53:45 -08:00
Stephen Williams
2b1393e7b9
Reduce some vector copies in %load/vec4 and %concat/vec4 instructions.
...
By clever stack manipulations, we can eliminate some vector copies,
which can improve performance.
2014-12-03 13:12:06 -08:00
Stephen Williams
85c7b07a9b
Implement %cmp/ne and %cmpi/ne
...
These pull in the inversion of the output flags so that they more
efficiently implement != and !==, without %flag_inv instructions.
2014-12-03 11:06:11 -08:00
Stephen Williams
a57e0a1e3f
vvp implementation of copy from vec4 to vec2 can use subarray method.
2014-12-02 14:52:37 -08:00
Stephen Williams
b83144c552
The __vpiArray::set_word method should take a reference.
...
Seem to have missed a case where a vvp_vector4_t can be passed by
const reference instead of by value.
2014-12-02 13:02:46 -08:00
Stephen Williams
58fb80aec4
Implement and put to use the %muli instruction.
2014-12-02 12:46:17 -08:00