Stephen Williams
a72977a7ed
Bit select of array word
...
fix support for bit select of array word in behavioral expressions.
2007-07-03 20:17:43 -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
845e74c30e
Evaluate parameter expressions losslessly
...
Make sure parameter expressions are evaluated losslessly, as if
the l-value is unsigned and thus virtually infinite.
2007-06-27 22:05:36 -07:00
Stephen Williams
59a43ab2ce
Do not match scopes in ident expressions
...
Identifiers in expressions cannot be scope names, even
though the special case of a simple system task argument
expression allows it.
2007-06-25 20:33:40 -07:00
Stephen Williams
9d2dd782c0
Get offsets right for non-zero and reversed part selects.
...
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-06-15 16:59:24 -07:00
steve
c7d97f4146
Properly evaluate scope path expressions.
2007-06-02 03:42:12 +00:00
steve
ddd36ecb6c
Rework the heirarchical identifier parse syntax and pform
...
to handle more general combinations of heirarch and bit selects.
2007-05-24 04:07:11 +00:00
steve
0168502bbb
Get offsets into indexed part selects correct.
2007-04-01 05:28:26 +00:00
steve
9e21880cdc
Handle part select of array words.
2007-03-26 19:23:13 +00:00
steve
32fb919b00
Replace some asserts with ivl_asserts.
2007-03-14 05:06:49 +00:00
steve
ae88f5cc68
Lint fixes.
2007-03-07 00:38:15 +00:00
steve
760f2182ba
Support signed function return values.
2007-03-06 05:22:49 +00:00
steve
b21390b228
Better error message when operating on array.
2007-03-02 01:55:36 +00:00
steve
ca9da51a79
Precalculate constant power expressions, and constant function arguments.
2007-01-19 05:42:40 +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
34b5a31ff4
Add test_width methods for PETernary and PEString.
2006-11-10 04:54:26 +00:00
steve
c339dc4bbc
Remove last bits of relax_width methods, and use test_width
...
to calculate the width of an r-value expression that may
contain unsized numbers.
2006-11-04 06:19:24 +00:00
steve
2302693201
Expression widths with unsized literals are pseudo-infinite width.
2006-10-30 05:44:49 +00:00
steve
2a8b960b06
More detailed internal error message.
2006-10-15 03:25:57 +00:00
steve
69cd007a71
Support real valued specify delays, properly scaled.
2006-10-03 05:06:00 +00:00
steve
d6be82f748
Support selective control of specify and xtypes features.
2006-09-28 04:35:18 +00:00
steve
7e3ea2ffe8
Allow specparams as constants in expressions.
2006-09-28 00:29:49 +00:00
steve
92cb1d4e2d
Use elab_and_eval for bit select expressions.
2006-09-19 23:00:15 +00:00
steve
50800fd3a1
Add support for real valued modulus.
2006-08-09 05:19:08 +00:00
steve
49b65e86fe
Add support for power in constant expressions.
2006-07-31 03:50:17 +00:00
steve
aab6fefd8a
Fix context determined with of constants.
2006-07-07 04:06:37 +00:00
steve
71faebd6df
Make elaborate_expr methods aware of the width that the context
...
requires of it. In the process, fix sizing of the width of unary
minus is context determined sizes.
2006-06-02 04:48:49 +00:00
steve
53ae1f29c9
Fix broken subtraction of small constants.
2006-06-01 03:54:51 +00:00
steve
fc5cf55400
Use elab_and_eval to evaluate genvar expressions.
2006-04-12 05:05:03 +00:00
steve
d434dd7296
Allow part selects of memory words in l-values.
2006-02-02 02:43:57 +00:00
steve
908955c72c
Handle bit select of parameter with ranges.
2005-11-27 05:56:20 +00:00
steve
b416ae047b
Fix compile warning.
2005-11-14 22:11:52 +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
a652719876
Add support for indexed select attached to parameters.
2005-10-04 04:09:25 +00:00
steve
be73be8c98
Spelling patches from Larry.
2005-09-19 21:45:35 +00:00
steve
9fd16575d9
Support bool expressions and compares handle them optimally.
2005-09-14 02:53:13 +00:00
steve
4902c222fb
Check operand types for compatibility.
2005-09-01 04:10:47 +00:00
steve
b9799cf6ec
Remove NetVariable and ivl_variable_t structures.
2005-07-11 16:56:50 +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
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
7f67afe9d5
Add support for $unsigned.
2004-08-28 15:42:11 +00:00
steve
49366d1334
Add the $is_signed function.
2004-08-26 03:51:51 +00:00
steve
b3529d8593
Help system function signedness survive elaboration.
2004-06-17 16:06:18 +00:00
steve
dd69872266
Special case for unary - of real literal.
2004-06-04 23:34:15 +00:00
steve
5472b27e1f
Rewire/generalize parsing an elaboration of
...
function return values to allow for better
speed and more type support.
2004-05-31 23:34:36 +00:00
steve
a0ed5e9e29
Separate out the lookup_sys_func table, for eventual
...
support for function type tables.
Remove ipal compile flags.
2004-03-09 04:29:42 +00:00
steve
1295058e5d
parameter keys are per_strings.
2004-02-20 06:22:56 +00:00
steve
de7f87853d
Generate error when missing concatenation operands.
2004-01-21 04:57:40 +00:00
steve
e9f1fd012c
Put parameter name in NetEConstParam, not scope.
2003-10-09 16:52:52 +00:00
steve
da7956a797
Fix name search in elab_lval.
2003-09-19 03:30:04 +00:00
steve
21ff80075a
Various warnings fixed.
2003-06-24 01:38:02 +00:00
steve
71a404a546
Add arithmetic shift operators.
2003-06-18 03:55:18 +00:00
steve
6827aef285
PR735: bit select indices are signed constants.
2003-06-10 04:29:57 +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
f1cc9d865b
Support event names as expressions elements.
2003-04-22 04:48:29 +00:00
steve
2879ed4388
Set line number for ternary expressions.
2003-04-19 04:19:38 +00:00
steve
6fcbc0e59a
Fix xz extension of constants.
2003-04-02 04:25:26 +00:00
steve
9a1612b99b
Scope names can be relative.
2003-03-25 03:00:04 +00:00
steve
6d94f2ea55
Better organize the NetESFunc return type guesses.
2003-03-15 04:46:28 +00:00
steve
1222153cdf
Keep parameter constants for the ivl_target API.
2003-03-10 23:40:53 +00:00
steve
f40ea15cce
Implement $realtobits.
2003-03-07 02:44:33 +00:00
steve
8f0c02c0fa
Spelling fixes.
2003-01-27 05:09:17 +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
0128286966
Allow constant bit selects out of range.
2002-09-21 21:28:18 +00:00
steve
616360d751
Spelling errors.
2002-09-18 04:08:45 +00:00
steve
dac99b9374
Add support for binary nand operator.
2002-09-12 15:49:43 +00:00
steve
4de141ab1d
Support parameters with defined ranges.
2002-08-19 02:39:16 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
a82c178fd9
Fix expression width for repeat concatenations.
2002-06-14 21:38:41 +00:00
steve
fde7cd8f10
Add support for $bits (SystemVerilog)
2002-05-24 00:44:54 +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
7f8f0eb65a
Support selecting bits from parameters.
2002-04-27 02:38:04 +00:00
steve
c7107dc973
Evaluate constant bit select of constants.
2002-04-25 05:04:31 +00:00
steve
ea44866b2f
Evaluate logical not at elaboration time.
2002-04-14 21:16:48 +00:00
steve
5cf7355c91
Precalculate unary - if possible.
2002-04-14 03:55:25 +00:00
steve
6733f7625b
Detect missing indices to memories (PR#421)
2002-04-13 02:33:17 +00:00
steve
b7c2bd4f72
Add the NetUserFunc netlist node.
2002-03-09 02:10:22 +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
c6a937e2e7
The stime system function is 32bits.
2002-01-11 05:25:45 +00:00
steve
51db00fb44
Support $signed cast of expressions.
2001-12-31 00:08:14 +00:00
steve
9c6b17c887
Allow escaped $ in identifiers.
2001-12-29 20:41:30 +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
9d1a81ce2c
Handle division and modulus by zero while
...
evaluating run-time constants.
2001-11-19 02:54:12 +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
bf72f39fe9
eval_const uses scope instead of a string path.
2001-11-07 04:01:59 +00:00
steve
ef08e43cf2
support local reference to scope in expressions.
2001-07-29 22:22:40 +00:00
steve
becc7cb56a
Handle part select expressions as variants of
...
NetESignal/IVL_EX_SIGNAL objects, instead of
creating new and useless temporary signals.
2001-07-27 04:51:44 +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
6b7b4e700a
Detect parameter mismatches.
2001-06-30 21:28:35 +00:00
steve
7bbedd1b55
Look up functor return register with tail of name.
2001-06-23 19:53:03 +00:00
steve
0550287658
Generate vvp code for functions with ports.
2001-04-06 02:28:02 +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
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
02fc59fbdf
Parse parameters within nested scopes.
2001-01-13 22:20:08 +00:00
steve
120a211e68
Support a bunch of unary operators in parameter expressions.
2001-01-02 04:21:13 +00:00
steve
084a464cf1
Support decimal constants in behavioral delays.
2000-12-10 22:01:35 +00:00
steve
ea921efced
synthesis for unary reduction ! and N operators.
2000-11-29 05:24:00 +00:00
steve
79b1c51e68
Detect indefinite widths where definite widths are required.
2000-09-26 05:05:58 +00:00
steve
cbe20e8bcf
fix null pointer when elaborating undefined task.
2000-09-24 17:41:13 +00:00
steve
eb781a7441
Handle out of range part select expressions.
2000-08-26 01:31:29 +00:00
steve
2f419f0e08
Catch part select of memories as an error.
2000-05-19 01:55:09 +00:00
steve
b28f258463
Import MCD support from Stephen Tell, and add
...
system function parameter support to the IVL core.
2000-05-07 18:20:07 +00:00
steve
fbe475ef7d
Add infrastructure for system functions, move
...
$time to that structure and add $random.
2000-05-04 03:37:58 +00:00
steve
69612ceb73
Move memories to the NetScope object.
2000-05-02 03:13:30 +00:00
steve
8d8f1e2401
Move signal tables to the NetScope class.
2000-05-02 00:58:11 +00:00
steve
2b40c7ce11
integer division in expressions properly get width.
2000-04-28 18:43:23 +00:00
steve
995f61ace4
Forgot to return elaborate result (Dan Nelsen)
2000-03-29 04:06:28 +00:00
steve
44d30ad127
select correct bit when reg has non-zero lsb.
2000-03-20 16:57:22 +00:00
steve
71a506a28a
Binary and unary operators in parameter expressions.
2000-03-12 18:22:11 +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
e6820ed169
Handle synthesis of concatenation.
2000-01-01 06:18:00 +00:00
steve
76655ce2bb
Allow memories without indices in expressions.
1999-12-12 06:03:14 +00:00
steve
998c039fd9
Match scope names as last resort.
1999-11-30 04:54:01 +00:00
steve
e96e8c62be
NetESignal object no longer need to be NetNode
...
objects. Let them keep a pointer to NetNet objects.
1999-11-28 23:42:02 +00:00
steve
4cfa3e4047
Support the creation of scopes.
1999-11-27 19:07:57 +00:00
steve
4cfa715092
Memory name lookup handles scopes.
1999-11-21 17:35:37 +00:00
steve
82f3f0f741
Create the vpiMemory handle type.
1999-11-10 02:52:24 +00:00
steve
8ab03fa90f
Catch unindexed memory reference.
1999-10-18 00:02:21 +00:00
steve
c63a3acf93
Elaborate ~^ and ~| operators.
1999-09-30 02:43:01 +00:00
steve
6e486e9bcf
Cope with errors during ternary operator elaboration.
1999-09-30 00:48:49 +00:00
steve
db7044850a
Move code to elab_expr.cc
1999-09-29 22:57:10 +00:00
steve
bb38653654
Parse system function calls.
1999-09-25 02:57:29 +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