Cary R
1efa220773
Fix non-blocking assignment to an array error state handling
...
If either the index or part offset expressions generate an undefined
value then the assignment is skipped. This patch reworks the code that
handles the flags used to detect this. For some simple cases a global
flag is not needed, but for other cases one is needed since there are
two expressions that can generate an error and even when there is only
a variable expression this error state needs to be preserved if there
is a variable delay. An undefined delay value defaults to zero and is
not an error.
2014-12-09 17:29:18 -08:00
Cary R
2d6622e543
vlog95: for a 32-bit width we can generate a signed undefined value
2014-12-08 21:09:36 -08:00
Cary R
edf112b900
Update all the vvp examples to work correctly
2014-12-08 20:55:19 -08:00
Cary R
f0a0ab100f
vlog95: trim binary constants to save space and emit size of undef. consts.
...
This should not change the functionality, but to save space trim any
unneeded bits from a binary constant. Also for the case of emitting
a signed undefined value when the allow signed flag is not set add
the width to the constant.
2014-12-08 13:08:30 -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
Martin Whitaker
60ab1daa1f
Restore some master branch fixes lost in the vec4-stack merge.
2014-12-07 12:10:15 +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
77ebfcacb9
Correctly pass if a darray element is signed or unsigned.
2014-12-05 18:23:02 -08:00
Cary R
d62a307c34
Fix 32-bit issue in vector4_to_value()
2014-12-05 18:00:08 -08:00
Stephen Williams
011519cb5b
Merge branch 'master' into vec4-stack
2014-12-05 13:55:51 -08:00
Stephen Williams
8a0b9acadc
Snapshot 2014-12-05
2014-12-05 12:36:34 -08:00
Stephen Williams
77d1671d8f
Merge branch 'master' into vec4-stack
2014-12-05 10:44:49 -08:00
Stephen Williams
561564065d
deal with mixed nested index directions.
2014-12-05 10:43:39 -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
0c5ed2b60f
Merge branch 'master' into vec4-stack
2014-12-03 08:36:38 -08:00
Stephen Williams
8fd1ead082
Revert "ivl: Allow to initialize variables with other variables (since Verilog-2001)."
...
This reverts commit 610ca95cbe .
It turns out that the new feature is actually a bug.
2014-12-03 08:27:01 -08:00
Stephen Williams
3bd307db85
Expression cast handles size if need be.
2014-12-02 16:54:32 -08:00
Stephen Williams
35db02d35d
elaborate dump cast operators.
2014-12-02 16:50:42 -08:00
Stephen Williams
f287546f49
Fix a %vpi_call call syntax.
2014-12-02 15:28:22 -08:00
Stephen Williams
1645e682f4
Generate more efficient vec4-stack code for real le compare.
2014-12-02 14:53:01 -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
Stephen Williams
38f277d81b
Merge branch 'master' into vec4-stack
...
Conflicts:
vvp/array.cc
vvp/vthread.cc
2014-12-02 11:21:58 -08:00
Stephen Williams
f3ba335493
Merge pull request #49 from orsonmmz/darray_vpi
...
Support for dynamic arrays in the VPI
2014-12-01 17:12:57 -08:00
Stephen Williams
fb5ae48b18
Merge branch 'master' into vec4-stack
2014-12-01 17:00:35 -08:00
Cary R
68258f244e
Update cppcheck suppression file for latest lz4.c file
2014-11-29 07:36:51 -08:00
Cary R
ee34ccec70
Update lz4 files from GTKWave
2014-11-29 07:36:44 -08:00
Maciej Suminski
1834d470cb
vvp: Refactored __vpiArrayVthrA & __vpiArrayVthrAPV.
2014-11-28 14:14:42 +01:00
Maciej Suminski
9bc463aac0
vvp: Moved array_word_change(), array_attach_word(), array_alias_word() to __vpiArray.
2014-11-28 14:14:42 +01:00
Maciej Suminski
7c77097f71
vvp: array_[set/get]_word changed to __vpiArray::[set/get]_word.
2014-11-28 14:14:42 +01:00
Maciej Suminski
cc4c5f4998
vvp: Changed get_array_word_size(vvp_array_t) to __vpiArray::get_word_size().
2014-11-28 14:14:42 +01:00
Maciej Suminski
230c435ae7
vvp: Added missing functions for __vpiDarray.
2014-11-28 14:14:42 +01:00
Maciej Suminski
4ddef32631
vvp: __vpiArray::get_word_value handles StrVal variants.
2014-11-28 14:14:42 +01:00
Maciej Suminski
a236c274f3
vvp: Minor changes.
2014-11-28 14:14:42 +01:00
Maciej Suminski
21a8cb71ee
vvp: Handles for dynamic array ranges.
2014-11-28 14:14:42 +01:00
Maciej Suminski
b4ccaa1b0c
vvp: Fixed iterators for dynamic arrays.
2014-11-28 14:14:42 +01:00
Maciej Suminski
a8d43fa743
vvp: Stop simulation in case of errors in $ivl_string_method$to_vec.
2014-11-28 14:14:42 +01:00
Maciej Suminski
ca2ef5c956
vvp: Cleaning.
2014-11-28 14:14:39 +01:00
Maciej Suminski
6015aceda2
vvp: vpiArrayIterator::vpi_index core moved to vpiArrayBase::get_iter_index.
2014-11-28 14:14:37 +01:00