Commit Graph

239 Commits

Author SHA1 Message Date
Zachary Snow 8d37db30e5 support complex modport expressions
- modports can use complex expressions
- update interface_infer test for consistency across simulators
- fix interface inlining of implicitly typed data declarations
2020-06-19 20:32:37 -04:00
Zachary Snow 64f3067d78 allow dimension shorthand for instance arrays 2020-06-17 22:26:27 -04:00
Zachary Snow 3cfd368bc2 support multi-dimensional instances 2020-06-17 22:18:08 -04:00
Zachary Snow 12be569742 reduce usage of maybe 2020-06-14 15:56:09 -04:00
Zachary Snow 9adb7522e9 improve stmt representation 2020-06-09 21:18:31 -04:00
Zachary Snow ae392d4536 fix single bit enum sizing
- single bit localparams retain explicit range
- fix $bits on unsized literals
- use Implicit over Maybe for underlying type
2020-06-05 21:32:02 -04:00
Zachary Snow 790312d25d vim modelines for Lex.x and Parse.y 2020-05-06 19:03:32 -04:00
Zachary Snow 543a104683 upgrade to stackage lts-14.26 2020-04-05 13:45:31 -04:00
Zachary Snow b8d512e31f remove unneeded imports 2020-04-05 13:45:22 -04:00
Zachary Snow bcafef8d01 allow empty list_of_parameter_assignments 2020-03-30 19:27:44 -04:00
Zachary Snow 1687b1c5c1 allow empty parameter_port_list (resolves #83) 2020-03-25 23:55:19 -04:00
Rupert Swarbrick 78f3db8803 Fail more gracefully on mismatched `if/`elsif/`else/`endif
Without this patch, a stray `endif caused sv2v to take the tail of an
empty list. Now we raise a lexical error.

To do this, the patch pulls the "push" and "pop" logic for the
preprocessor condition stack into separate helper
functions (pushCondStack and popCondStack). It also defines some
helper functions for manipulating Cond's.

The patch also adds a documentation comment explaining what the
different values of Code meant (because I had to squint to work it
out).
2020-03-23 20:19:25 -04:00
Zachary Snow 35e75c0604 language support for strengths 2020-03-20 21:13:57 -04:00
Zachary Snow bd68ab0852 faster parsing of very long files 2020-03-20 18:53:06 -04:00
Zachary Snow f44e3e808a add option to skip preprocessing 2020-03-18 20:02:20 -04:00
Zachary Snow dd9f040f1f improved handling of genvars 2020-02-23 22:30:17 -05:00
Zachary Snow ad21277eb5 support macro names comprised of macro args and macros 2020-02-16 22:18:12 -05:00
Zachary Snow 463cdcb2c1 support complex sizes in size casts (resolves #69) 2020-02-15 16:48:09 -05:00
Zachary Snow 104f98011e support for string literals with macros
- adds support for using macros and macro arguments within the argument
  list to other macros
- fixes an issue where macros with arguments would have extraneous
  whitespace
- fixes handling of multiline string literals
2020-02-12 23:58:41 -05:00
Zachary Snow fc9999aeea support implied port directions 2020-02-08 22:48:21 -05:00
Zachary Snow 4b3b09d2db allow extraneous semicolons in generate blocks 2020-02-08 22:15:35 -05:00
Zachary Snow 3c08767b63 redesigned preprocessor and lexer 2020-02-06 23:33:13 -05:00
Zachary Snow 2dcd35ade7 support typedefs with unpacked dimensions 2020-02-02 21:40:43 -05:00
Zachary Snow a402a73477 alias macromodule to module 2020-02-01 16:45:33 -05:00
Zachary Snow 1a9068409e forbid illegal macro names 2020-02-01 16:42:25 -05:00
Zachary Snow 9694799a23 more consistent procedural assignment support 2020-02-01 15:52:52 -05:00
Zachary Snow 610d9abacf support for gates with delays 2020-01-31 20:24:37 -05:00
Zachary Snow dd0eb5981d added source trace comments
- Trace comments cover module items, decls, and stmts
- Added pseudo-lexer to Alex parser for monadic Position production
- Added Position to every DeclToken
- Removed Comment PackageItem
- Added CommentStmt and CommentDecl
- Fixed traversal skipping outer MIAttr ModuleItems
- Generally cleaned up Parser modules
2020-01-30 22:17:17 -05:00
Zachary Snow 9f180f91e5 improve `line error message 2020-01-27 19:23:36 -05:00
Zachary Snow ad98c14547 fix handling of macros at EOF (resolves #62) 2020-01-27 19:18:58 -05:00
Zachary Snow cf4c2a5491 expanded support for macros in preprocessor directives 2020-01-14 23:19:39 -05:00
Zachary Snow 22d6ba4927 support evaluating functions as statements 2020-01-11 21:06:09 -05:00
Zachary Snow b58248fc2c support type operator on simple expressions 2020-01-11 16:22:07 -05:00
Zachary Snow 82217ec05c updated lifetime representation; struct packers use automatic 2019-12-22 12:01:05 -05:00
Zachary Snow 7ea5b60d0b support for inside case statements 2019-12-21 20:41:19 -05:00
Zachary Snow ba79b17bd9 pragma and line directive validation 2019-12-09 21:45:11 -05:00
Zachary Snow fb5fd39388 support for inside expression ranges and wildcards 2019-12-08 17:36:25 -05:00
Zachary Snow 96fe986b2d cleanup case representation 2019-12-01 23:25:33 -05:00
Zachary Snow 58ad1feab1 allow reading from stdin 2019-11-19 23:29:19 -05:00
Zachary Snow eebe41427e language support for final blocks 2019-10-31 20:39:11 -04:00
Zachary Snow 3597f4a6be support for methods (no conversion) and interface TFs 2019-10-19 16:22:46 -04:00
Zachary Snow 336b180d74 lexer handles carriage returns (closes #51) 2019-10-19 13:27:29 -04:00
Zachary Snow 8e8d44f421 allow array struct fields 2019-10-13 23:59:36 -04:00
Zachary Snow de581ecaf5 initial support for types in struct patterns 2019-10-13 19:01:42 -04:00
Zachary Snow c722e931fe allow time delay values 2019-10-11 22:56:16 -04:00
Zachary Snow 1e35ba269d allow repeat shorthand in patterns 2019-10-11 22:54:21 -04:00
Zachary Snow fea5ff44eb coalesce tokens across nested macros 2019-10-11 22:53:08 -04:00
Zachary Snow d86f8535a0 support for begin_keywords directive 2019-10-11 19:32:10 -04:00
Zachary Snow b660cfbd4e allow tabs in preprocessor directives 2019-10-10 22:10:59 -04:00
Zachary Snow 167c65db11 pass through downstream compiler directives 2019-10-10 20:53:49 -04:00
Zachary Snow 6d79e0b491 updated number literals 2019-10-10 19:01:09 -04:00
Zachary Snow 149d16d8fc add support for `line directive 2019-10-10 19:00:49 -04:00
Zachary Snow e23d68a652 discard const keyword 2019-10-09 22:16:58 -04:00
Zachary Snow 910282fbf7 allow parens around senses 2019-10-09 22:16:57 -04:00
Zachary Snow d2976170f3 allow extraneous semicolons after package items 2019-10-09 22:16:38 -04:00
Zachary Snow 9880885412 Revert "allow escaped newline in macro arguments"
This reverts commit ba7fbd5506.
2019-10-09 00:36:23 -04:00
Zachary Snow 8ae89a7bd4 support and convert jumps: break, continue, and return 2019-10-08 23:50:26 -04:00
Zachary Snow 08c38e6193 support time literals as expressions 2019-10-06 21:21:58 -04:00
Zachary Snow 1a394cff9c support mintypmax expressions 2019-10-06 16:18:15 -04:00
Zachary Snow f0368714e1 support generate for without explicit block 2019-10-06 15:36:29 -04:00
Zachary Snow a1735ffef7 fix lexing identifiers and numbers across macro boundaries 2019-10-06 15:16:48 -04:00
Zachary Snow ba7fbd5506 allow escaped newline in macro arguments 2019-10-03 23:29:49 -04:00
Zachary Snow 9524f0028b support identifier delay values 2019-10-03 20:38:38 -04:00
Zachary Snow 77dd1011e3 support multiple assignments in one `assign` 2019-10-03 19:37:42 -04:00
Zachary Snow 2b84bdb7e2 support for type param without parameter keyword 2019-10-01 22:02:30 -04:00
Zachary Snow ceb384f680 support multiline strings 2019-09-30 23:53:18 -04:00
Zachary Snow c6eedb9f26 pass through named events 2019-09-30 23:22:05 -04:00
Zachary Snow b7959c7aa2 support for statement labels and basic fork-join 2019-09-30 23:03:55 -04:00
Zachary Snow d57c967090 added partial support for implicitly sized arrays 2019-09-28 16:57:36 -04:00
Zachary Snow 76663c78a0 fix typename decl asgn lookahead (resolves #49) 2019-09-25 19:34:42 -04:00
Zachary Snow f4181aba76 added pass-through support for strings 2019-09-24 22:09:18 -04:00
Zachary Snow bce438c841 default case can be anywhere in case block 2019-09-24 22:09:08 -04:00
Zachary Snow 2d8e6bddd3 parser rejects function input decls with bad directions 2019-09-22 23:29:02 -04:00
Zachary Snow 82218848fc allow post inc/dec as first stmt in a block 2019-09-18 23:39:09 -04:00
Henner Zeller e2f044ec4a Place <file>:<line>:<col> first in an error message
This is the same as most compilers (e.g. gcc and clang) but also
verilog tools (e.g. yosys) output error mesasge in a standardized form.

This form can immediately be parsed by IDE tools that can jumping
through a list of error messages, placing the cursor at the given
file position.

This change simply re-arranges the error message printing to conform to that
standard.

Signed-off-by: Henner Zeller <h.zeller@acm.org>
2019-09-18 19:16:37 -04:00
Zachary Snow 191922e2a7 plain typedef forward declaration 2019-09-17 20:44:50 -04:00
Zachary Snow 2d034dcb73 basic support for elaboration system tasks 2019-09-17 20:30:17 -04:00
Zachary Snow 1078603bfd support complex constant expression size casts 2019-09-17 19:49:38 -04:00
Zachary Snow 512d4b1a7f support module "list of param assignments" shorthand 2019-09-17 19:48:08 -04:00
Zachary Snow bdafb60dec lexical and parse errors print to stderr 2019-09-17 19:34:56 -04:00
Zachary Snow 7267f94b0b allow signing on net types (closes #40) 2019-09-16 19:50:30 -04:00
Zachary Snow 5d80c83092 support for module attributes (resolves #39) 2019-09-15 23:17:14 -04:00
Zachary Snow 77b9d2f085 support and conversion for foreach 2019-09-15 16:32:19 -04:00
Zachary Snow 7f701cd112 fixed dimension shorthand diretion and relevant tests 2019-09-15 16:30:53 -04:00
Zachary Snow 2ca8a022ad support and conversion for -> and <-> 2019-09-15 13:55:40 -04:00
Zachary Snow f5d6683422 generalization of array dimension(s) system functions 2019-09-14 12:38:26 -04:00
Zachary Snow a14d078230 substitution conversion for size casts (closes #27) 2019-09-11 22:52:01 -04:00
Zachary Snow 6ddf782383 drop timeunit and timescale (closes #31) 2019-09-11 21:44:57 -04:00
Zachary Snow 46242aac5d fix combined array declarations (resolves #34) 2019-09-11 19:32:12 +02:00
Zachary Snow a0068f60f2 remove old unused grammar rules 2019-09-11 19:32:04 +02:00
Zachary Snow f8a2bcbea0 conversion for function void (resolves #32) 2019-09-11 19:31:50 +02:00
Zachary Snow 66989b0446 language support for parameter type bindings 2019-09-09 07:38:14 +02:00
Zachary Snow d11e898edb Added ParamType decl; combined parameter and localparam under Param 2019-09-09 07:34:43 +02:00
Zachary Snow ad0db916cc support typedef forward declarations 2019-09-04 23:41:24 -04:00
Zachary Snow 1a6e0ce9df added support for inside expressions (closes #28) 2019-09-04 21:36:50 -04:00
Zachary Snow 33bea9e694 added remaining SV keywords 2019-09-04 21:02:02 -04:00
Zachary Snow 7340464364 ParseDecl edge case 2019-09-02 22:57:57 -04:00
Zachary Snow 1f7c70dfe1 language support for LHS streaming operators 2019-09-02 20:46:35 -04:00
Zachary Snow 04de45b08b language support for streaming operators 2019-09-01 18:42:16 -04:00
Zachary Snow 638adb3538 fixed ParseDecl mischaracterizing block decl as stmt 2019-09-01 18:40:24 -04:00