Stephen Williams
3a300725de
Output delays for part select nets.
...
Implement net delays for part select devices.
2008-02-06 18:37:42 -08:00
Cary R
85229a6cdc
Add unsigned bit based power to continuous assignments.
...
This patch adds the power operator for unsigned bit based values
in a continuous assignment. It also refactors the power code for
normal expressions and continuous assignments.
2008-02-06 14:38:16 -08:00
Cary R
47d1d981d5
Mangle the scope for user functions in a continuous assignment.
...
User functions called in a continuous assignment were not getting
their scope mangled. This is needed to handle arrayed instances and
possibly other things.
2008-02-06 14:28:08 -08:00
Cary R
e82293c981
Add unsigned bit based power support to normal expressions.
...
This patch adds bit based power support to normal expressions.
It also pushes the constant unsigned bit based calculation to
the runtime until the bit based method can be copied to the
compiler. Continuous assignments also need to use this type
of calculation.
2008-02-05 15:33:51 -08:00
Cary R
40064b3181
Catch that we do not currently support unsigned bit based power.
...
This patch adds a check and prints a warning message when the power
operator is used with unsigned bit based values. It also fixes a couple
of typos and adds an asserts if the above power operator happens to
get to the tgt-vvp back end.
2008-02-04 13:35:44 -08:00
Cary R
1595ae79fd
Add support for real power (**) in normal expressions.
...
This patch adds support for the real power (**) operator in
normal expressions.
2008-01-31 19:54:37 -08:00
Cary R
f049426f25
Add support for real % in a continuous assignment.
...
This patch adds conditional support (2001X) for the real modulus
operator in a continuous assignment.
2008-01-31 16:56:11 -08:00
Cary R
5e8a1bd8cc
Add power operator (**) for real values in a continuous assignment.
...
This patch adds the power operator for real values in a continuous
assignment.
2008-01-31 16:48:52 -08:00
Cary R
4c5481f254
Add delays for shifts, concatenation and replication in a CA.
...
This patch add delays in continuous assignments for the shift operators,
concatenations and replications. It also reports an error if the user
attempts to take the modulus of a real value.
This patch uncovers a couple other problems in the system. I am trying
to fix one of them. I will report the other problem shortly.
2008-01-31 16:39:12 -08:00
Cary R
1609de6ed9
Fix some bit based delays in continuous assignments.
...
This patch fixes some of the delays in bit based continuous
assignments (unary -, unary +constants, string constants,
reduction operators and user functions).
Use draw_lpm_output_delay() in all functions that need it.
2008-01-29 20:27: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
Stephen Williams
685095b229
Support delay of user function output
...
When used in continuous assignments, user defined functions may have
delayed output. Handle that by generating the proper .delay node when
needed to delay the output of a .ufunc node.
2008-01-28 21:29:03 -08:00
Cary R
10d25d2b88
Support delays for all operators in a continuous assignments.
...
Previously only the logical operators (~, &, |, ^, etc.) supported a
delayed value in a continuous assignment. This patch should extend this
to all operators. An extensive check of real values was done. The same
will be done shortly for bit based nets.
Checks for constructs currently unsupported in continuous assignments
provide a more explicit message (** operator, real user functions,
{!, && and ||} operators with a real argument).
2008-01-21 18:21:31 -08:00
Stephen Williams
32d3e5ac46
Better formatting of Cr<> label for real valued drivers.
...
Rework the encoding of a real value in the Cr<> label to be similar to
the format used by the %loadi/wr instruction. This mantissa-expoment
format better carries all the bits of the desired real value with
plenty of fidelity and range.
2008-01-19 16:27:09 -08:00
Cary R
52a346ab38
Print real constant value comment with %g
...
The comment that shows the intended value for real constants was
being printed with a %f. This is wrong for large or small values.
This patch changes the %f to a %g to get more consistent results.
2008-01-17 12:31:08 -08:00
Stephen Williams
e1bf2ec019
Merge branch 'master' of ssh://steve-icarus@icarus.com/home/u/icarus/steve/git/verilog
2008-01-16 16:55:26 -08:00
Cary R
ded0fbe5ef
Fix user functions with right shift argument.
...
A right shift may generate extra bits to preserve the proper shift
characteristic. This patch replaces the assert that was forcing the
input vector to not be greater than the input port width with code
to only select the required lower bits from the vector if it is
larger than the input port.
2008-01-15 21:01:16 -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
1ff31db2cc
Add real comparisons in continuous assignments.
...
This patch adds real comparisons in continuous assignments.
It also converts bit based constants to real values when needed
by the comparisons.
2008-01-15 19:48:26 -08:00
Cary R
e46f8220f3
Evaluate non-immediate signal selection.
...
This patch adds code to treat non-immediate signal selection the
same as the default logic evaluation
2008-01-14 19:55:14 -08:00
Cary R
7ff342f4da
Fix type warning in tgt-vvp/eval_expr.c
...
In a previous patch I missed this type inconsistency.
2008-01-14 19:51:38 -08:00
Stephen Williams
190aefcf89
Use inttypes.h to get uint64_t print format string
...
Code generators should not include _pli_types.h to get standard int
types and strings. Use the inttypes.h header file instead.
2008-01-14 09:53:20 -08:00
Stephen Williams
cdfe3a8289
Use inttypes.h to get uint64_t print format string
...
Code generators should not include _pli_types.h to get standard int
types and strings. Use the inttypes.h header file instead.
2008-01-14 09:47:48 -08:00
Cary R
c899a6a52e
Add %load/avp0 opcode and fix %load/vp0.
...
This patch adds a new opcode %load/avp0 that is used to load a
word from an array and add a value to it. %load/vp0 was
changed/fixed to do the summation at the result width not the
vector width. This allows small vectors to index large arrays with
an offset. A few errors in the opcodes.txt file were also fixed.
2008-01-13 19:47:49 -08:00
Stephen Williams
f944d31353
Improved assertion on signal arrays.
...
Use ivl_expr_file() information to improve a signal assert message.
2008-01-09 14:24:30 -08:00
Larry Doolittle
e6ea5cd409
More lint removal
...
tgt-vvp/eval_expr.c uninitialized variables
vpi/sys_display.c uninitialized variables
vvp/vpi_priv.cc deprecated string constant usage
vvp/vpi_vthr_vector.cc deprecated string constant usage
the last entry invokes vpip_name_string() and uses const char *
in the same way as the other 9 callers in vvp/*.cc, the only
difference is that the argument is static instead of computed.
2008-01-04 16:12:33 -08:00
Cary R
e01e7b1280
Add arith/mult.r and arith/sum.r
...
This patch adds the missing real multiplication and summation operators
and the code to generate them when needed.
2008-01-04 15:41:01 -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
c866be421e
Add vpiFile and vpiLineNo to .sfunc (system function in cont. assign)
...
This patch add the vpiFile and vpiLineNo properties to system
functions that are called from continuous assignments.
2008-01-01 17:33:08 -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
Stephen Williams
fea1febf54
Generate explicit locals in the vvp target.
...
With this change, local symbols are not emitted in the vvp target,
but are marked as local. When thus marked, the vvp run time does not
offfer any VPI access and the signals (net or var) are effectively
invisible.
2007-12-27 18:34:12 -07:00
Stephen Williams
58d3d2f265
Better track signals marked local.
2007-12-27 16:47:01 -07:00
Stephen Williams
9235ec665b
Correct bit widths and pad of certain part selects
...
Zero-based part selects are a special case that is handled with
optimized code. Properly handle the part select width to get the
desired padding.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-12-26 11:22:33 -05:00
Stephen Williams
1506a0bf8c
Pad type-punned user functions properly
...
When user defined function calls are withing a $signed, the result
needs to be properly padded. To make this work, handle padding of
a function result exactly type the padding of a signal vector. this
is natural in that the function return value *is* in a signal vector.
This fixes pr1841300.
2007-12-15 22:05:56 -08:00
Stephen Williams
8d9998c44e
Minor optimization of partial load/v
...
When loading a part select from the least significant bits, it is
OK to use the %load/v instruction to strip the high bits off. This
allows the zero-based part select to work in one step, without
loading excess bits.
2007-12-09 17:28:49 -08:00
Stephen Williams
bee4772ac8
Fix optimization of base==0 part select
...
Some patch caused a variable that held the constant base of a part
select to become unassigned. This led to unexplained failures to part
select a signal. Fix by properly detecting the case of a constant base
of 0 for the part select.
2007-12-09 17:00:32 -08:00
Stephen Williams
0fbdcbeb02
Minor cleanup.
...
Minor cleanup of some commented out code, and some minor simplification
of the subarray code.
2007-12-08 21:10:58 -08:00
Stephen Williams
64936d07e5
Add %ix/getv instruction
...
The %ix/getv instruction loads an integer register directly from
a signal vector. This is an optimization that an index register
is loaded from an expression is only a signal. It avoids the thread
vector space.
2007-12-07 13:12:19 -08:00
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
Cary R
ca49d7efa4
Some indexed array selections need to be evaluated.
...
Array selections that are not constant need to be evaluated for
task/function calls.
2007-11-18 19:12:39 -08:00
Stephen Williams
0456a1b339
Use movi to load string values.
...
String values are known to be 2-value bits, so they are natural
candidates for using the movi instruction to load the value in
far fewer instructions. With this patch, up to 16bits (two bytes)
at a time can be loaded per instruction.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-11-13 21:14:07 -08:00
Cary R
4356f9c478
Process expression strings with octal constants correctly (tgt-vvp)
...
tgt-vvp was taking strings and processing them as is, but the strings
could contain octal constants. These constants needed to be converted
to binary form before they could be turned into a bit pattern.
2007-11-13 20:20:16 -08:00
Cary R
9c8b63110d
CMOS is strength aware
...
CMOS gates like NMOS and PMOS have a strength aware output.
They were missed when the NMOS and PMOS were fixed. "cmos.v"
will now pass in the test suite.
2007-11-13 19:57:02 -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
Stephen Williams
2fac019d9d
modpath nodes need vpi expression handles
...
Generate the code that attaches the VPI handle of the source and
destination to the modpath object.
2007-11-05 19:59:27 -08:00
Stephen Williams
5c69e243ac
Put modpaths in correct scope.
...
Modpaths need to be in the proper scope in order to be available to
vpi functions. The code generator manages that by writing the modpath
records with scope switch functions. Batch the modpath records at the
end of the structural stuff so that the scope switching doesn't cause
trouble.
Also seperate the modpath code into its own source file.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-31 21:45:34 -07:00
Cary R
54aae2c1c2
Fix number to real mask generation
...
The << operator may not be defined when the RHS is greater than or
equal to the LHS width. To work around the problem the mask is
incrementally generated.
2007-10-19 17:10:34 -07:00
Stephen Williams
230d0f24de
Reformulate number-to-real on vvp code generator
...
There have been reports in the field of number-to-real conversions
doing bad things with the calculated mantissa. This patch eliminates
a opssible portability problem by reworking the negating of negative
mantissa values.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-18 21:09:12 -07:00
Stephen Williams
08028177fe
Correct elaboration of network constants.
...
Constant propagation incorrectly elided an entire constant net node
if only the LSB of the driven vector was HiZ. This caused the entire
vector to look like HiZ. Also, the code generator for writing the
constant values missed bits.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-05 20:31:51 -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
Cary R
3258b7726b
Pass local scope precision from compiler to vvp/etc.
...
This patch adds ivl_scope_time_precision() to the compiler which can
be used to extract the local scope precision. tgt-stub and tgt-vvp
have been modified to use this new function and output a value that
is appropriate. The vvp runtime has been altered to use this new
data which is accessed with the vpip_time_precision_from_handle()
function. vpiTimePrecision uses this function to return the correct
precision.
2007-09-28 15:08:02 -07:00
Stephen Williams
14c0cfd3b1
bufif and nmos/pmos are strength aware
...
The outputs to bufif and nmos/pmos devices are always strength-aware,
so should have their outputs connected to a net8 device.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-09-22 21:53:55 -07:00
Cary R
7c852aa075
Add cmos/rcmos primitives.
...
This patch adds the cmos and rcmos primitives.
2007-09-06 18:46:22 -07:00
Stephen Williams
88dea0c318
Remove restriction on size of constants
...
Constant strings are now formed in dynamically allocated memory
instead of a fixed array.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-06-30 20:27:08 -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
Stephen Williams
ed698deeaa
Add support for collapsed/aliased arrays.
...
Arrays of nets that have all their words collapsed together can become
a collapsed array as a whole. Add support for this case in the vvp code
generator and runtime.
2007-06-24 18:17:37 -07: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
67b1eee7ce
Better configuration messages (Alan Feldstein)
2007-05-16 23:59:12 +00:00
steve
9931e4c013
Finish up part select of array words.
2007-04-14 04:43:01 +00:00
steve
ff7625cd9c
nexus vectors of VT_BOOL objects. (ravi@bluespec)
2007-04-12 04:40:37 +00:00
steve
fbc731d19e
Allow nexus aliases to array words.
2007-04-10 03:40:04 +00:00
steve
5047a3add3
variable arrays generated without writing a record for each word.
2007-04-10 01:26:15 +00:00
steve
d883979fd8
Seperate arrayness from word count
2007-04-02 01:12:34 +00:00
steve
ea74940be4
Fix that save expression lookaside always clears cached variable values.
2007-04-01 05:26:17 +00:00
steve
611d2c81b3
Spelling fixes from Larry
2007-03-22 16:08:14 +00:00
steve
96443f1338
Clear lookaside even if source bit is a constant.
2007-03-20 04:26:56 +00:00
steve
fc9a90c9e0
Add support for edge sensitive spec paths.
2007-03-02 06:13:22 +00:00
steve
243cf94165
Add support for conditional specify delay paths.
2007-03-01 06:19:38 +00: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
1f54f128c1
Handle unary minus of real valued expressions.
2007-02-20 05:58:36 +00:00
steve
45307f6144
Handle type of ternary expressions properly.
2007-02-14 05:59:46 +00:00
steve
92c36f152d
Treat BOOL and LOGIC the same according to VPI functions.
2007-02-14 05:59:24 +00:00
steve
521f66f040
Get padding right when loading array word into big vector.
2007-02-12 04:37:58 +00:00
steve
3fd80b09f0
Administrative/Makefile fixes, mostly for windows. (Cary R.)
2007-02-06 05:07:31 +00:00
steve
2b3acfb344
Expression lookaside cannot hold complex expressions
2007-02-06 04:43:53 +00:00
steve
7d42c50253
Lookaside is invalid when working a new scope.
2007-02-02 04:48:49 +00:00
steve
05efaa6427
Treat VPI argument array with constant index specially.
2007-01-30 05:28:23 +00:00
steve
f07257067a
Handle real constants in vector expressions.
2007-01-19 05:24:53 +00:00
steve
c0954349e4
Fix bad lookaside references in vvp thread code generator.
2007-01-19 02:30:19 +00:00
steve
e89b9fc25e
Do not match array words in expression lookaside.
2007-01-18 00:59:48 +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
d6f98599f8
Do not intertangle modpaths due to references to input nets.
2006-11-23 22:42:48 +00:00
steve
64b4e2fa01
Get the .event input from the signal instead of the signal input.
2006-11-22 06:09:08 +00:00
steve
841378426f
Updates for Cygwin portability (pr1585922)
2006-10-30 22:45:36 +00:00
steve
0e102a94b2
Fix rendering of signed numbers in real expressions.
2006-10-10 23:54:28 +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
549f226c6e
Modpath is input to net, draw .modpath to account.
2006-10-01 23:51:15 +00:00
steve
0edb5a7547
Basic support for specify timing.
2006-09-23 04:57:19 +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
06d6ac4b33
Fix/implement signed right shift.
2006-07-30 02:51:35 +00:00
steve
80f30be9d0
Add support for system functions in continuous assignments.
2006-06-18 04:15:50 +00:00
steve
46d86ad276
Get tail counts right in nested concatenations.
2006-04-22 04:27:36 +00:00
steve
707af782b3
Fix part selects in l-values.
2006-04-16 00:15:43 +00:00
steve
f001d0001a
Add support for generate loops w/ wires and gates.
2006-04-10 00:37:42 +00:00
steve
f4a44df2cc
Support more parameter syntax.
2006-03-18 22:53:38 +00:00
steve
8ff70410ab
Handle multiple part/bi devices connected together.
2006-03-15 05:52:20 +00:00
steve
6f46d12e07
Add support for logic parameters.
2006-03-08 05:29:42 +00:00
steve
d434dd7296
Allow part selects of memory words in l-values.
2006-02-02 02:43:57 +00:00
steve
58f182a159
Node delays can be more general expressions in structural contexts.
2006-01-02 05:33:19 +00:00
steve
e9bf00dff6
Pad part selects
2005-12-22 15:42:22 +00:00
steve
5cf64dfa70
Include stdint.h if it is present.
2005-12-07 03:43:30 +00:00
steve
4f7e7a2296
Some systems donot have stding.h?
2005-12-05 21:20:55 +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
35951510c5
Put vec8 and vec4 nets into seperate net classes.
2005-11-25 17:55:26 +00:00
steve
9c8c541f5d
MUX nodes get inputs from nets, not from net inputs,
...
Detect and draw alias nodes to reduce net size and
handle force confusion.
2005-10-12 17:26:17 +00:00
steve
3cdf655c79
force l-values do not support bit/part select.
2005-10-12 17:26:01 +00:00
steve
c75f0a930e
Remove the $ from signal labels. They do not help.
2005-10-11 18:54:10 +00:00
steve
bb3f3c1f46
Remove obsolete vvp_memory_label function.
2005-10-11 18:30:50 +00:00
steve
fb22bcc96b
Remove dead dram_input_from_net and lpm_inputs_a_b
2005-10-10 04:16:13 +00:00
steve
bf8b085159
Clean up compiler warnings.
2005-09-20 18:34:01 +00:00
steve
be73be8c98
Spelling patches from Larry.
2005-09-19 21:45:35 +00:00
steve
d22d88923d
Fix warnings about uninitialized variables.
2005-09-19 20:18:20 +00:00
steve
2729d6cd2e
Include vvp_config.h instead of config.h
2005-09-19 20:17:59 +00:00
steve
c4d8ab8509
Improve loading of part selects when easy.
2005-09-17 04:01:32 +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
19a1ae8d4f
Preserve precalculated expressions when possible.
2005-09-15 02:50:13 +00:00
steve
14d79a655e
Better reuse of IVL_EX_SELECT expressions.
2005-09-15 02:49:47 +00:00
steve
9fd16575d9
Support bool expressions and compares handle them optimally.
2005-09-14 02:53:13 +00:00
steve
c39976fbf1
Generate code to handle real valued muxes.
2005-09-01 04:11:37 +00:00
steve
dac11c2468
Handle synthesis of fully packed case statements.
2005-08-27 04:32:08 +00:00
steve
4a8be3db9c
Implement bi-directional part selects.
2005-08-06 17:58:16 +00:00
steve
5bfdd52391
Handle functions with real values.
2005-07-13 04:52:31 +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
66a579dd67
Handle signed display of unsigned signals.
2005-06-18 15:55:21 +00:00
steve
4cc421b3b7
Make functors know their own width.
2005-06-17 03:46:52 +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
739a1839ed
Do sign extension of structuran nets.
2005-05-24 01:44:27 +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
7dd0d255a6
Add support for variable part select.
2005-05-08 23:40:14 +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
365cfedd55
Update DFF support to new data flow.
2005-04-24 23:44:01 +00:00
steve
65c7ec00e7
Rework NetRamDq and IVL_LPM_RAM nodes.
2005-04-06 05:29:08 +00:00
steve
d62661257a
Generate the right coes for unconnected UDP port.
2005-04-04 05:29:53 +00:00
steve
d8a456bd67
The indexed set can write a vector, not just a bit.
2005-03-22 05:18:34 +00:00
steve
ca488dff4e
Handle LPM shifts.
2005-03-19 06:23:49 +00:00
steve
23925b636e
vvp.conf files are generated.
2005-03-18 02:57:23 +00:00
steve
53da6e9a33
Add support for LPM_UFUNC user defined functions.
2005-03-18 02:56:03 +00:00
steve
f556452403
Handle function/task port vectors.
2005-03-12 23:45:33 +00:00
steve
1c5b4881d7
Handle case inequality in netlists.
2005-03-09 05:52:03 +00:00
steve
53af2949b4
Generate code for new form of memory ports.
2005-03-09 04:53:40 +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
1d7235b4f1
Replace supply nets with wires connected to pullup/down supply devices.
2005-02-13 01:15:07 +00:00
steve
d4eb4d38bc
Implement a-b muxes as vector devices
2005-02-12 22:54:29 +00:00
steve
eca4f4fa97
Draw C4 and C8 constants to account for strength.
2005-02-12 06:25:15 +00:00
steve
1979fca239
Get the C4 width right for undriven nexa.
2005-02-10 04:55:45 +00:00
steve
ee5bb5fcaf
Add the NetRepeat node, and code generator support.
2005-02-08 00:12:36 +00:00
steve
e74127e1fc
Support .concat with arbitrary input counts.
2005-02-04 05:13:57 +00:00
steve
97f83ffbe3
laborate reduction gates into LPM_RED_ nodes.
2005-02-03 04:56:20 +00:00
steve
7250337941
Integrate fixes from 0.8 branch.
2005-01-28 19:39:03 +00:00
steve
6be34bba4d
Special handling of constant shift 0.
2005-01-28 05:37:48 +00:00
steve
dfb7c7ba6f
Remove the NetEBitSel and combine all bit/part select
...
behavior into the NetESelect node and IVL_EX_SELECT
ivl_target expression type.
2005-01-24 05:28:30 +00:00
steve
edeb9d8eca
Part selects are done in the compiler, not here.
2005-01-24 05:08:02 +00:00
steve
a4710f375e
LPM_CMP_NE/EQ are vectored devices.
2005-01-22 16:22:13 +00:00
steve
e28636776a
Change case compare from logic to an LPM node.
2005-01-22 01:06:55 +00:00
steve
bf6a5d0f50
Implement LPM_COMPARE nodes as two-input vector functors.
2005-01-16 04:20:32 +00:00
steve
fcaaec0464
More robust input code generation for LPM_ADD.
2005-01-12 05:31:50 +00:00
steve
8c18c9152d
More complete drawing of concat inputs.
2005-01-12 03:16:35 +00:00
steve
399dfe5c44
Handle concatenations with up to 16 inputs.
2005-01-10 01:42:59 +00:00
steve
9e94afe399
Use PartSelect/PV and VP to handle part selects through ports.
2005-01-09 20:16:00 +00:00
steve
83423c978b
Generate code for the .concat functors, from NetConcat objects.
...
Generate C<> constants of correct widths for functor arguments.
2004-12-29 23:52:09 +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
e827f8f8c1
Cleanup and factoring of autoconf.
2004-09-27 22:34:10 +00:00
steve
965d928430
More carefull about eliding bufzs that carry strength.
2004-09-25 21:04:25 +00:00
steve
5e627c9adc
Compile cleanup of C code.
2004-09-10 23:13:05 +00:00
steve
a8ee786036
Relaxed width constraint on pad_expression output.
2004-09-10 00:14:31 +00:00
steve
491df9c327
Watch out for real compared to constant. Handle as real.
2004-06-30 03:07:32 +00:00
steve
3dbc07f34d
Implement signed divide and signed right shift in nets.
2004-06-30 02:16:26 +00:00
steve
9ba1177a4d
Generate signed modulus if appropriate.
2004-06-19 16:17:37 +00:00
steve
b043445c80
Generate .cmp/eq nodes instead of sea of gates.
2004-06-16 23:33:42 +00:00
steve
896f1b0de1
Generate code for nb assign to reals.
2004-05-19 03:25:42 +00:00
steve
081a6a4088
Cleanup configure detection of win32.
2004-02-15 03:17:36 +00:00
steve
8188c4c690
Makefile cleanup.
2004-02-10 19:25:00 +00:00
steve
a436bfc711
Include from current directory.
2004-01-28 23:54:10 +00:00
steve
c2ab27541f
Make sure I get ivl_target.h from this source.
2004-01-26 23:31:57 +00:00
steve
d98720af4d
Isolate configure from containing config.h
2004-01-20 21:00:47 +00:00
steve
8aca824c0f
Further unify the configure.in scripts.
2004-01-15 20:52:32 +00:00
steve
59ac435c71
Fix various unsigned compare warnings.
2003-12-19 01:27:10 +00:00
steve
ae3198b505
Install target gets vvp.conf that is built, not from srcdir.
2003-12-12 19:58:40 +00:00
steve
df968687e4
Generate VVP_EXECUTABLE flag in conf files.
2003-12-07 19:28:43 +00:00
steve
e56b77a43f
Add support for wait on list of named events.
2003-12-03 02:46:23 +00:00
steve
12033d7bd4
Move the DLL= flag to target config files.
2003-11-13 05:55:33 +00:00
steve
435f06bd21
ivl -F and -t flags are onpassed throught the -C file.
2003-11-13 03:10:37 +00:00
steve
c5f7e7837b
Start the vvp target config files.
2003-11-01 04:22:50 +00:00
steve
5496a38499
vvp_signal_label does not return a unique string.
2003-10-25 02:07:57 +00:00
steve
a461a76bd5
Emit .event inputs before the .event statement.
2003-10-09 23:45:03 +00:00
steve
3190eda414
Slightly more efficient unary minus.
2003-10-01 17:44:20 +00:00
steve
2970b3c39b
Clear expression lookaside after true cause of ternary.
2003-09-24 20:46:20 +00:00
steve
cee34f8a8a
Support time0 resolution of combinational threads.
2003-09-04 20:28:05 +00:00
steve
64d795c53a
Preserve variable ranges all the way to the vpi.
2003-08-22 23:14:26 +00:00
steve
6b7879c0b0
Ignore autom4te.cache files.
2003-08-10 00:41:26 +00:00
steve
5e326cd90e
Subtract from constant values.
2003-08-03 03:53:38 +00:00
steve
d653a7e88d
Add support for triand and trior.
2003-07-30 01:13:28 +00:00
steve
d4b7c835de
All the threads of a named fork go into sub-scope.
2003-07-29 05:12:10 +00:00
steve
bfe31e22bf
Start handling pad of expressions in code generators.
2003-07-26 03:34:42 +00:00
steve
01b858ef13
Wider thread vector limit.
2003-07-03 17:44:10 +00:00
steve
71a404a546
Add arithmetic shift operators.
2003-06-18 03:55:18 +00:00
steve
96ca885aca
Remove short int restrictions from vvp opcodes.
2003-06-17 19:17:42 +00:00
steve
4da0cc4c8c
Fix fprintf warning.
2003-06-16 22:14:15 +00:00
steve
1b0408ac8f
More efficient code for ternary expressions.
2003-06-15 22:49:32 +00:00
steve
2f6826247a
Sign extend signed vectors.
2003-06-14 22:18:54 +00:00
steve
b43c543455
Handle assign of real to vector.
2003-06-13 19:10:20 +00:00
steve
0c7a5874d4
Proper pad of signed constants.
2003-06-11 02:23:45 +00:00
steve
a4d69e08da
Better width testing for thread vector allocation.
2003-06-05 04:18:50 +00:00
steve
8cfef65bd8
Implement acc_fetch_defname and its infrastructure in vvp.
2003-05-29 02:21:45 +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
6e5b7e4a41
Add % in real expressions.
2003-05-25 02:50:08 +00:00
steve
cd7a313f56
Account for nested fork scopes in disable.
2003-05-17 04:38:19 +00:00
steve
8126bdd384
Use fopen64 to open output file.
2003-05-16 03:22:52 +00:00
steve
2a29c4fd62
Support real expressions in case statements.
2003-05-14 05:26:41 +00:00
steve
3bd08e6212
Allow primitives to hvae unconnected input ports.
2003-05-13 01:56:15 +00:00
steve
2a93dc00f6
Proper width handling of || expressions.
2003-05-10 02:38:49 +00:00
steve
d5642e6bdf
Preserve user specifiec CFLAGS/CPPFLAGS.
2003-04-23 05:27:44 +00:00
steve
3aa3d03397
Fix word register leak.
2003-04-23 02:22:47 +00:00
steve
f1cc9d865b
Support event names as expressions elements.
2003-04-22 04:48:29 +00:00
steve
3b17456254
Properly pass $signed(signal) to tasks.
2003-04-12 23:25:20 +00:00
steve
5d1d99a89f
Handle signed magnitude compare all the
...
way through to the vvp code generator.
2003-04-11 05:18:08 +00:00
steve
4b543de7f9
Add support for division of real operands.
2003-03-28 02:33:56 +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
8188e8f3bf
Use %p name for all LPM functors.
2003-03-13 06:07:11 +00:00
steve
1222153cdf
Keep parameter constants for the ivl_target API.
2003-03-10 23:40:53 +00:00
steve
6474c5c9f4
Excess precision breaks some targets.
2003-03-08 01:04:01 +00:00
steve
5adf99059d
Handle general $function arguments as expresions.
2003-03-07 02:43:32 +00:00
steve
0bf901e9bb
Use number for event labels.
2003-03-06 01:17:46 +00:00
steve
17ec5d7891
Use numbers for functor labels.
2003-03-06 00:27:09 +00:00
steve
76a77fdd36
Printed nexus names need not use ivl_nexus_name.
2003-03-03 23:05:49 +00:00
steve
679c9c5bfe
Only give scope basename to .scope directives.
2003-03-03 01:48:41 +00:00
steve
970c4950f4
Merge vpi_call and vpi_func draw functions.
2003-02-28 20:21:13 +00:00
steve
feee40603c
Makefile cleanups to better support concurrent make.
2003-02-27 22:13:22 +00:00
steve
514bb4a6a9
Handle assign of real values to vectors.
2003-02-27 20:38:12 +00:00
steve
e6eded243e
Eliminate use of ivl_lpm_name function.
2003-02-25 03:40:45 +00:00
steve
7638ec05e7
Handle real value subtract and comparisons.
2003-02-07 02:46:16 +00:00
steve
ce489d8d84
Allow $display of $simtime.
2003-02-03 01:09:20 +00:00
steve
de4c73abcb
Deliver residual bits of real value.
2003-01-28 04:15:50 +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
c2070777b2
The $time system task returns the integer time
...
scaled to the local units. Change the internal
implementation of vpiSystemTime the $time functions
to properly account for this. Also add $simtime
to get the simulation time.
2002-12-21 00:55:57 +00:00
steve
42b34c2ce6
Evaluate shift index after shift operand because
...
the chift operand may use the index register itself.
2002-12-20 01:11:14 +00:00
steve
6fbfdd8f3f
Keep bit select subexpression width if it is constant.
2002-12-19 23:11:29 +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
00b2d467e4
Allow right values of right shift to shift in.
2002-11-21 22:42:48 +00:00
steve
2fafe6866f
Better handling of select width of shifters.
2002-11-21 18:08:09 +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
46ee38b466
Concatenation can evaluate sub-expressions in place.
2002-11-06 05:41:37 +00:00
steve
b4e8ea5a0c
Install shared objects as programs, not data.
2002-11-05 02:14:41 +00:00
steve
32f1ca6f8b
draw lpm ff with aset_expr taken into account.
2002-10-23 04:39:35 +00:00
steve
fbee1b424d
Properly set or clear expression lookaside for binary expressions.
2002-10-20 02:55:37 +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
166621bcb3
Generate vvp code for asynch set/reset of NetFF.
2002-09-26 03:18:04 +00:00
steve
6f23fa61ac
Allow results in register bits 47 in certain cases.
2002-09-24 04:20:32 +00:00
steve
3d3116d48b
Add support for binary NOR operator.
2002-09-18 04:29:55 +00:00
steve
5d6567cb02
Generate vvp code for structural flip-flops.
2002-09-17 05:37:45 +00:00
steve
fb0383d2bd
single bit optimization for != in expressions,
...
and expand ++ and != results if needed.
2002-09-13 04:09:51 +00:00
steve
28725d0d74
Optimize ==1 when in context where x vs z doesnt matter.
2002-09-13 03:12:50 +00:00
steve
dac99b9374
Add support for binary nand operator.
2002-09-12 15:49:43 +00:00
steve
0a2a9dcd94
Fix leaking vthread bits in ?: eval.
2002-09-01 01:42:34 +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
e79f62c5fa
Generate x out for x select on wide muxes.
2002-08-29 03:04:01 +00:00
steve
cbca31555d
Add the %subi instruction, and use it where possible.
2002-08-28 18:38:07 +00:00
steve
d5aa700b4b
Generate %load/nx for indexed load of nets.
2002-08-28 17:15:35 +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
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
774f78cd3e
Autoconfig ident support.
2002-08-12 00:27:10 +00:00
steve
aca1dcf848
Add missing Log and Ident strings.
2002-08-11 23:47:04 +00:00
steve
cc74d2a6b0
Add force to nets.
2002-08-07 00:54:39 +00:00
steve
693e9e5ad0
Store only the base name of memories.
2002-08-05 04:18:45 +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
15becdaee4
Need driver for sure in assign feedback and other cases.
2002-07-18 02:06:37 +00:00
steve
18ba73382e
Fix check for select size.
2002-07-16 03:15:11 +00:00
steve
31bd3e6056
Use all bits of ?: condit expression.
2002-07-12 18:10:45 +00:00
steve
472f98affe
Generate code for wide muxes.
2002-07-08 04:04:07 +00:00
steve
301040a67a
Avoid emitting to vvp local net symbols.
2002-07-05 21:26:17 +00:00
steve
3595b6d186
Carry can propagate to the otp in addi.
2002-07-01 00:52:47 +00:00
steve
5eca5d9948
Carry integerness throughout the compilation.
2002-06-21 04:59:35 +00:00
steve
24a2487c18
Generate %cmpi/u where appropriate.
2002-06-02 18:57:17 +00:00
steve
cba5a22714
Generate %muli instructions when possible.
2002-05-31 20:04:57 +00:00
steve
95876feb46
Use addi with wide immediate values.
2002-05-30 01:57:23 +00:00
steve
b6b364a09d
Add %addi, which is faster to simulate.
2002-05-29 16:29:34 +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
e70e04d6e8
Handle x case of unary ! properly.
2002-05-07 03:49:58 +00:00
steve
4a7e14786c
Tail size was wrong.
2002-04-23 05:18:05 +00:00
steve
1ddb736f4c
Handle bitsel muxes of odd shaped outputs.
2002-04-23 05:06:31 +00:00
steve
9ef49379f4
Add support for non-constant bit select.
2002-04-23 03:53:59 +00:00
steve
96213fe0ac
Keep delays applied to BUFZ devices.
2002-04-22 03:15:25 +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
eb27dc8db3
Support signed integer division.
2002-04-14 18:41:34 +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
7349a6beaf
Generate port information in the .ufunc statement.
2002-03-18 00:18:50 +00:00
steve
b7c2bd4f72
Add the NetUserFunc netlist node.
2002-03-09 02:10:22 +00:00
steve
aa16e82102
Fix parameter bit select check for magic constants.
2002-02-03 05:53:00 +00:00
steve
364ffc9024
Add support for bit select of parameters.
...
This leads to a NetESelect node and the
vvp code generator to support that.
2002-01-28 00:52:41 +00:00
steve
02f5ccd5d9
Handle constants with drive strength z
2002-01-12 17:49:41 +00:00
steve
361d4f2147
Drive strengths for continuous assignments.
2002-01-12 04:03:39 +00:00
steve
5840368f2d
Handle certain special cases of stime.
2002-01-11 05:23:05 +00:00
steve
6be3be0f16
Constant values have drive strengths.
2002-01-06 03:15:43 +00:00
steve
dd79885f6d
Add structural modulus support down to vvp.
2002-01-03 04:19:01 +00:00
steve
a5400d7212
Support all 3 TRI net types.
2001-12-15 02:13:33 +00:00
steve
cd1524e6ca
Generate notif functors.
2001-12-14 06:03:34 +00:00
steve
4dd5f97a96
Parse and handle drive strengths of gates to vvp.
2001-12-14 02:05:13 +00:00
steve
ec4f8c80d5
Support functor delays for gates and UDP devices.
...
(Stephan Boettcher)
2001-12-06 03:31:24 +00:00
steve
2d3e85d941
Make sure fork labels are globally unique.
2001-12-05 05:41:20 +00:00
steve
e00aedd99b
Handle padding out of logical values.
2001-11-19 04:25:46 +00:00
steve
6e0b77a8da
Generate force code for variable l-values.
2001-11-18 01:28:18 +00:00
steve
54bb59ae99
Support compile on MacosX 10.1.1 (Timothy J. Wood)
2001-11-17 17:57:58 +00:00
steve
08f0f5a1f7
DLL target support for force and release.
2001-11-14 03:28:49 +00:00
steve
cc5ddc0b6b
MacOSX 10.1 updates.
2001-11-04 05:03:21 +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
d83fb10774
The ! expression returns 0 to x and z values.
2001-10-24 05:06:54 +00:00
steve
5a6cca33a0
Write resolvers before the .functor (PR#300)
2001-10-24 03:43:45 +00:00
steve
924b4e0062
unused idx warning.
2001-10-22 02:04:37 +00:00
steve
0e43dfb285
Remove useless code for drawing .var inputs.
2001-10-22 00:04:51 +00:00
steve
46621d3c83
wrong variable for clk input to memory.
2001-10-21 23:38:16 +00:00
steve
83d3a60d5c
Add trailing ; to fork-join out labels.
2001-10-19 23:52:36 +00:00
steve
d350620315
Support multiple root modules (Philip Blundell)
2001-10-19 21:53:24 +00:00