Stephen Williams
a67d573ae6
Eval_tree debug is controled by debug_eval_tree flag.
2008-04-08 20:42:08 -07:00
Stephen Williams
ea74eb771e
Fix a couple problems with signed multiply
...
Problems with signed expressions that are set to parameters and
that include multipliciation exposed a few bugs in the calculation
of signed multiply. Fix this and add some improved diagnostics.
2008-03-25 21:35:08 -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
Cary R
fac1cc5a1c
Add user function synth and clean up expression code.
...
This patch adds synthesize() for user functions. It also cleans up a
number of inconsistencies and missing checks in the expression code.
2008-02-24 20:00:18 -08:00
Cary R
3716e972ec
Add support for unary +/- in real parameter evaluation.
...
This patch adds support for unary + and - of real value constants
to the eval_tree() functionality.
2008-02-20 17:24:44 -08:00
Cary R
4cf8920e48
Fix trimming of unsigned verinum values.
...
Incorrect trimming of unsigned verinum values was causing the
compilers unsigned constant verinum pow function to give
incorrect results. This patch restores the pow compile time
optimization and fixes the trimming to always leave a single
zero in the MSB.
2008-02-05 15:40:21 -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
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
76164d7711
Rework compile-time evaluation of LT and GT
...
There was much redundant code in the compile-tile handling of the
less-then and greater-then of constant expressions, and much of it
was buggy. Unify much of the code and squeeze out the bugs so that
compile-time evaluations come out correctly.
2008-01-23 20:43:13 -08:00
Stephen Williams
89bf16b21e
Signed-ness of parameters
...
Propagate the signedness of named parameters when they are evaluated.
2008-01-22 20:16:43 -08:00
Stephen Williams
5b17f2039a
Fix bug in eval of <= compare
...
The compiler attempts to precalculate the results of <= comparisons.
Fix a few corner cases where the arguments are signed. Also fix the
important test of constant against non-constant where we try to test
if the non-constant value can possibly make the test fail.
2008-01-21 22:05:50 -08:00
Larry Doolittle
8ea3b6b0b8
header includes for gcc-4.3 compatibility
...
minimal changes required to build without error
tested with gcc-4.3 (Debian 4.3-20071130-1) 4.3.0 20071130 (experimental)
2008-01-04 16:14:44 -08:00
Stephen Williams
7975e14b5c
LineInfo uses perm_string for path.
...
Rework the handling of file names to use a perm_string heap to hold
the file names, instead of the custom file name heap in the lexor.
Also rename the get_line to get_fileline to reflect its real duties.
This latter chage touched a lot of files.
2007-12-20 12:31:01 -05:00
Stephen Williams
4c8a7b221c
Proper padding of constant bitwise operands
...
When evaluating bitwise binary expressions at compile time, get the
signed/unsigned padding correct. Pay special attention to the case
of $signed/$unsigned changing the signedness of the operand.
2007-12-17 21:00:18 -08:00
Stephen Williams
bab9c7adba
Proper compile time processing of arithmetic right shift
...
Handle arithmetic right shift during compile time. This comes
up with both the operands are constant expressions. the compiler
is able to evaluate this down to a constant to replace the
expression.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-11-08 21:52:38 -08:00
Stephen Williams
3b94c122b7
Constant concat operands are self determined
...
distinguish between self-determined and value-preserving when
evaluating constants that are arguments to concatenations.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-08-09 22:08:54 -07:00
steve
c7d97f4146
Properly evaluate scope path expressions.
2007-06-02 03:42:12 +00:00
steve
1f9a246c6d
Fix warning (ldolittle)
2007-05-31 18:36:06 +00:00
steve
33e5f22cf1
Handle evaluate of addition of real valued constants.
2007-04-07 04:46:18 +00:00
steve
d9efe3312e
Limit the calculated widths of constants.
2007-03-08 05:30:02 +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
ed5d3188b3
Fix padding of constant eval of NetESelect.
2006-11-04 06:16:27 +00:00
steve
2302693201
Expression widths with unsized literals are pseudo-infinite width.
2006-10-30 05:44:49 +00:00
steve
92cb1d4e2d
Use elab_and_eval for bit select expressions.
2006-09-19 23:00:15 +00:00
steve
49b65e86fe
Add support for power in constant expressions.
2006-07-31 03:50:17 +00:00
steve
5b3ba8c306
Properly handle signedness in compare.
2006-03-18 22:52:27 +00:00
steve
908955c72c
Handle bit select of parameter with ranges.
2005-11-27 05:56:20 +00:00
steve
c02b3b8ac6
Reorganize signal part select handling, and add support for
...
indexed part selects.
Expand expression constant propagation to eliminate extra
sums in certain cases.
2005-11-10 13:28:11 +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
a79fee39e9
Watch out for signed constants in magnitude compare.
2005-06-17 05:05:53 +00:00
steve
e4ae832153
Clean up spurious trailing white space.
2004-10-04 01:10:51 +00:00
steve
d1dac0017d
Fix the evaluation of constant ternary expressions.
2004-09-10 23:51:42 +00:00
steve
1295058e5d
parameter keys are per_strings.
2004-02-20 06:22:56 +00:00
steve
7fd669fcc0
NetEUReduce has its own dup_expr method.
2003-10-31 02:47:11 +00:00
steve
1c99c629b1
Support constant evaluation of binary ^ operator.
2003-10-26 04:54:56 +00:00
steve
f495c75faf
Evaluate real parameter expressions that contain real parameters.
2003-09-04 01:52:50 +00:00
steve
1a3a3fbcfa
Fix || with true case on the right.
2003-08-01 02:12:30 +00:00
steve
21ff80075a
Various warnings fixed.
2003-06-24 01:38:02 +00:00
steve
8352c91b0a
Evaluate <= with real operands.
2003-06-05 04:28:24 +00:00
steve
d3daa997b5
internal error for <= expression errors.
2003-06-04 01:26:17 +00:00
steve
5903f0744c
Support parameters in real expressions and
...
as real expressions, and fix multiply and
divide with real results.
2003-05-30 02:55:32 +00:00
steve
772a8b7dac
Handle real constants evaluation > and >=.
2003-04-15 05:06:56 +00:00
steve
bab0924d86
Make some effort to preserve bits while
...
operating on constant values.
2003-04-14 03:40:21 +00:00
steve
7a752bd111
More resilient WRT right expression width of GT.
2003-03-15 18:07:58 +00:00
steve
1222153cdf
Keep parameter constants for the ivl_target API.
2003-03-10 23:40:53 +00:00
steve
f8d1e15a27
NetEBDiv handles real value constant expressions.
2003-02-07 02:47:57 +00:00
steve
e941e7e805
Spelling fixes.
2003-01-30 16:23:07 +00:00
steve
8f0c02c0fa
Spelling fixes.
2003-01-27 05:09:17 +00:00
steve
9f80ed32b6
Support bit select in constant expressions.
2002-12-05 02:14:33 +00:00
steve
aa8869a3c7
Postpone parameter width check to evaluation.
2002-11-09 01:40:19 +00:00
steve
43501809b1
Redo the parameter vector support to allow
...
parameter names in range expressions.
2002-10-19 22:59:49 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
6bd8ab46d5
Eval ^ and &0 expressions.
2002-05-25 16:43:47 +00:00
steve
a3eb6868ea
Allow parameters in concatenation of widths are defined.
2002-05-06 02:30:27 +00:00
steve
8667b9a35d
Put off evaluation of concatenation repeat expresions
...
until after parameters are defined. This allows parms
to be used in repeat expresions.
Add the builtin $signed system function.
2002-05-05 21:11:49 +00:00
steve
84020b16e3
Preserve stringiness string part select and concatenation.
2002-04-27 05:03:46 +00:00
steve
10dc978778
Fixup eval of signed constants.
2002-04-27 03:17:15 +00:00
steve
714ca3542d
Fix compile time eval of signed <= signed.
2002-04-24 02:47:02 +00:00
steve
6d4c6b56f6
Fix constant evaluation of unary
2002-04-14 19:28:47 +00:00
steve
9756cb6382
Propagate sign in unary minus.
2002-02-01 05:09:14 +00:00
steve
349be0f169
Precalculate constant results of memory index expressions.
2002-01-22 01:40:04 +00:00
steve
b397b10104
Evaluate constant unary minus.
2001-12-30 00:39:25 +00:00
steve
ab6c8cb4b8
Parser and pform use hierarchical names as hname_t
...
objects instead of encoded strings.
2001-12-03 04:47:14 +00:00
steve
cfed3933fa
Port close cropping behavior from mcrgb
...
Move window array reset to libmc.
2001-11-19 01:54:14 +00:00
steve
1921e19635
fix constant overrun in | operands.
2001-10-22 15:31:21 +00:00
steve
5c4b87675f
Evaluate constant == when operands differ in width.
2001-10-20 00:11:24 +00:00
steve
b825f8d2b2
Create a config.h.in file to hold all the config
...
junk, and support gcc 3.0. (Stephan Boettcher)
2001-07-25 03:10:48 +00:00
steve
85d53ebbf4
Handle 0 counts in repeat concatenation.
2001-07-16 20:41:41 +00:00
steve
f5d0211864
In the context of range declarations, use elab_and_eval instead
...
of the less robust eval_const methods.
2001-02-10 20:29:39 +00:00
steve
7ef3b44ab1
support evaluation of constant < in expressions.
2001-02-09 05:44:23 +00:00
steve
94a1d59817
Support constant evaluation of / and % (PR#124)
2001-02-07 02:46:31 +00:00
steve
219df169a3
Generalize the evaluation of floating point delays, and
...
get it working with delay assignment statements.
Allow parameters to be referenced by hierarchical name.
2001-01-14 23:04:55 +00:00
steve
8bfae1e641
Evaluate constant === and !== expressions.
2001-01-04 16:49:50 +00:00
steve
d5ec89813d
Evaluate constant logical && and ||.
2001-01-04 04:28:42 +00:00
steve
120a211e68
Support a bunch of unary operators in parameter expressions.
2001-01-02 04:21:13 +00:00
steve
b6a18098c7
Evaluate constant &, | and unary ~.
2001-01-02 03:23:40 +00:00
steve
112936d661
Fix shift and ternary operators in parameter expressions (PR#86)
2001-01-01 21:49:33 +00:00
steve
fe209a6996
Handle non-constant l-values.
2000-12-16 20:00:17 +00:00
steve
f4671a3082
Evaluate <= and ?: in parameter expressions (PR#81)
2000-12-16 19:03:30 +00:00
steve
21e0e8a8a1
Cnstant evaluation of NE.
2000-09-29 04:42:56 +00:00
steve
fff759de20
multiply in parameter expressions.
2000-09-27 18:28:37 +00:00
steve
18eb34921f
Add support for non-constant delays in delay statements,
...
Support evaluating ! in constant expressions, and
move some code from netlist.cc to net_proc.cc.
2000-07-07 04:53:53 +00:00
steve
2b40c7ce11
integer division in expressions properly get width.
2000-04-28 18:43:23 +00:00
steve
e7efc2709a
Redesign the implementation of scopes and parameters.
...
I now generate the scopes and notice the parameters
in a separate pass over the pform. Once the scopes
are generated, I can process overrides and evalutate
paremeters before elaboration begins.
2000-03-08 04:36:53 +00:00
steve
b734ecf02f
Macintosh compilers do not support ident.
2000-02-23 02:56:53 +00:00
steve
aa8908c52f
Multiplication all the way to simulation.
2000-01-13 03:35:35 +00:00
steve
2c774bfe75
do the <= in bits, not numbers.
1999-10-22 23:57:53 +00:00
steve
19b8615363
Support evaluating + operator at compile time.
1999-10-10 23:29:37 +00:00
steve
1a21d2fe9d
Support shift operators.
1999-09-23 03:56:57 +00:00
steve
1c41f8ebd2
Move set_width methods into a single file,
...
Add the NetEBLogic class for logic expressions,
Fix error setting with of && in if statements.
1999-09-23 00:21:54 +00:00
steve
349f9ae302
Support parameters that reference other paramters.
1999-09-21 00:13:40 +00:00
steve
3a5e55b229
Elaborate parameters in phases.
1999-09-20 02:21:10 +00:00