Cary R
8cece424d1
In the context of a force/assign you cannot reuse a saved signal value.
...
This patch removes the overly optimistic lookaside save for a signal
that has been set (%set/v). This is incorrect because if a force or
assign are active the value will not be set as expected.
2008-04-09 21:10:11 -07:00
Cary R
f5418fe337
Catch unsupported bit/part select lvalue for assign/deassign.
...
This patch adds code to print a message when an assign/deassign is used
to drive/release a bit/part select.
2008-04-07 20:52:54 -07:00
Cary R
234648231b
Add bit/part select release for constants and add an error check.
...
This patch adds functionality to do a bit or part select release
when a constant value is forced to the net/register. It also adds an
error message when the user tries to force a signal to a bit/part
select. This is not currently handled by the run time, so is now
caught in the compiler (tgt-vvp). Where when this functionality is
needed, it will be easy to know what to do instead of trying to track
down some odd runtime functionality.
What this all means is that you can force a signal to an entire
signal or you can force a constant to any part of a signal (bit,
part or entire) and release any of the above. Technically the
release of a constant value does not have to match the force.
The runtime verifies that if you are releasing a signal driver
it is being done as a full release. I don't see an easy way to
check this in the compiler.
To fix the signal deficiencies we need to rework the force_link
code to allow multiple drivers and partial unlinking. Much of
this is in the runtime, but the %force/link operator may also
need to be changed like I did to the %release opcode.
2008-03-11 19:56:58 -07:00
Cary R
fe72d02cf6
Major rework of the ternary operator elaboration code.
...
This patch reworks much of the ternary code to short circuit when
possible and supports real values better. It adds a blend operator
for real values that returns 0.0 when the values differ and the value
when they match. This deviates slightly from the standard which
specifies that the value for reals is always 0.0 when the conditional
is 'bx. There are also a couple bug fixes.
These fixes have not been ported to continuous assignments yet.
Ternary operators used at compile time and in procedural assignments
should be complete (short circuit and support real values).
2008-03-08 19:45:13 -08:00
Larry Doolittle
39dd22ace4
Adjust unusual spacing
...
minimal changes, nearly eliminates oddball/inconsistent
source code use of whitespace
2008-02-19 09:15:03 -08:00
Cary R
2bab415626
Add message for unsupported release of part/bit select.
...
This patch adds a real error message instead of an assert when
someone attempts to release a part or bit select. I plan to work
on the real functionality soon.
2008-02-13 15:37:53 -08:00
Larry Doolittle
d9ac146b8f
Spelling fixes
...
only comments and documentation
some punctuation and capitalization for good measure
Changelogs are purposefully untouched
2008-01-29 20:24:24 -08:00
Cary R
0370f30b20
Support variable delay of a variable selected assignment.
...
This patch adds support for the following statement:
<vector>[<i>] <= #<delay> <value>.
It is a copy with slight modification of code from the next
else/if clause.
2008-01-15 20:33:36 -08:00
Cary R
21730ab228
Fix definition missing in include file and missing UINT64_FMT.
...
This fixes the missing include file definitions and fixes three
cases that needed to us UINT64_FMT.
2008-01-03 14:14:54 -08:00
Cary R
07c6e51a58
Rework ivl_file_table_* interface and fix most vvp/examples.
...
Rework the ivl_file_table_* interface to be more generic and easier
to use. Also all the vvp examples except for memory.vvp have been
fixed to run correctly with the current vvp. Someone with a bit more
experience will need to fix memory.vvp.
2008-01-03 14:13:22 -08:00
Cary R
77061faa5c
Add vpiFile and vpiLineNo for system functions.
...
Add the vpiFile and vpiLineNo properties to system functions.
Most other objects have stubs that return "N/A"/0. Interactive
functions (called from the debugger) use <interactive> for the
file name.
2008-01-01 17:27:03 -08:00
Cary R
51293b6e91
Fix/enhance array part select code.
...
This patch fixes/enhances the array part select code. It also
verifies that any lval array index in a continuous assignment
is a constant value. Also, %set/av now uses index register 1 as
described in the documentation (as a bit offset).
2007-11-07 20:52:56 -08:00
steve
80a2b05733
Do not assign to words constant-indexed out of range.
2007-02-27 05:13:34 +00:00
steve
6804732b9e
Spelling fixes (larry doolittle)
2007-02-26 19:49:48 +00:00
steve
d6969b719a
Prevent lost of width while calculation address.
2007-02-26 01:51:40 +00:00
steve
7d42c50253
Lookaside is invalid when working a new scope.
2007-02-02 04:48:49 +00:00
steve
c0954349e4
Fix bad lookaside references in vvp thread code generator.
2007-01-19 02:30:19 +00:00
steve
f5a7ee0736
Remove dead code related to memories.
2007-01-17 04:39:18 +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
ec23bb0367
Remove dead code.
2006-10-05 01:37:34 +00:00
steve
26e2e85ffa
Handle non-constant delays on indexed non-blocking assignments.
2006-10-05 01:23:53 +00:00
steve
fc0695beb6
Handle 64bit delay constants.
2006-08-08 05:11:37 +00:00
steve
707af782b3
Fix part selects in l-values.
2006-04-16 00:15:43 +00:00
steve
d434dd7296
Allow part selects of memory words in l-values.
2006-02-02 02:43:57 +00:00
steve
bab70ccbed
Handle indexed l-value to force.
2005-11-26 17:23:17 +00:00
steve
0e044d6684
More precise about r-value width of constants.
2005-11-26 00:35:42 +00:00
steve
3cdf655c79
force l-values do not support bit/part select.
2005-10-12 17:26:01 +00:00
steve
bb3f3c1f46
Remove obsolete vvp_memory_label function.
2005-10-11 18:30:50 +00:00
steve
672aa61ae7
More robust use of precalculated expressions, and
...
Separate lookaside for written variables that can
also be reused.
2005-09-17 01:01:00 +00:00
steve
9fd16575d9
Support bool expressions and compares handle them optimally.
2005-09-14 02:53:13 +00:00
steve
b9799cf6ec
Remove NetVariable and ivl_variable_t structures.
2005-07-11 16:56:50 +00:00
steve
75ad90534b
Generalize signals to carry types.
2005-07-07 16:22:49 +00:00
steve
290c604c62
Fix bit offsets when processing lval concatenation.
2005-06-15 01:33:33 +00:00
steve
cd14ee77ae
Add the assign_v0_d instruction.
2005-06-14 01:44:09 +00:00
steve
2f7ec71a78
Support %force/link
2005-06-02 16:03:47 +00:00
steve
015d280c6a
Handle assignments to part-select l-values.
2005-05-24 02:31:18 +00:00
steve
82be4ab189
Detect bit selects that need special handling.
2005-05-17 20:55:42 +00:00
steve
5a2dd3393f
Skip assign if index is invalid.
2005-05-09 00:38:12 +00:00
steve
48aa0f0075
Better handle assignment to bit/part select.
2005-05-07 03:16:31 +00:00
steve
df271c9fa3
Link signals that are source of procedural continuous assign.
2005-05-01 22:04:12 +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
0fb1fd36ee
Handle memory words in l-value concatenations.
2005-03-05 05:47:42 +00:00
steve
85286cc086
Rearrange how memories are supported as vvp_vector4 arrays.
2005-03-03 04:33:10 +00:00
steve
2fcaac4060
Support constant part select writes to l-values, and large part select reads from signals.
2005-02-15 07:12:55 +00:00
steve
4051f7d986
Handle bitmux lvalues for constant r-values.
2005-02-14 05:00:11 +00:00
steve
aaf35ab1a9
Handle bit selects in l-values to assignments.
2005-02-14 01:51:39 +00:00
steve
7250337941
Integrate fixes from 0.8 branch.
2005-01-28 19:39:03 +00:00
steve
e11ac0b1d8
Use %set/v to trigger events.
2004-12-18 18:53:26 +00:00
steve
59bac26f4f
Implement release functionality.
2004-12-17 04:46:40 +00:00
steve
ffedf32476
cassign and deassign handle concatenated l-values.
2004-12-11 05:43:30 +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
896f1b0de1
Generate code for nb assign to reals.
2004-05-19 03:25:42 +00:00
steve
e56b77a43f
Add support for wait on list of named events.
2003-12-03 02:46:23 +00:00
steve
5496a38499
vvp_signal_label does not return a unique string.
2003-10-25 02:07:57 +00:00
steve
cee34f8a8a
Support time0 resolution of combinational threads.
2003-09-04 20:28:05 +00:00
steve
d4b7c835de
All the threads of a named fork go into sub-scope.
2003-07-29 05:12:10 +00:00
steve
4b20ffc829
Use set/x0/x if the target vector is too wide for set/x0.
2003-05-26 04:45:37 +00:00
steve
cd7a313f56
Account for nested fork scopes in disable.
2003-05-17 04:38:19 +00:00
steve
2a29c4fd62
Support real expressions in case statements.
2003-05-14 05:26:41 +00:00
steve
f354c43941
Use hash code for scope labels.
2003-03-25 02:15:48 +00:00
steve
06d5c8135c
Allow real-valued vpi functions to have arguments.
2003-03-15 04:45:18 +00:00
steve
0bf901e9bb
Use number for event labels.
2003-03-06 01:17:46 +00:00
steve
970c4950f4
Merge vpi_call and vpi_func draw functions.
2003-02-28 20:21:13 +00:00
steve
514bb4a6a9
Handle assign of real values to vectors.
2003-02-27 20:38:12 +00:00
steve
ce489d8d84
Allow $display of $simtime.
2003-02-03 01:09:20 +00:00
steve
04ada23119
Support in various contexts the $realtime
...
system task.
2003-01-27 00:14:37 +00:00
steve
46253ed873
Rework expression parsing and elaboration to
...
accommodate real/realtime values and expressions.
2003-01-26 21:15:58 +00:00
steve
03afbf157b
%set/x0 instruction to support bounds checking.
2002-11-21 22:43:13 +00:00
steve
91580d1fcc
Generate unique labels for force functors.
2002-11-17 18:31:09 +00:00
steve
07e49e215e
Use the vectorized %assign where appropriate.
2002-11-08 05:00:31 +00:00
steve
db899bd1b5
Use Vector %set to set constants in variables.
2002-11-07 05:19:55 +00:00
steve
c6dcc38fe0
Vectorize load from REG variables.
2002-11-07 03:12:17 +00:00
steve
703ad04067
Allow expression lookaside map to spam statements.
2002-09-27 20:24:42 +00:00
steve
778e96330d
Add thread expression lookaside map.
2002-09-27 16:33:34 +00:00
steve
6f23fa61ac
Allow results in register bits 47 in certain cases.
2002-09-24 04:20:32 +00:00
steve
28725d0d74
Optimize ==1 when in context where x vs z doesnt matter.
2002-09-13 03:12:50 +00:00
steve
c9b4b66af2
Watch for x indices in l-value of non-blocking assignments.
2002-09-01 00:19:35 +00:00
steve
7b6678b2a1
Fix reverse bit ordered bit select in continuous assignment.
2002-08-31 03:48:50 +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
8ab2ec6f86
Allow release to handle removal of target net.
2002-08-19 00:06:11 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
cc74d2a6b0
Add force to nets.
2002-08-07 00:54:39 +00:00
steve
89314d4772
Do not use hierarchical names of memories to
...
generate vvp labels. -tdll target does not
used hierarchical name string to look up the
memory objects in the design.
2002-08-04 18:28:14 +00:00
steve
41f7ecacfc
Eliminate use of ivl_signal_name for signal labels.
2002-08-03 22:30:48 +00:00
steve
24a2487c18
Generate %cmpi/u where appropriate.
2002-06-02 18:57:17 +00:00
steve
422754f36f
Support carrying the scope of named begin-end
...
blocks down to the code generator, and have
the vvp code generator use that to support disable.
2002-05-27 00:08:45 +00:00
steve
d482da4803
Reduce the while loop expression if needed.
2002-04-22 02:41:30 +00:00
steve
5882c6a481
Redo handling of assignment internal delays.
...
Leave it possible for them to be calculated
at run time.
2002-04-21 22:31:02 +00:00
steve
f03ec88c2a
Handle empty true case of conditional statements.
2002-04-14 19:19:21 +00:00
steve
84bf0cee59
Vector constants to vpi_call can have sign.
2002-04-14 03:54:40 +00:00
steve
3275d1f252
Support signed expressions through to VPI.
2002-04-14 02:56:19 +00:00
steve
5840368f2d
Handle certain special cases of stime.
2002-01-11 05:23:05 +00:00
steve
2d3e85d941
Make sure fork labels are globally unique.
2001-12-05 05:41:20 +00:00
steve
6e0b77a8da
Generate force code for variable l-values.
2001-11-18 01:28:18 +00:00
steve
08f0f5a1f7
DLL target support for force and release.
2001-11-14 03:28:49 +00:00
steve
560c003e03
make fork label into complete statemnt.
2001-11-01 19:31:40 +00:00
steve
5d20dd63ec
Generate code for deassign and cassign.
2001-11-01 04:26:57 +00:00
steve
83d3a60d5c
Add trailing ; to fork-join out labels.
2001-10-19 23:52:36 +00:00
steve
b2b8b89cd8
Make configure detect malloc.h
2001-09-15 18:27:04 +00:00
steve
a9e54e7553
dead comments.
2001-09-01 00:58:16 +00:00
steve
b8be5e80cd
Generate code for l-value bit selects.
2001-08-26 23:00:13 +00:00
steve
e35ed6e91c
Change the NetAssign_ class to refer to the signal
...
instead of link into the netlist. This is faster
and uses less space. Make the NetAssignNB carry
the delays instead of the NetAssign_ lval objects.
Change the vvp code generator to support multiple
l-values, i.e. concatenations of part selects.
2001-08-25 23:50:02 +00:00
steve
15c2b0317d
statement ends after while loop labels.
2001-08-16 03:45:17 +00:00
steve
1be77d68ce
Evaluate part selects when passed to system tasks.
2001-07-28 01:18:07 +00:00
steve
cd8e491028
Support calculated delays in vvp.tgt.
2001-07-19 04:55:06 +00:00
steve
45d4117c02
Handle null parameters to system tasks.
2001-06-29 02:41:05 +00:00
steve
96d04bb5a0
Handle short inputs to tasks. (Stephan Boettcher)
2001-06-23 00:30:42 +00:00
steve
82e8e51736
1. Logic with more than 4 inputs
...
2. Id and name mangling
3. A memory leak in draw_net_in_scope()
(Stephan Boettcher)
2001-06-18 03:10:34 +00:00
steve
e68ba4c73a
Attach noops to case labels.
2001-05-24 04:31:00 +00:00
steve
0872ad34cf
Behavioral ternary operators for vvp.
2001-05-17 04:37:02 +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
b5e0f46229
Generate null statements for conditional labels.
2001-05-03 04:55:28 +00:00
steve
57b0d9691e
Right shift by constant.
2001-04-21 03:26:23 +00:00
steve
c97692d715
Generate code for disable.
2001-04-21 00:55:46 +00:00
steve
39bcdfb7b4
Use the new %fork syntax.
2001-04-18 05:12:03 +00:00
steve
70aeb980d8
vvp support for <= with internal delay.
2001-04-15 02:58:11 +00:00
steve
0550287658
Generate vvp code for functions with ports.
2001-04-06 02:28:02 +00:00
steve
82947a9343
Generate vvp code for the repeat statement.
2001-04-05 03:20:57 +00:00
steve
0653f859bc
Support forever loops in the tgt-vvp target.
2001-04-04 04:50:35 +00:00
steve
1b2a6f8bed
Fix broken look scanning down bits of number.
2001-04-04 04:28:41 +00:00
steve
c6cf665c4a
emit vpi parameters values as vectors.
2001-04-04 04:14:09 +00:00
steve
19c84ff9a2
Support non-blocking assignments.
2001-04-03 04:50:37 +00:00
steve
3ffb3c7011
thread bit allocation leak in assign.
2001-04-02 04:09:20 +00:00
steve
f40d006c26
Generate code for task calls.
2001-04-02 02:28:12 +00:00
steve
141808b787
Scopes and numbers as vpi_call parameters.
2001-04-02 00:27:53 +00:00
steve
2443c655f2
Generate code for while statements.
2001-04-01 06:49:04 +00:00
steve
4352ce6753
Generate code for casex and casez
2001-04-01 04:34:59 +00:00
steve
0f6eea7024
Handle $time as system task parameter.
2001-03-31 19:08:22 +00:00
steve
97dd559fca
Clear results of condition expressions.
2001-03-31 19:02:13 +00:00
steve
b3a3b888d8
Generate vvp code for case statements.
2001-03-31 17:36:38 +00:00
steve
b36b6d0ca0
Generate code for fork/join statements.
2001-03-30 05:49:52 +00:00
steve
966f7a4bff
Behavioral trigger statements.
2001-03-29 03:47:38 +00:00
steve
a4e528f0c3
Add the ivl_event_t to ivl_target, and use that to generate
...
.event statements in vvp way ahead of the thread that uses it.
2001-03-28 06:07:39 +00:00
steve
61e3eed49c
Generate code for simple @ statements.
2001-03-27 06:27:40 +00:00
steve
afb8e285db
Support error code from target_t::end_design method.
2001-03-27 03:31:06 +00:00
steve
5d051ffbde
Skip true clause if condition ix 0, x or z
2001-03-25 03:53:24 +00:00
steve
9ec5fa972e
Draw signal inputs to system tasks.
2001-03-25 03:24:10 +00:00
steve
034cdae445
assignments with non-trival r-values.
2001-03-23 01:54:32 +00:00
steve
565088160e
Geneate code for conditional statements.
2001-03-22 05:06:21 +00:00
steve
27e717839a
Scan the scopes of a design, and draw behavioral
...
blocking assignments of constants to vectors.
2001-03-21 01:49:43 +00:00
steve
e8518c5056
Put processes in the proper scope.
2001-03-20 01:44:13 +00:00
steve
1563643c92
Add the tgt-vvp code generator target.
2001-03-19 01:20:46 +00:00