Stephen Williams
8f519531f3
Optimize load-add with load/add instruction
...
Where and expression is an immediate value added to a signal value,
it is possible to optimize them to a single instruction that combines
the load with an add at the same time.
2007-12-04 19:15:15 -08:00
Stephen Williams
68a9526fec
Minor performance tweak of vector_to_array function.
2007-12-02 19:00:12 -08:00
Stephen Williams
9759c19734
Implement release of linked force nodes
...
When nets are forced by non-constant expressions, the value is linked
to the destination net through a force_link. This patch adds the code
needed to unlink a force/link so that release and new force/links can
work. This fixes pr1735836.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-11-13 19:35:44 -08:00
Stephen Williams
acdbe274f9
Fix signed ocmpare of negative numbers.
...
signed compare in proceedural code was comparing the absolute
value if both operands were negative. Wrong!
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-03 22:26:42 -07:00
Stephen Williams
5d750b7779
Optomize runtime using immediate compare
...
Implement compare-immediate instructions and generate code to use
these new instructions to improve runtime performance.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-03 20:58:40 -07:00
Stephen Williams
e75e7131ac
Fix signed compare with minus values
...
If the operands were negative, and not equal, the lt flag
would be set incorrectly.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-07-02 21:33:05 -07:00
Stephen Williams
d7c3a32b06
Fix code generation for real expressions
...
Real value are vector width of 1, fix real literal to reflect this.
fix leaking real registers in code generation for function arguments.
Load of signal should handle conversion from real to vector. Function
arguments, type vector passed a real value, are an example where this
comes up.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-06-29 21:10:37 -07:00
steve
e24e77660f
Detect and use the nan function.
2007-06-13 01:03:57 +00:00
steve
ae82eccdc4
handle constant inf values.
2007-06-12 02:36:58 +00:00
steve
0a38499941
Properly handle signed conversion to real
2007-06-07 03:20:15 +00:00
steve
55f8e5d364
int vs long expressions on 64bit arch (ldoolitt)
2007-06-05 21:52:22 +00:00
steve
9931e4c013
Finish up part select of array words.
2007-04-14 04:43:01 +00:00
steve
4f74d9df98
Add the mov/wr opcode.
2007-02-14 05:58:14 +00:00
steve
d958a4a5af
Handle relink of continuous assignment.
2007-02-05 01:08:10 +00:00
steve
85ceea7358
Fix missing check for thread bits width in ADDI
2007-01-31 22:28:55 +00:00
steve
91d84e7dc7
Major rework of array handling. Memories are replaced with the
...
more general concept of arrays. The NetMemory and NetEMemory
classes are removed from the ivl core program, and the IVL_LPM_RAM
lpm type is removed from the ivl_target API.
2007-01-16 05:44:14 +00:00
steve
26e2e85ffa
Handle non-constant delays on indexed non-blocking assignments.
2006-10-05 01:23:53 +00:00
steve
50800fd3a1
Add support for real valued modulus.
2006-08-09 05:19:08 +00:00
steve
fc0695beb6
Handle 64bit delay constants.
2006-08-08 05:11:37 +00:00
steve
898b0e0365
Support release of a for/linked reg.
2006-08-04 04:37:37 +00:00
steve
36039e13ec
schedule takes relative, not absolute, time.
2006-04-27 04:38:00 +00:00
steve
d0de678d57
real-to-integer conversions round, not truncate.
2006-02-02 05:48:45 +00:00
steve
d434dd7296
Allow part selects of memory words in l-values.
2006-02-02 02:43:57 +00:00
steve
2b8fd28a95
Force instruction that can be indexed.
2005-11-26 17:16:05 +00:00
steve
35951510c5
Put vec8 and vec4 nets into seperate net classes.
2005-11-25 17:55:26 +00:00
steve
be73be8c98
Spelling patches from Larry.
2005-09-19 21:45:35 +00:00
steve
988a0a7048
Add the load/v.p instruction.
2005-09-17 04:01:01 +00:00
steve
65584e6dde
Add word integer compares.
2005-09-14 02:50:07 +00:00
steve
efd7825964
minor correction to address check in of_MOV1XZ
2005-08-30 00:49:21 +00:00
steve
7c19eb51e7
Minor cleanup.
2005-08-29 04:46:13 +00:00
steve
5cf2ce6499
Fix bit destination address in of_AND
2005-08-27 03:28:57 +00:00
steve
bc489a7761
Bring threads into the vvp_vector4_t structure.
2005-08-27 02:34:42 +00:00
steve
de1dd2f2b3
Make bit masks of vector4_t 64bit aware.
2005-06-26 01:57:22 +00:00
steve
1b30bac9f3
Optimize the LOAD_VEC implementation.
2005-06-19 18:42:00 +00:00
steve
cd14ee77ae
Add the assign_v0_d instruction.
2005-06-14 01:44:09 +00:00
steve
fb8ddbbfde
Remove useless references to functor.h
2005-06-12 01:25:27 +00:00
steve
42433f4df9
Add support for notif0/1 gates.
...
Make delay nodes support inertial delay.
Add the %force/link instruction.
2005-06-02 16:02:11 +00:00
steve
d6a89a40cf
Clean up instruction type reverences to bits.
2005-05-17 20:51:06 +00:00
steve
5277124c76
Implement non-blocking part assign.
2005-05-07 03:15:42 +00:00
steve
2894cdefc7
Add cassign/link instruction.
2005-05-01 22:05:21 +00:00
steve
d8a456bd67
The indexed set can write a vector, not just a bit.
2005-03-22 05:18:34 +00:00
steve
8e135a1020
Non blocking assign to memory words.
2005-03-06 17:07:48 +00:00
steve
e7c2e06260
Check that lead.mv vector width matches word.
2005-03-05 05:45:18 +00:00
steve
85286cc086
Rearrange how memories are supported as vvp_vector4 arrays.
2005-03-03 04:33:10 +00:00
steve
c5e7e2ec0a
Signals may receive part vectors from %set/x0
...
instructions. Re-implement the %set/x0 to do
just that. Remove the useless %set/x0/x instruction.
2005-02-14 01:50:23 +00:00
steve
355ead0002
Add debug dumps for vectors, and fix vvp_scaler_t make from BIT4_X values.
2005-02-12 06:13:22 +00:00
steve
a121e703f3
Add vector4 implementation of .arith/mult.
2005-01-28 05:34:25 +00:00
steve
1d1dda5a5d
Implement the %load/x instruction.
2005-01-22 00:58:22 +00:00
steve
26d97558c4
Replace single release with release/net and release/reg.
2004-12-17 04:47:47 +00:00
steve
78dda42493
Add the force/v instruction.
2004-12-15 17:17:42 +00:00
steve
65e9b6be12
Rework of internals to carry vectors through nexus instead
...
of single bits. Make the ivl, tgt-vvp and vvp initial changes
down this path.
2004-12-11 02:31:25 +00:00
steve
e4ae832153
Clean up spurious trailing white space.
2004-10-04 01:10:51 +00:00
steve
51fd249d8a
Watch type of mak bit matches masked value.
2004-06-19 16:17:02 +00:00
steve
050ec6f325
Add signed modulus operator.
2004-06-19 15:52:53 +00:00
steve
8d3102388b
Pick sign bit from the right place in the exponent number.
2004-06-04 23:26:34 +00:00
steve
a7ae8adf9b
Support delayed/non-blocking assignment to reals and others.
2004-05-19 03:26:24 +00:00
steve
995cd449c5
Include config.h
2003-11-10 20:19:32 +00:00
steve
07ece95383
Slight performance tweaks of scheduler.
2003-09-26 02:15:15 +00:00
steve
2272843511
32bit vs 64bit handling in SUBI.
2003-09-01 04:03:38 +00:00
steve
2d5b48ce0a
Initialize allocated memory.
2003-08-01 00:58:03 +00:00
steve
5e954e94fa
Overflow of unsigned when calculating unsigned long value.
2003-07-21 02:39:15 +00:00
steve
dccd7ec7e2
Remove the vvp_cpoint_t indirect code pointer.
2003-07-03 20:03:36 +00:00
steve
71a404a546
Add arithmetic shift operators.
2003-06-18 03:55:18 +00:00
steve
2321df4bfc
Remove short int restrictions from vvp opcodes. (part 2)
2003-06-17 21:28:59 +00:00
steve
96ca885aca
Remove short int restrictions from vvp opcodes.
2003-06-17 19:17:42 +00:00
steve
e157b3f9c5
Add the set/x0/x instruction.
2003-05-26 04:44:54 +00:00
steve
4ace97a083
ufunc calls to functions can have scheduling complexities.
2003-05-07 03:39:12 +00:00
steve
4b543de7f9
Add support for division of real operands.
2003-03-28 02:33:56 +00:00
steve
f45fd155c4
Remove the obsolete functor delete functions.
2003-03-13 04:36:57 +00:00
steve
aa3297a925
Add the cvt/vr instruction.
2003-02-27 20:36:29 +00:00
steve
2935e28ffb
When checking for stop, remember to reschedule.
2003-02-22 06:26:58 +00:00
steve
19c6bd2139
Check for stopped flag in certain strategic points.
2003-02-22 02:52:06 +00:00
steve
b726395d1e
Spelling fixes.
2003-02-09 23:33:26 +00:00
steve
dd56d9a17c
Add the %sub/wr instruction.
2003-02-06 17:41:47 +00:00
steve
04ada23119
Support in various contexts the $realtime
...
system task.
2003-01-27 00:14:37 +00:00
steve
7de4108bad
Add %cvt/ir and %cvt/ri instructions, and support
...
real values passed as arguments to VPI tasks.
2003-01-26 18:16:22 +00:00
steve
9a5a00f836
Add thread word array, and add the instructions,
...
%add/wr, %cmp/wr, %load/wr, %mul/wr and %set/wr.
2003-01-25 23:48:05 +00:00
steve
aa3a6dba4e
Schedule wait lists of threads as a single event,
...
to save on events. Also, improve efficiency of
event_s allocation. Add some event statistics to
get an idea where performance is really going.
2003-01-06 23:57:26 +00:00
steve
8e30bc9f9e
Careful of left operands to shift that are constant.
2002-11-22 00:01:50 +00:00
steve
03afbf157b
%set/x0 instruction to support bounds checking.
2002-11-21 22:43:13 +00:00
steve
1b84893ccb
Add the %assign/v0 instruction.
2002-11-08 04:59:57 +00:00
steve
b0a7909162
functor_set takes bit and strength, not 2 strengths.
2002-11-07 03:11:43 +00:00
steve
d7ae85a13a
Add vector set and load instructions.
2002-11-07 02:32:39 +00:00
steve
4e5dd49a37
Fix mask calculate when MOV_b is right on the word boundary.
2002-11-05 03:46:44 +00:00
steve
7557a46382
Remove some now useless asserts.
2002-09-21 23:47:30 +00:00
steve
acd5e86e04
Fix disable in arbitrary fork/join situations.
2002-09-21 04:55:00 +00:00
steve
ab94b0a636
disable threads with children.
2002-09-20 03:59:34 +00:00
steve
3d3116d48b
Add support for binary NOR operator.
2002-09-18 04:29:55 +00:00
steve
dac99b9374
Add support for binary nand operator.
2002-09-12 15:49:43 +00:00
steve
cbca31555d
Add the %subi instruction, and use it where possible.
2002-08-28 18:38:07 +00:00
steve
1db8319bce
Add the %load/nx opcode to index vpi nets.
2002-08-28 17:15:06 +00:00
steve
aa390f2a91
Fix l-value indexing of memories and vectors so that
...
an unknown (x) index causes so cell to be addresses.
Fix tangling of label identifiers in the fork-join
code generator.
2002-08-27 05:39:57 +00:00
steve
985c34bfd9
Fix behavioral eval of x?a:b expressions.
2002-08-22 03:38:40 +00:00
steve
ac21d96bd8
x in index values leads to 0.
2002-08-18 01:05:50 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
d68153dea3
Add %cmpi/u instruction.
2002-06-02 18:55:58 +00:00
steve
1ce50993f0
Add the %muli instruction.
2002-05-31 20:04:22 +00:00
steve
af6f0c800f
Slight improvement in %mov performance.
2002-05-31 04:09:58 +00:00
steve
48f65cef40
Word oriented bit storage.
2002-05-31 00:05:49 +00:00
steve
b6b364a09d
Add %addi, which is faster to simulate.
2002-05-29 16:29:34 +00:00
steve
bcd49b94dd
Able to disable thread self.
2002-05-27 00:53:10 +00:00
steve
d63e994ea5
Detect long division by zero.
2002-05-24 04:55:13 +00:00
steve
cfab250671
Add callbacks for vpiNamedEvent objects.
2002-05-19 05:18:16 +00:00
steve
94cef20e49
task calls and forks push the thread event in the queue.
2002-05-12 23:44:41 +00:00
steve
52ea13819a
Add the assign/d instruction for computed delays.
2002-04-21 22:29:49 +00:00
steve
eb27dc8db3
Support signed integer division.
2002-04-14 18:41:34 +00:00
steve
de252965ac
Add the .ufunc statement.
2002-03-18 00:19:34 +00:00
steve
b906f4c0a1
Handle x in l-value of set/x
2002-01-26 02:08:07 +00:00
steve
a3fe753826
Account for negatives in cmp/s
2001-12-31 00:01:16 +00:00
steve
bf9a8f5021
Code rearrange. (Stephan Boettcher)
2001-11-06 03:07:21 +00:00
steve
82c0a2ebac
Add force/cassign/release/deassign support. (Stephan Boettcher)
2001-11-01 03:00:19 +00:00
steve
a75326e2e0
Rewrite the functor type to have fewer functor modes,
...
and use objects to manage the different types.
(Stephan Boettcher)
2001-10-31 04:27:46 +00:00
steve
4e92501864
VPI support for callback to return values.
2001-10-25 04:19:53 +00:00
steve
2adea8de48
Fix carry between works for %add instruction.
2001-10-23 03:49:13 +00:00
steve
56954356db
Catch and X division by 0.
2001-10-20 23:20:32 +00:00
steve
a3217db7b2
Add %div support (Anthony Bybell)
2001-10-16 01:26:54 +00:00
steve
2fcab15704
Forgot to propagate carry.
2001-10-14 17:36:18 +00:00
steve
cfbad49d33
Very wide multiplication (Anthony Bybell)
2001-10-14 16:36:43 +00:00
steve
b2b8b89cd8
Make configure detect malloc.h
2001-09-15 18:27:04 +00:00
steve
0c5ce9dfec
Redo of_SUBU in a more obvious algorithm, that
...
is not significantly slower. Also, clean up the
implementation of %mov from a constant.
Fix initial clearing of vector by vector_to_array
2001-09-07 23:29:28 +00:00
steve
c29e11ed36
Add the assign/x0 and set/x opcodes.
2001-08-26 22:59:32 +00:00
steve
c8135595be
signed/unsigned warnings?
2001-08-08 00:53:50 +00:00
steve
54140dadcf
Add the load/x instruction for bit selects.
2001-07-22 00:04:50 +00:00
steve
0bd6cf7b6f
Fix of_END when a middle thread ends.
2001-07-20 04:57:00 +00:00
steve
e773ccfe49
Add support for the delayx opcode.
2001-07-19 04:40:55 +00:00
steve
ab5cad18de
Relax limit on behavioral subtraction.
2001-07-04 04:57:10 +00:00
steve
baac893d22
Support non-const right shift (unsigned).
2001-06-30 21:07:26 +00:00
steve
a2d465804f
Add the %shiftl/i0 instruction.
2001-06-23 18:26:26 +00:00
steve
1f1bfd0eab
Infinitely wide behavioral add.
2001-06-22 00:03:05 +00:00
steve
4159c98c58
More behavioral unary reduction operators.
...
(Stephan Boettcher)
2001-06-18 01:09:32 +00:00
steve
4b82d26f5e
Add support for structural multiply in t-dll.
...
Add code generators and vvp support for both
structural and behavioral multiply.
2001-06-16 23:45:05 +00:00
steve
19251f7a79
Propagate strength-values instead of drive strengths.
2001-05-30 03:02:35 +00:00
steve
39ffe91230
Add behavioral modulus.
2001-05-24 04:20:10 +00:00
steve
e6f1510a40
Make vthread_put_but expand the space if needed.
2001-05-20 00:56:48 +00:00
steve
44a182d92c
VVP support for memories in expressions,
...
including general support for thread bit
vectors as system task parameters.
(Stephan Boettcher)
2001-05-10 00:26:53 +00:00
steve
914ad85e63
Add ivl and vvp.tgt support for memories in
...
expressions and l-values. (Stephan Boettcher)
2001-05-08 23:59:33 +00:00
steve
2e12635494
Add to the debugger the ability to view and
...
break on functors.
Add strengths to functors at compile time,
and Make functors pass their strengths as they
propagate their output.
2001-05-08 23:32:26 +00:00
steve
e328cf9fed
Add the %ix/get instruction. (Stephan Boettcher)
2001-05-06 17:42:22 +00:00
steve
de5930f7d8
Add the beginnings of an interactive debugger.
2001-05-05 23:55:46 +00:00
steve
a225fe304d
Document memory related opcodes,
...
parser uses numbv_s structures instead of the
symbv_s and a mess of unions,
Add the %is/sub instruction.
(Stephan Boettcher)
2001-05-02 23:16:50 +00:00
steve
06437b7fba
Support behavioral subtraction.
2001-05-02 01:57:25 +00:00
steve
28278d3c09
initialize is_schedule.
2001-05-02 01:37:38 +00:00
steve
2bf7653ab9
Implement %ix/load.
2001-05-01 05:00:02 +00:00
steve
8b4befd4fc
Add support for memory objects. (Stephan Boettcher)
2001-05-01 01:09:39 +00:00
steve
66f83f3b08
Working %disable and reap handling references from scheduler.
2001-04-21 00:34:39 +00:00
steve
57cd770650
%end complete the %join for the parent.
2001-04-18 05:04:19 +00:00
steve
9e8005f7b7
Put threads into scopes.
2001-04-18 04:21:23 +00:00
steve
41ce198a1f
add XOR support.
2001-04-15 16:37:48 +00:00
steve
05e30ed43b
Add support for behavioral xnor.
2001-04-15 04:07:56 +00:00
steve
e1a4b457c2
Initialize the waiting_for_event member.
2001-04-14 05:10:05 +00:00
steve
86e18226eb
More complete reap of all threads.
2001-04-13 03:55:18 +00:00
steve
898639d7bf
Get signed compares working correctly in vvp.
2001-04-05 01:12:27 +00:00
steve
9d2e22576e
support functor_set push for blocking assignment.
2001-04-03 03:18:34 +00:00
steve
bf30a0bc07
Add the reduction nor instruction.
2001-04-01 22:25:33 +00:00
steve
c4e438d4ba
Implement the less-then and %or instructions.
2001-04-01 07:22:08 +00:00
steve
5769bbe15e
Add the bitwise %and instruction.
2001-04-01 06:12:13 +00:00
steve
29a50a52ca
Implement %cmp/x and %cmp/z instructions.
2001-04-01 04:34:28 +00:00
steve
2f1d258acb
Add the jmp/1 instruction.
2001-03-31 17:36:02 +00:00
steve
4a058632b2
Add the ADD instrunction.
2001-03-31 01:59:58 +00:00
steve
386958f9a0
Add fork and join instructions.
2001-03-30 04:55:22 +00:00
steve
609d5fe727
Support named events as mode 2 functors.
2001-03-29 03:46:36 +00:00
steve
79ce94b585
Add the .event statement and the %wait instruction.
2001-03-26 04:00:39 +00:00
steve
c6088c8820
Add JMP0XZ and postpone net inputs when needed.
2001-03-25 03:54:26 +00:00
steve
c901945871
eq is x if either value of cmp/u has x or z.
2001-03-23 04:56:03 +00:00
steve
e71ea8c9de
Support set of functors from thread bits.
2001-03-23 01:53:46 +00:00
steve
b2a136e07e
Handle vectors pulled out of a constant bit.
2001-03-23 01:11:06 +00:00
steve
aacce5ef1b
implement %load, %inv, %jum/0 and %cmp/u
2001-03-22 05:08:00 +00:00
steve
52c7108782
Add support for variable vectors.
2001-03-20 06:16:23 +00:00
steve
f8c3b84f68
Add support for the vpiReset sim control.
2001-03-19 01:55:38 +00:00
steve
f2c1902984
Add structures for VPI support, and all the %vpi_call
...
instruction. Get linking of VPI modules to work.
2001-03-16 01:44:34 +00:00
steve
970ba895c9
Compact the vvp_code_s structure.
2001-03-11 23:06:49 +00:00
steve
cbc3be0304
Functor values and propagation.
2001-03-11 22:42:11 +00:00
steve
cb65ee5e00
Add the vvp engine to cvs.
2001-03-11 00:29:38 +00:00