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
Larry Doolittle
f4cf7b1799
Cleanup from yesterday's "Add more error checking" patch
...
Removes const char related compiler warnings,
tidies up mainline code by abstracting the human_readable_op() routine
2008-02-04 13:30:30 -08:00
Cary R
db851c235f
Add more error checking for operators that cannot use real values.
...
This patch adds some checks to verify that shifts, the reduction
operators and the bit wise operators are not used with real values.
It also includes a few other cleanups.
2008-01-31 20:15:04 -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
Larry Doolittle
31afec57b1
Fix for pr1879226, large constant shift values
...
Addresses pr1879226 on a couple of levels. Analysis:
NetNet* PEBinary::elaborate_net_shift_() didn't flag dist==lwidth
as a case where all bits of the input are shifted away, which made
it create a real concatenator for this case. It attempted to create
NetNet*tmp with zero width, which doesn't work; (lsb,msb) ends up
as (0,-1), which is later interpreted as a 2-bit wide net.
Added an assert to the NetNet constructor to catch any other lurking
attempts to create zero-width nets.
Added short-circuit code to handle the case where all bits of the input
are shifted away. This case used to be "handled" by an assert failure.
2008-01-29 09:31:16 -08:00
Stephen Williams
abfccb65e9
User defined functions take real arguments
...
Allow user defined functions to take real value arguments and return
real value results in net contexts. Use the data type of the nets
attached to the ports to define the data types of the arguments and
return value.
2008-01-28 18:57:55 -08:00
Larry Doolittle
47d65034db
Spelling fixes
...
mostly comments, but includes some identifiers and message text
2008-01-27 18:18:13 -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
Cary R
ea1f448300
Real multiply in a cont. assign. is always 1 bit wide.
...
The continuous assignment multiply expands vectors to the sum
of the two widths. This is correct for bit based vectors, but
for real variables it should always be one bit wide.
2008-01-17 12:52:30 -08:00
Cary R
592a303ce5
Add $rtoi to system func. table and add check for NULL name.
...
System functions used in a continuous assignment must be defined
in the system function table since the name of the system functions
is kept in this definition. The default name is NULL which causes
problems. This patch add $rtoi to the system table and adds a check
for a NULL name.
2008-01-17 12:42:05 -08:00
Cary R
eac6333d6c
Add missing deletes for patch "Add real compar..."
...
Add two deletes that I missed in the previous patch.
2008-01-15 19:48:49 -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
Stephen Williams
3b89c1767c
Merge branch 'pr1864110'
2008-01-08 18:56:12 -08:00
Stephen Williams
1f7957c612
Fix type handling of real-value system functions in nets
...
In nets, if system functions return a real value the function lookup
was getting the correct width, but was also setting the width to 0,
which confused down-stream net handling. Real-value system fuctions
have a width of 1. (1 real-valued scalar.)
2008-01-08 18:54:55 -08:00
Larry Doolittle
f8d410e2d4
remove lint flagged by gcc-4.3
...
watch for possible behavior changes in
elaborate.cc:3409
vvp/vvp_net.cc:600
2008-01-07 18:39:10 -08:00
Stephen Williams
36bbf6ef5a
Handle real-valued unary in general
...
Handle the unary minus with general sub-expressions.
2008-01-06 20:54:33 -08:00
Stephen Williams
9d55597b26
Elaborate net of real-value constant
...
Handle the special case of a unary minus net with the operand
that is a real-valued constant.
2008-01-06 19:59:31 -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
Larry Doolittle
25ad1c174a
Clean up compiler warnings
...
stupid changes to shut up the compiler
tested with gcc-4.2.2
2008-01-04 15:57:09 -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
Cary R
e26b9e72a2
More array fixes and down indexed part selects can be a lval.
...
Here are some more array fixes. They are mostly better error messages
instead of just asserting and some code cleanup. The one new thing
that probably should have been a separate submission is that down
indexed part select [base -: width] can now be a lvalue.
2007-11-07 20:53:27 -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
Cary R
e39b3fea1f
Display a warning for a part select of an array.
...
It is illegal to perform a part select on an array. This patch
adds an error message instead of failing an assert.
2007-11-07 20:28:46 -08:00
Stephen Williams
27b704b054
Regularize padding of signed constants
...
Factor common code for processing signed constants to be padded.
In the process, fix some minor bugs in the padding decisions.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-15 20:17:06 -07:00
Larry Doolittle
371c5d932d
Correct wrong or misleading comments.
2007-07-06 12:46:32 -07:00
Stephen Williams
018f1a6e7f
Handle indexed part select in continuous assign.
...
Non-constant indexed part select in continuous assignment generates
a select node with the correct width. In the process factor out and
share some of the part select calculations with expr part select
handling methods.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-07-02 20:53:02 -07:00
steve
8ec6d9983d
Put instantiated modules in the proper generated scope.
2007-06-12 04:05:45 +00:00
steve
129a064e1a
Handle bit/part select of array words in nets.
2007-06-04 02:19:07 +00: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
22efa9f066
Fix elaboration of multiply of two constants.
2007-04-18 01:40:49 +00:00
steve
fe65ae8db0
Support part select of array words in net contexts.
2007-04-17 04:18:10 +00:00
steve
611d2c81b3
Spelling fixes from Larry
2007-03-22 16:08:14 +00:00
steve
bb02da0319
Better error message around repeat concatenation syntax.
2007-02-27 06:10:16 +00:00
steve
6804732b9e
Spelling fixes (larry doolittle)
2007-02-26 19:49:48 +00:00
steve
326329d497
Set some missing local flags.
2007-02-05 01:42:31 +00:00
steve
d52f41535f
Ternary output node is local.
2007-02-01 19:06:06 +00:00
steve
074a6a44e3
Detect and report arrays without index in net contexts.
2007-02-01 03:14:33 +00:00
steve
b2e1db6adb
Add method to bind assertions to verilog source lines.
2007-01-31 04:21:10 +00:00
steve
4b829bf04f
Get argument widths right for shift results.
2007-01-20 02:10:45 +00:00
steve
e4d7eda02a
Fix missing data_type mark for array words.
2007-01-19 04:26:24 +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
d7de70bdeb
Prevent name clash when processing parameter in net.
2006-12-08 03:43:26 +00:00
steve
041091cfac
Fix nexus widths for direct link assign and ternary nets.
2006-11-26 06:29:16 +00:00
steve
fc0695beb6
Handle 64bit delay constants.
2006-08-08 05:11:37 +00:00
steve
33a391cb71
Sign extend operands of signed addition.
2006-06-20 05:06:47 +00:00
steve
80f30be9d0
Add support for system functions in continuous assignments.
2006-06-18 04:15:50 +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
019d61f633
Get self-determined unary - width right.
2006-05-19 04:44:55 +00:00
steve
a8b86ea3bb
More explicit datatype setup.
2006-05-01 20:47:58 +00:00
steve
0c9fb766b6
Get the data type of part select results right.
2006-04-30 05:17:48 +00:00
steve
47b72c3b74
Handle padding of MUX net results.
2006-04-28 05:09:51 +00:00
steve
a2c036d5ab
Allow concatenations as arguments to inout ports.
2006-04-28 04:28:35 +00:00
steve
c2ff3d501c
Fix support for indexed part select in continuous assign l-values.
2006-04-24 05:15:07 +00:00
steve
decfbff2b1
Clean up index expression error message.
2006-04-10 00:32:14 +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
07f345da4d
Logical or/and return VT_LOGIC type.
2005-10-11 16:15:52 +00:00
steve
21af0dbe3f
Fix data type of parameters to logic.
2005-09-19 15:21:09 +00:00
steve
7235706923
Make sure div, mod and mult nodes have line number info.
2005-09-15 23:04:09 +00:00
steve
4dfdc147c5
fit type elaboration of logical not.
2005-09-14 15:15:44 +00:00
steve
4902c222fb
Check operand types for compatibility.
2005-09-01 04:10:47 +00:00
steve
b69f59f2ec
Handle memory references is continuous assignments.
2005-08-31 05:07:31 +00:00
steve
4a8be3db9c
Implement bi-directional part selects.
2005-08-06 17:58:16 +00:00
steve
9a16e030b5
Match data type of PV select input/output.
2005-07-15 04:13:25 +00:00
steve
d353ddb660
Get output type correct for binary mux (ternary) expression.
2005-07-15 00:42:02 +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
739a1839ed
Do sign extension of structuran nets.
2005-05-24 01:44:27 +00:00
steve
06e08dbdf0
Make sure comparison widths match.
2005-05-19 03:51:38 +00:00
steve
c34e44dad0
Make sig-eq-constant optimization more effective.
2005-05-10 05:10:40 +00:00
steve
7dd0d255a6
Add support for variable part select.
2005-05-08 23:40:14 +00:00
steve
d548c9a5f8
Handle synthesis of concatenation expressions.
2005-05-06 00:25:13 +00:00
steve
e8a6835d36
Make clear that memory addresses are cannonical.
2005-04-08 04:52:31 +00:00
steve
65c7ec00e7
Rework NetRamDq and IVL_LPM_RAM nodes.
2005-04-06 05:29:08 +00:00
steve
8184dfaed8
Handle wide operands to logical AND.
2005-03-19 06:59:53 +00:00
steve
ca488dff4e
Handle LPM shifts.
2005-03-19 06:23:49 +00:00
steve
53da6e9a33
Add support for LPM_UFUNC user defined functions.
2005-03-18 02:56:03 +00:00
steve
0f914bf35a
UPdate elabrate continuous assighn of string to net.
2005-03-13 01:26:48 +00:00
steve
ab1ca54df2
Update support for LPM_MOD.
2005-03-12 06:43:35 +00:00
steve
1c5b4881d7
Handle case inequality in netlists.
2005-03-09 05:52:03 +00:00
steve
257e1f9516
Support shifts and divide.
2005-02-19 02:43:38 +00:00
steve
d74177634c
Restructure NetMux devices to pass vectors.
...
Generate NetMux devices from ternary expressions,
Reduce NetMux devices to bufif when appropriate.
2005-02-12 06:25:40 +00:00
steve
97f83ffbe3
laborate reduction gates into LPM_RED_ nodes.
2005-02-03 04:56:20 +00:00
steve
20be0351ae
Elaborate unary subtract and NOT in netlist
...
contexts, and concatenation too.
2005-01-30 05:20:38 +00:00
steve
609b6a7baa
Netlist boolean expressions generate gate vectors.
2005-01-29 18:46:18 +00:00
steve
e04fb5c083
Elaborate parameter reference to desired width without concats.
2005-01-29 16:46:22 +00:00
steve
ade5bdcafe
Integrate pr1072 fix from v0_8-branch.
2005-01-29 00:37:06 +00:00
steve
99ace10774
Simplified NetMult and IVL_LPM_MULT.
2005-01-28 05:39:33 +00:00
steve
25de448d34
Remove obsolete NetSubnet class.
2005-01-22 18:16:00 +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
ead2481793
Fix elaboration of == compared to constants.
2005-01-13 00:23:10 +00:00
steve
9e94afe399
Use PartSelect/PV and VP to handle part selects through ports.
2005-01-09 20:16:00 +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
51dd41f81a
Fix excessive error message.
2004-10-04 03:09:38 +00:00
steve
e4ae832153
Clean up spurious trailing white space.
2004-10-04 01:10:51 +00:00
steve
2abdcfcaa4
Error message to match assertion.
2004-10-04 00:25:46 +00:00
steve
180bfc5e72
Detect and prevent implicit declaration of hierarchical names.
2004-09-24 04:25:19 +00:00
steve
7f67afe9d5
Add support for $unsigned.
2004-08-28 15:42:11 +00:00
steve
3dbc07f34d
Implement signed divide and signed right shift in nets.
2004-06-30 02:16:26 +00:00
steve
9ee0210cac
Code cleanup from Larry.
2004-06-24 15:22:23 +00:00
steve
69cfdbdc54
Fix broken calcuation of NE for constant.
2004-06-22 18:41:48 +00:00
steve
03d7448550
compare-to-constant uses sig len, not val len.
2004-06-18 16:38:22 +00:00
steve
fd371a3958
Handle equality compare to constants specially.
2004-06-16 23:32:58 +00:00
steve
9949040285
Add support for the default_nettype directive.
2004-06-13 04:56:53 +00:00
steve
ba309e60bb
Fix synthesis method for logical and/or
2004-06-01 01:04:57 +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
177b6ffb6a
Addtrbute keys are perm_strings.
2004-02-20 18:53:33 +00:00
steve
27af95d402
Use perm_strings for named langiage items.
2004-02-18 17:11:54 +00:00
steve
2f8a40b159
Fix evaluation of compare to constant expression.
2004-02-15 04:23:48 +00:00
steve
930e5137ac
Catch real variables in net expressions.
2003-10-30 04:31:34 +00:00
steve
8dab4c6b53
memory index need not be self determined width.
2003-10-20 01:44:28 +00:00
steve
d1f0bcf620
Catch unsized expressions in continuous assigns.
2003-09-23 03:31:28 +00:00
steve
693794552c
Remove find_memory method from Design class.
2003-09-19 03:50:12 +00:00
steve
31c0a9dcd1
Missing case warnings.
2003-09-13 01:30:07 +00:00
steve
ca0a9faa90
Only build a mux as wide as can be selected.
2003-09-03 04:29:18 +00:00
steve
7c1401a2ba
Spelling patch.
2003-08-28 04:11:17 +00:00
steve
c96598a429
Primitive outputs have same limitations as continuous assignment.
2003-08-05 03:01:58 +00:00
steve
61195c5daa
Harmless fixup of warnings.
2003-06-21 01:21:42 +00:00
steve
76295ac873
More complete bit range internal error message,
...
Better test of part select ranges on non-zero
signal ranges.
2003-05-01 01:13:57 +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
d18934d444
Sign extend NetMult inputs if result is signed.
2003-03-29 05:51:25 +00:00
steve
4e182ebf67
Some better internal error messages.
2003-03-26 06:16:38 +00:00
steve
1222153cdf
Keep parameter constants for the ivl_target API.
2003-03-10 23:40:53 +00:00
steve
badad63ab4
All NetObj objects have lex_string base names.
2003-03-06 00:28:41 +00:00
steve
a275133ff9
LPM objects store only their base names.
2003-02-26 01:29:24 +00:00
steve
8f0c02c0fa
Spelling fixes.
2003-01-27 05:09:17 +00:00
steve
07a427bf28
Detect null arguments to concatenation operator.
2003-01-19 00:35:39 +00:00
steve
ca3bf14fb6
Remove useless variable.
2003-01-17 05:48:35 +00:00
steve
c032186133
Reword some error messages for clarity.
2002-12-06 03:08:19 +00:00
steve
cfd8cbf850
Port expressions for output ports are lnets, not nets.
2002-11-09 19:20:48 +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
447fee6f43
Fix padding of operand of unary minus.
2002-09-08 01:37:13 +00:00
steve
7b6678b2a1
Fix reverse bit ordered bit select in continuous assignment.
2002-08-31 03:48:50 +00:00
steve
63f97d8ec6
Carry mux output delays.
2002-08-21 02:28:03 +00:00
steve
640767b748
Constants can self-size themselves in unsized contexts.
2002-08-14 03:57:27 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
693e9e5ad0
Store only the base name of memories.
2002-08-05 04:18:45 +00:00
steve
301040a67a
Avoid emitting to vvp local net symbols.
2002-07-05 21:26:17 +00:00
steve
b6a15b2f4d
Wide unary minus in continuous assignments.
2002-06-22 04:22:40 +00:00
steve
cd94019733
Remove NetTmp and add NetSubnet class.
2002-06-19 04:20:03 +00:00
steve
e6c0629626
Add language support for Verilog-2001 attribute
...
syntax. Hook this support into existing $attribute
handling, and add number and void value types.
Add to the ivl_target API new functions for access
of complex attributes attached to gates.
2002-05-23 03:08:50 +00:00
steve
9ef49379f4
Add support for non-constant bit select.
2002-04-23 03:53:59 +00:00
steve
0976fd393b
Do not allow implicit wires in sensitivity lists.
2002-04-22 00:53:39 +00:00