Martin Whitaker
12d67bb9ae
Support SV [size] dimension for module and gate instances (issue #553 ).
...
Also output a proper error message if multiple dimensions are supplied
instead of failing an assertion.
(cherry picked from commit dcc9b59f6d )
2021-11-06 08:44:13 +00:00
Martin Whitaker
52b099feae
Remove "using namespace std" from compiler header files and fix the fallout.
...
(cherry picked from commit ecbbb60fb6 )
2021-11-04 19:22:43 +00:00
Martin Whitaker
19dc81a242
Fix detection of directly nested generate constructs.
...
If a generate construct is enclosed in a begin-end pair, it can't
be directly nested (1364-2005 section 12.4.2).
(cherry picked from commit c34167b2c0 )
2021-08-04 15:40:20 +01:00
Martin Whitaker
33b822d997
Add support for local genvar declaration in generate loops.
...
As requested in GitHub issue #304 .
2020-01-31 20:29:22 +00:00
Martin Whitaker
0023804777
Add support for increment/decrement operators in generate loop iteration.
...
As requested in GitHub issue #303 .
2020-01-30 21:45:04 +00:00
Martin Whitaker
c5c264400e
Add support for package scope resolution for named events.
2019-10-01 09:07:54 +01:00
Martin Whitaker
12fe4f2bf3
Fix handling of wildcard-imported types.
...
Don't add them to the explicit imports until they are referenced legally.
Stop searching when a matching name is found, even if it isn't a type name.
2019-10-01 09:07:48 +01:00
Martin Whitaker
b0142a6406
Add support for named events in packages.
2019-10-01 09:07:39 +01:00
Martin Whitaker
03c4c63df1
Fix file/line reported for duplicate named blocks.
2019-09-27 22:19:30 +01:00
Martin Whitaker
d3bced57cc
Correctly handle explicit and wildcard package imports.
...
Explicit imports should always conflict with local declarations using
the same name. Wildcard imports only conflict if they are referenced
before a local declaration with the same name.
This also unifies the detection of identifier conflicts.
2019-09-27 22:19:30 +01:00
Martin Whitaker
269ec2f042
Remove redundant checks for package imports during parsing.
...
The find_* and symbol_search functions now handle this.
2019-09-27 22:19:30 +01:00
Martin Whitaker
2a21fe77ac
Output an error message when a SV variable declaration reuses a name.
...
Assertion failures are not the right way to handle user code errors.
2018-02-18 17:51:56 +00:00
Martin Whitaker
f83e01847a
Fix a couple of minor bugs in the timescale parsing rework.
2017-11-06 00:37:56 +00:00
Martin Whitaker
fd807a7700
Rework handling of timescales in parser.
...
This implements and enforces the full set of rules for determining
timescales in SystemVerilog. The previous relaxation of the rules
that allowed timescales to be redefined within the compilation unit
scope has been removed. Time unit and precision redeclarations are
now recognised after a nested module declaration.
2017-11-05 17:50:05 +00:00
Vamsi Vytla
cfd3b893be
Add support to handle attributes at module instantiation sites.
...
(* my_fancy_attribute *)
foobar1 foobar (clk(clk), rst(rst) ...);
- Modifies PGModule to hold the attribute map (can be verified with pform_dump)
- pform_make_modgate(s) bind the attributes from the parser to the above map
- The attributes from PGModule are inserted into the NetScope of that module
PGModule::elaborate_scope_mod_instances_
- Currently these attributes automatically make it into netlist
- These attributes are accessible via ivl_scope_attr_cnt and ivl_scope_attr_val
from ivl_target.h
2017-03-16 07:41:10 -07:00
Cary R
45fbf55806
Add basic support for parameters using typedefs
2016-05-14 10:34:50 -07:00
Martin Whitaker
6ba2bee977
Fix for br974 - support SV types in non-ansi port declarations.
2016-04-04 20:40:30 +01:00
Martin Whitaker
6e718c2e0c
Added support for default subroutine lifetimes (SystemVerilog).
2016-03-19 17:27:27 +00:00
Martin Whitaker
635adfc01e
Fully support variable initialization in tasks/functions/named blocks.
2016-03-19 13:04:38 +00:00
Christian Taedcke
6d5aabd4f0
Make a few constructors explicit.
...
This removes cppcheck warnings.
2015-10-22 12:33:33 +02:00
Cary R
21c60b38e1
Fix space issues in the code.
2015-01-15 17:47:39 -08:00
Maciej Suminski
b6e16aea6b
ivl: Typedefs may use unpacked arrays.
2015-01-12 11:08:31 +01:00
Martin Whitaker
bca84d9dbb
Added parser support for SV modport declarations.
2015-01-10 11:10:41 +00:00
Martin Whitaker
b400532169
Added support for interface declaration and instantiation.
...
modport and extern tf declarations are not yet supported.
2014-12-19 23:10:14 +00:00
Stephen Williams
f602ae84ab
Elaborate foreach loops as synthetic for loops.
...
Create an implicit scope to hold the index variable, and
generate a for loop to perform the functionality of the
foreach.
2014-08-21 16:44:46 -07:00
Cary R
d6b6b76015
Update header files to use a more standard name to prevent rereading
...
This is from github report #16 . There are likely a few more issues
that need to be addressed though this takes care of the major ones.
2014-07-23 13:42:56 -07:00
Stephen Williams
14f597acdd
Add support for synthesis translate meta-comments.
2014-07-15 18:03:40 -07:00
Stephen Williams
f8e33b12cd
Clean up pform_module_define_port in preparation for new tricks.
...
Get rid of the data_type, signed_flag, and range arguments to the
pform_module_define_port because they add no value within the
parse.y parser. Cleaning these out will hopefully ease the addition
of new functionality.
2014-04-06 08:40:09 -07:00
Stephen Williams
9bd9c8f301
Implement class extends arguments.
...
This implements constructor arguments right after the base class
name in the class extends syntax.
2013-11-10 18:03:19 -08:00
Stephen Williams
9f83882bcc
Parse/elaborate class derivation
...
This gets us down to working classes, but does not yet implement
calls to the parent constructor, implicitly or explicitly.
2013-11-10 18:03:19 -08:00
Stephen Williams
9a116498a2
Handle task/function default expressions in parsing/pform.
...
This gets it to (but not through) the elaborator.
2013-09-20 20:44:56 -07:00
Stephen Williams
75b4b94061
Elaborate implicit initializers
...
Remaining pform fixup of property initializers, and
elaboration and code generation for implicit constructor.
2013-07-02 20:16:46 -07:00
Martin Whitaker
6364aba975
Fix for br930 - support attributes on old-style port declarations.
2013-05-19 09:16:24 +01:00
Stephen Williams
20ee350601
Generalize user defined function return type handling.
...
I'm gonna need functions to return class objects, so generalize
the output types of user defined functions.
2013-04-20 16:38:35 -07:00
Stephen Williams
4dffd97d28
Handle tasks in packages.
2013-04-08 18:20:39 -07:00
Stephen Williams
eba3d407ca
packages can contain variables.
2013-04-08 18:20:39 -07:00
Stephen Williams
bae0f1d3a7
Parse more package items
...
Rework lexical support for PACKAGE_IDENTIFIER so that the lexor
can help with package scoped identifiers.
Pform package types and package functions up to elaboration.
2013-04-08 18:20:39 -07:00
Stephen Williams
17330a3073
Elaborate class task and function methods.
...
The parse of class methods already works, this patch forms
the methods into their own scopes, and elaborates those scopes.
The "this"
2013-03-24 15:12:35 -07:00
Stephen Williams
fac5cbca43
Handle this as special identifier strings. / Organize pform class member binding
2013-03-24 15:03:52 -07:00
Stephen Williams
670601bc2a
Mark class method pforms with their pform class.
2013-03-24 15:03:52 -07:00
Stephen Williams
25b48fa790
Remove svector template from port handling.
2013-03-24 15:03:52 -07:00
Stephen Williams
8fa79ceb30
Properly implement import <pkg>::<name>
...
This was temporarily implemented to just copy definitions to the
local scope, but the better method is to create a PEIdent that has
the package attached to it.
2013-02-17 17:00:15 -08:00
Stephen Williams
60cb78e4ab
Add packages and their own scope.
...
This makes <pkg>::<name> work properly, and also makes the
package descriptions available through VPI.
2013-02-17 17:00:15 -08:00
Stephen Williams
99b8086ad2
Import parameters from packages.
2013-02-17 16:59:21 -08:00
Stephen Williams
77d24cd095
Elaborate class_new and (null) expressions
...
This gets the types right for class_new and null expressions, and
elaborate them down to the ivl_target.h API.
2012-12-10 19:13:43 -08:00
Stephen Williams
55bebc8c39
Stub to pform class properties and null expressions.
2012-12-10 19:13:43 -08:00
Stephen Williams
62be9c5b46
Parse (with sorry message) package declarations.
2012-10-21 11:42:19 -07:00
Stephen Williams
f24d6b055d
Use data_type_t instead of raw type bits.
2012-09-03 16:00:10 -07:00
Stephen Williams
3d9ed1f0f8
Clean up PWire handling of wire data type. / Reword packed type handling
2012-09-03 16:00:09 -07:00
Arun Persaud
f5aafc32f9
updated FSF-address
2012-08-29 10:12:10 -07:00