Cary R
0c12344b27
Fix warning and little E full vector up/down selects
2021-01-30 00:40:16 -08:00
Cary R
9e3d6cc996
Elaborate alternate constant ternary expressions to check for errors
2021-01-29 18:10:03 -08:00
Cary R
21c5fbe759
Remove compile warnings
2021-01-18 13:15:12 -08:00
Stephen Williams
287ba56ab4
Merge pull request #473 from steveicarus/steveicarus/queue-element-expressions
...
Rework of elaboration of function calls.
Rework of symbol_lookup function and API.
2021-01-18 11:58:26 -08:00
Stephen Williams
38b3c8efb2
Rework symbol_search function.
...
There are too many ad hoc handlers of symbol_search partial results.
Rewrite symbol_search to clean up things like partial results and
member/method detections. Use this reworked symbol_search function
to rewrite expression elaborate for the PECallFunction expressions.
2021-01-17 19:33:52 -08:00
Cary R
308c744e98
Fix index down part selects to work with multiple dimensions
2021-01-11 21:39:38 -08:00
Cary R
5442f3fee7
Add sorry messages for missing array methods
2021-01-07 22:26:47 -08:00
Cary R
da7484eea1
Update compiler with suggestions from cppcheck
2021-01-02 14:04:46 -08:00
Cary R
99cb22fce0
Add the file/line info to the enum type
2020-12-30 15:22:15 -08:00
Stephen Williams
c335c68973
Fix compilation of enum.name method.
...
The implementation was mostly there, but elaboration failed
due to some obsolete assumtions.
2020-12-30 13:41:08 -08:00
Stephen Williams
a286764c1d
Add support for string parameters
...
Parameters can have string type and do the usual string stuff,
and also implement some of the string methods on string parameters
so that they evaluate down to constants.
2020-12-27 21:17:57 -08:00
Stephen Williams
16646c547c
Rework parsing of parameter types
...
Use the common data_type_or_implicit rules to support type
definitions for parameters. This eliminates a bunch of special
rules in parse.y, and opens the door for parameters having
more complex types.
2020-12-27 21:17:57 -08:00
Cary R
51025149a9
Report operators that cannot be used with null/class vars
2020-12-27 19:05:49 -08:00
Stephen Williams
bfd22c373f
Implement the string.atoi method
...
This implements:
string.atoi
string.atoreal
string.atohex
Fixes #414
2020-12-13 21:55:34 -08:00
Martin Whitaker
b0b44fdd8a
Support passing class objects as task/function arguments (GitHub issure #391 )
2020-11-24 17:16:46 +00:00
Stephen Williams
156644d91e
Detect and complain about some constructor chain errors
...
This.new is not allowed.
super.new beyond the first statement is not allowed.
And while I'm at it, clean up the use of "@" and "#" in
the code as tokens for this and super.
2020-11-22 15:31:40 -08:00
Martin Whitaker
0fada92389
Fix expression type for packed struct member access (GitHub issue #386 )
...
A NetESelect is used for accessing packed struct members and also for
accessing dynamic array elements. In these cases the expr_type() and
enumeration() methods should reflect the member/element type.
2020-11-20 16:50:11 +00:00
Cary R
112ebb48d8
Add file/line information to procedural warnings and darray fixes
...
When -pfileline=1 is used the queue procedural warnings have file
and line information added to the messages. Also switch the trace
debugging to be off by default.
Also, Add some preliminary missing darray functionality.
2020-08-10 22:01:55 -07:00
Cary R
61884e559c
Add support for assigning a queue using a normal concatenation
2020-08-09 21:10:30 -07:00
Cary R
2530041a38
Add support for assign array patterns to a queue
2020-07-30 19:52:38 -07:00
Cary R
520d5b392a
Add support for pop_back/front without ()
2020-07-25 22:16:54 -07:00
Cary R
6ecd43d947
Add/update queue compile time error messages
2020-07-25 16:33:30 -07:00
Cary R
c003bcc59a
Add support for <-> in constant and procedural contexts
2020-07-07 23:29:19 -07:00
Stephen Williams
d718e7b468
Handle case that strings are arguments of functions/tasks.
...
When strings are arguments to functions/tasks, that doesn't suddenly
make them implicitly scalar. Strings are vectors and should be treated
that was, even if they are IMPLICIT_REG.
2019-10-29 22:58:48 -07:00
Martin Whitaker
1069a0ef02
Don't evaluate built-in system functions if they are overridden.
...
We don't support evaluating user-defined system functions at compile
time. If possible, defer evaluation until run time. If used in a
constant expression, output a "sorry" message.
2019-10-19 16:12:17 +01:00
Martin Whitaker
9f7dc732ab
Add error recovery for invalid cast expressions.
2019-10-11 19:04:23 +01:00
Martin Whitaker
d56e90c3f4
Fix casts to integer types.
...
Casting from signed to unsigned types and vice versa is legal in SV,
as is casting from a larger to a smaller size. Obey Verilog rules
for expression bit width and signedness.
2019-10-10 23:48:11 +01:00
Martin Whitaker
f2ca63a5a1
Disable debug output when debug_elaborate is not set.
2019-10-06 18:10:58 +01:00
Martin Whitaker
de54a58991
Fix issue #265 - emit a sensible error message when an explicit cast is needed.
2019-10-06 17:54:44 +01:00
Cary R
e4ef928751
Fix some space issues
2019-09-29 17:11:19 -07:00
Stephen Williams
7b66de0711
Handle nested packed strucdts in r-values.
2019-09-24 15:05:39 -07:00
Martin Whitaker
02ee1c65d0
Support dynamic array initialisation in variable declarations.
2019-09-16 20:35:27 +01:00
Martin Whitaker
34bb98676a
Fix assertion failure on illegal SV cast.
...
Bug reported on iverilog-devel on 2018-02027.
2019-09-07 14:35:19 +01:00
Martin Whitaker
c4f71db00a
Update some comments.
2019-05-10 20:00:04 +01:00
Martin Whitaker
230f0bc13c
Fix GitHub issue #219 and #220 - incorrect results from SV size cast.
2018-12-15 11:11:35 +00:00
Martin Whitaker
e71a76a1e2
Fix signed/unsigned comparison warning.
2018-10-06 20:40:54 +01:00
Martin Whitaker
f1608e163f
Fix implicit fallthrough warnings when building with recent GCC.
2018-10-06 20:15:42 +01:00
Martin Whitaker
87c01c55c0
Don't allow non-vectorable arguments to $signed/$unsigned.
...
This led to an assertion failure in many cases (see br1029).
1364-2012 indicates it is illegal.
2018-05-14 22:13:56 +01:00
Cary R
c68a7fede3
Fix spacing
2017-11-20 07:30:52 -08:00
Cary R
3fc9ad2db0
Add support for the wild compare operators ==? and !=?
2017-11-17 19:32:50 -08:00
Cary R
d23b046203
Update the enumeration methods to set their width test attributes correctly
2017-11-17 13:09:14 -08:00
Martin Whitaker
5ca058bfb5
Add support for darray initialisation from another darray.
...
Fixes GitHub issue #164 .
2017-10-08 17:51:33 +01:00
Martin Whitaker
8a36849fda
Generate proper error messages for invalid dynamic array initialisers.
...
Invalid user code should not result in an "internal_error".
2017-10-08 12:59:30 +01:00
Martin Whitaker
8f6f999ea7
Fix for GitHub issue #142 - assertion failure when parameter expression
...
contains undefined variable.
2017-01-29 10:47:54 +00:00
Martin Whitaker
7cac4677bf
Fix for GitHub issue #130 part 2 : assertion failure on unsupported cast.
2016-11-25 22:11:13 +00:00
Henry Wong
182c08b528
Fix segfault when error in multi-dimensional part select.
2016-10-27 10:59:31 -07:00
Cary R
5853e32f82
Fix some cppcheck warning issues
2016-09-13 23:45:25 -07:00
Cary R
c706c5dd90
The array properties can be available in a constant context
...
For most arrays the various properties are available as constant
values and can be evaluated in the compiler.
2016-09-11 14:25:00 -07:00
Martin Whitaker
7f475d4210
Refactor to use new pad_to_width/cast_to_width functions.
2016-03-25 22:23:45 +00:00
Martin Whitaker
dc1c3a4043
Fix for GitHub issue #94 - enhance support for SystemVerilog size casting.
...
Allow the size expression to be any constant expression. Also ensure that
the expression width and type are correctly calculated and applied.
2016-03-25 21:49:28 +00:00