Krzysztof Bieganski
6cb0a41857
Support inline random variable control ( #5317 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2024-08-13 14:20:31 -04:00
Arkadiusz Kozdra
a61178bd89
Internals: Convert foreach loops in V3Begin as well as V3Width ( #5283 )
2024-08-02 08:29:05 -04:00
Wilson Snyder
8707c88787
Tests: Close misc internal code coverage holes
2024-07-28 14:18:24 -04:00
Wilson Snyder
1e3c7a5496
Fix inline function ref port persistence
2024-07-23 18:47:04 -04:00
Wilson Snyder
131623de34
Internals: Favor s string literals. No functional change.
2024-07-14 11:39:45 -04:00
Krzysztof Boroński
3cf9606ea9
Support inline constraints for class randomization methods ( #5234 )
...
Signed-off-by: Krzysztof Boronski <kboronski@antmicro.com>
2024-07-12 16:18:18 +02:00
Wilson Snyder
ad2862ce3f
Fix DPI import of null C-string ( #5179 ).
2024-06-14 22:50:54 -04:00
Wilson Snyder
7c9fa8647c
Fix string to be more standard ( #5082 ) ( #5083 ).
2024-05-31 21:51:12 -04:00
Wilson Snyder
4f3a816fb0
Fix false ASSIGNIN on functions with explicit port map ( #5069 ).
2024-04-26 19:26:21 -04:00
Arkadiusz Kozdra
5b839699ac
Support empty queue as dynarray default value ( #5055 )
...
Signed-off-by: Arkadiusz Kozdra <akozdra@antmicro.com>
2024-04-18 11:53:23 -05:00
Wilson Snyder
28718f964a
Fix tracing replicated hierarchical models ( #5027 ) ( #5029 )
2024-03-30 16:00:52 -04:00
Geza Lore
98206a4f04
Improve V3List user interface ( #4996 )
2024-03-25 23:06:25 +00:00
Geza Lore
9b729b80e0
Plug memory leaks ( #5016 )
2024-03-23 22:12:43 +00:00
Wilson Snyder
3786f59e03
Change to IEEE 1800-2023 warning mentions
2024-03-02 10:15:19 -05:00
Wilson Snyder
21e85f87bc
Fix compilation error on multi-inherited interface class usage ( #4819 ).
2024-01-23 19:36:11 -05:00
Wilson Snyder
3a5248a919
Internals: Mark structs final/VL_NOT_FINAL. No functional change intended.
2024-01-20 15:06:46 -05:00
Szymon Gizler
5f52c066e5
Internals: Add serializeOnly() and dumpTreeEitherLevel() ( #4815 ) ( #4715 ). No functional change intended.
2024-01-09 10:35:13 -05:00
Wilson Snyder
a36a07c297
Internals: Favor UASSERT over v3fatalSrc. No functional change intended.
2024-01-05 18:00:06 -05:00
Wilson Snyder
e76f29e5ba
Copyright year update
2024-01-01 03:19:59 -05:00
Ryszard Rozak
2dba76a7c2
Fix access type of function arguments ( #4692 ) ( #4694 )
2023-11-14 17:02:13 -05:00
Wilson Snyder
9fd5634778
Internals: Remove unneeded private's. No functional change
2023-11-13 21:37:45 -05:00
Geza Lore
8a77af7a6d
Remove redundant user*ClearTree calls
2023-11-02 19:16:48 +00:00
Ryszard Rozak
a764c70b4a
Fix handling of static keyword in methods ( #4649 )
2023-10-31 08:15:54 -04:00
Geza Lore
d60f180f43
Avoid double traversal of maps
...
The typical find/if-not-exists-insert pattern can be achieved with 1
lookup instead of 2 using emplace with a sentinel value. Also maps value
initialize their values when inserted with the [] operator, this is
defined and so there is no need to explicitly insert zeroes for integer
values.
2023-10-28 13:41:43 +01:00
Geza Lore
30318a6654
C++11 cleanup
2023-10-28 11:26:48 +01:00
Ryszard Rozak
84125d7c92
Fix virtual methods ( #4616 )
2023-10-24 15:51:46 +02:00
Wilson Snyder
b5828a7ce9
Fix header order botched by clang-format in recent commit.
2023-10-18 06:37:46 -04:00
github action
770cd24f27
Apply 'make format'
2023-10-18 02:50:27 +00:00
Wilson Snyder
431bb1ed16
Support compiling Verilator with gcc/clang precompiled headers ( #4579 )
2023-10-17 22:49:28 -04:00
Ryszard Rozak
45edcbb03e
Fix logical expressions with class objects - caching in v3Const ( #4552 )
2023-10-17 07:38:45 -04:00
Wilson Snyder
684aba0e90
Fix purity calculation during V3Const simplifying Ast
2023-10-15 06:25:42 -04:00
Mariusz Glebocki
28bd7e5b19
Rework multithreading handling to separate by code units that use/never use it. ( #4228 )
2023-09-24 22:12:23 -04:00
Ryszard Rozak
4636e9cffb
Fix passing arguments by reference ( #3385 partial) ( #4489 )
2023-09-20 07:33:11 -04:00
Ryszard Rozak
47b3f464a9
Disable conversion of impure logical expressions to bitwise expressions ( #487 partial) ( #4437 )
2023-09-18 09:21:30 -04:00
Wilson Snyder
ab13548018
Support resizing function call inout arguments ( #4467 ).
2023-09-17 18:23:44 -04:00
Wilson Snyder
8bd1c63b32
Support function non-constant default arguments ( #4470 ).
2023-09-16 17:37:25 -04:00
Kamil Rakoczy
0d67caff77
Internals: V3Task: refactor common code to connectPort. No functional change intended ( #4488 )
...
Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
2023-09-14 07:24:49 -04:00
Kamil Rakoczy
0baee84e96
Move `dpiTemporaryVarSuffix()` to header. ( #4474 )
...
Co-authored-by: Mariusz Glebocki <mglebocki@antmicro.com>
2023-09-11 09:01:09 -04:00
Ryszard Rozak
91227d26bb
Internals: Rename pure to dpiPure. No functional change. ( #4461 )
2023-09-08 08:51:19 +02:00
Ryszard Rozak
5b7e32581b
Internals: Cleanup V3Task. No function change intended. ( #4454 )
2023-09-01 08:03:16 -04:00
Krzysztof Bieganski
ffbbd438ae
Internals: Use runtime type info instead of `dynamic_cast` for faster graph type checks ( #4397 )
2023-08-31 18:00:53 -04:00
Wilson Snyder
ca6ab584d0
Internals: Remove cloneTreeNull. No functional change intended.
2023-08-29 20:29:11 -04:00
Ryszard Rozak
e24197fd16
Don't move function calls before the expression ( #4413 )
2023-08-28 15:44:41 +02:00
Aleksander Kiryk
4afa14b612
Internals: Remove m_pkgp and m_classp from WidthVisitor ( #4402 )
2023-08-05 03:07:23 -04:00
Krzysztof Bieganski
9caa79a7ea
Internals: Remove the name field from `AstVarRef` ( #4395 )
2023-08-03 02:52:52 -04:00
Wilson Snyder
06521f6cf1
Tests: Fix some missing coverage, and cleanup some error messages
2023-07-27 06:53:43 -04:00
Ryszard Rozak
3ff608b9cb
Fix non-public methods with wide output ( #4364 )
2023-07-25 04:55:58 -04:00
Ryszard Rozak
aa0ef554b3
Fix order of evaluation of function calls in statements ( #4375 )
2023-07-21 03:29:11 -04:00
Ryszard Rozak
a6015863d8
Support for static method calls as default values of function arguments ( #4378 )
2023-07-21 03:27:00 -04:00
Wilson Snyder
63b2dbb827
Fix error when multiple duplicate DPI exports ( #4301 ).
2023-06-20 06:26:46 -04:00
Aleksander Kiryk
db7935faf3
Add std::process class ( #4212 )
2023-06-01 10:02:08 -04:00
Ryszard Rozak
4f1f487ae4
Fix function calls in with statements ( #4245 )
2023-05-30 09:02:59 -04:00
Wilson Snyder
4818130e4f
Internals: Remove dead code, addBeforeStmt
2023-05-20 22:37:28 -04:00
Wilson Snyder
add68130b8
Internals: Rename to dumpLevel(), to avoid confusion with make-a-dump()
2023-05-03 18:04:10 -04:00
Wilson Snyder
8caf9be3e6
Internals: Favor {} constructor syntax. No functional change intended.
2023-04-06 21:04:26 -04:00
Wilson Snyder
895ab8789b
Internals: Fix recently added assertion false firing
2023-03-18 17:11:39 -04:00
Wilson Snyder
82e653a739
Internals: Avoid emit inheritance in V3EmitCBase. No functional change intended.
2023-03-18 12:23:17 -04:00
Kamil Rakoczy
798d7346cf
Internals: Add VL_MT_SAFE attribute to functions that requires locking. ( #3805 )
2023-03-17 20:24:15 -04:00
Wilson Snyder
1d2293b783
Fix some indents of warnMore
2023-01-05 17:59:51 -05:00
Wilson Snyder
b24d7c83d3
Copyright year update
2023-01-01 10:18:39 -05:00
Ryszard Rozak
073dc03adc
Support super.new calls ( #3789 )
2022-11-30 06:42:48 -05:00
Wilson Snyder
2c7f1ef40f
Internals: Cleanup debug dumps so can grep-out leading-dashed lines
2022-11-27 08:31:22 -05:00
Wilson Snyder
f44cd9cd48
Internals: Fix constructor style.
2022-11-20 17:40:38 -05:00
Geza Lore
3abb65d732
Strengthen AstNode types to AstNodeExpr
...
Declare every AstNode children and variables as AstNodeExpr where we
statically know this is the appropriate sub-type.
2022-11-20 19:31:28 +00:00
Wilson Snyder
aacb38b776
Support assignment expressions.
2022-11-19 15:23:37 -05:00
Geza Lore
65e08f4dbf
Make all expressions derive from AstNodeExpr ( #3721 ).
...
Apart from the representational changes below, this patch renames
AstNodeMath to AstNodeExpr, and AstCMath to AstCExpr.
Now every expression (i.e.: those AstNodes that represent a [possibly
void] value, with value being interpreted in a very general sense) has
AstNodeExpr as a super class. This necessitates the introduction of an
AstStmtExpr, which represents an expression in statement position, e.g :
'foo();' would be represented as AstStmtExpr(AstCCall(foo)). In exchange
we can get rid of isStatement() in AstNodeStmt, which now really always
represent a statement
Peak memory consumption and verilation speed are not measurably changed.
Partial step towards #3420
2022-11-03 16:02:16 +00:00
HungMingWu
196f3292d5
Improve V3Ast function usage ergonomics ( #3650 )
...
Signed-off-by: HungMingWu <u9089000@gmail.com>
2022-10-21 14:12:12 +01:00
Wilson Snyder
b930d0731a
Fix foreach and pre/post increment in functions ( #3613 ).
2022-10-18 20:04:09 -04:00
Geza Lore
ddb678cc5b
Merge branch 'master' into develop-v5
2022-09-22 17:33:36 +01:00
Geza Lore
63c694f65f
Streamline dump control options
...
- Rename `--dump-treei` option to `--dumpi-tree`, which itself is now a
special case of `--dumpi-<tag>` where tag can be a magic word, or a
filename
- Control dumping via static `dump*()` functions, analogous to `debug()`
- Make dumping independent of the value of `debug()` (so dumping always
works even without the debug flag)
- Add separate `--dumpi-graph` for dumping V3Graphs, which is again a
special case of `--dumpi-<tag>`
- Alias `--dump-<tag>` to `--dumpi-<tag> 3` as before
2022-09-22 17:24:41 +01:00
Geza Lore
95145038b4
Generate AstNode accessors via astgen
...
Introduce the @astgen directives parsed by astgen, currently used for
the generation child node (operand) accessors. Please see the updated
internal documentation for details.
2022-09-21 14:05:27 +01:00
Geza Lore
ce03293128
Generate AstNode accessors via astgen
...
Introduce the @astgen directives parsed by astgen, currently used for
the generation child node (operand) accessors. Please see the updated
internal documentation for details.
2022-09-21 13:56:03 +01:00
Geza Lore
7bc7b5372e
Merge branch 'master' into develop-v5
2022-09-17 16:12:28 +01:00
Geza Lore
7d88e63bab
astgen: generate type specific addNext, remove astNextNull
...
Generate type specific static overloads of Ast<Node>::addNext, which
return the correct sub-type of the 'this' they were invoked on.
Also remove AstNode::addNextNull, which is now only used in the parser,
implement in verilog.y directly as a template function.
2022-09-17 15:05:22 +01:00
Geza Lore
af305bf280
Merge branch 'master' into develop-v5
2022-09-16 16:24:36 +01:00
Geza Lore
0c70a0dcbf
Remove redundant 'virtual' keywords from overridden methods
...
'virtual' is redundant when 'override' is present, so keep only
'override'.
Add t/t_dist_cppstyle.pl to check for this.
2022-09-16 15:19:38 +01:00
Krzysztof Bieganski
10cf492946
Add support for expressions in event controls ( #3550 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2022-08-19 20:18:38 +02:00
Geza Lore
c266739e9f
Merge branch 'master' into develop-v5
2022-08-05 12:17:57 +01:00
Geza Lore
96a4b3e5a5
Update clang-format config and apply
...
- Regroup and sort #include directives (like we used to, but automatic)
- Set AlwaysBreakTemplateDeclarations to true
2022-08-05 12:00:24 +01:00
Geza Lore
6a7bda6910
Correctly schedule combinational logic driven from DPI exports.
...
Fixes #3429 .
2022-07-14 15:35:49 +01:00
Geza Lore
599d23697d
IEEE compliant scheduler ( #3384 )
...
This is a major re-design of the way code is scheduled in Verilator,
with the goal of properly supporting the Active and NBA regions of the
SystemVerilog scheduling model, as defined in IEEE 1800-2017 chapter 4.
With this change, all internally generated clocks should simulate
correctly, and there should be no more need for the `clock_enable` and
`clocker` attributes for correctness in the absence of Verilator
generated library models (`--lib-create`).
Details of the new scheduling model and algorithm are provided in
docs/internals.rst.
Implements #3278
2022-05-15 16:03:32 +01:00
Wilson Snyder
33105f017c
Commentary
2022-03-30 20:17:59 -04:00
Geza Lore
64a6e1ac8b
Add AstNode::foreach method for simple pre-order traversal ( #3276 )
2022-01-09 22:34:10 +00:00
Wilson Snyder
41a563bdc8
Internal cleanups towards recursive functions ( #3267 )
2022-01-04 20:19:58 -05:00
Wilson Snyder
e6857df5c6
Internals: Rename Ast on non-node classes ( #3262 ). No functional change.
...
This commit has the following replacements applied:
s/\bAstUserInUseBase\b/VNUserInUseBase/g;
s/\bAstAttrType\b/VAttrType/g;
s/\bAstBasicDTypeKwd\b/VBasicDTypeKwd/g;
s/\bAstDisplayType\b/VDisplayType/g;
s/\bAstNDeleter\b/VNDeleter/g;
s/\bAstNRelinker\b/VNRelinker/g;
s/\bAstNVisitor\b/VNVisitor/g;
s/\bAstPragmaType\b/VPragmaType/g;
s/\bAstType\b/VNType/g;
s/\bAstUser1InUse\b/VNUser1InUse/g;
s/\bAstUser2InUse\b/VNUser2InUse/g;
s/\bAstUser3InUse\b/VNUser3InUse/g;
s/\bAstUser4InUse\b/VNUser4InUse/g;
s/\bAstUser5InUse\b/VNUser5InUse/g;
s/\bAstVarType\b/VVarType/g;
2022-01-02 14:03:20 -05:00
Wilson Snyder
e334740dd6
Add AstInitialAutomatic as prep for static class members
2022-01-02 12:35:44 -05:00
Wilson Snyder
ca42be982c
Copyright year update.
2022-01-01 08:26:40 -05:00
Wilson Snyder
04e0c7e4f1
Support tracing through --hierarchical/--lib-create libraries ( #3200 ).
2021-11-27 17:07:27 -05:00
Wilson Snyder
cd737065f2
Internals: More const. No functional change intended.
2021-11-26 17:55:36 -05:00
Wilson Snyder
05e12ab60e
Internals: More const. No functional change intended.
2021-11-26 10:52:45 -05:00
Wilson Snyder
37e3c6da70
Internals: Add more const. No functional change intended.
2021-11-13 13:50:44 -05:00
Geza Lore
5515eed0b6
Make AstTopScope accessible from AstNetlist
...
AstTopScope is a singleton node and making it accessible without a
traversal simplifies some code and decouple some other.
2021-10-24 13:00:29 +01:00
Geza Lore
dae9fa5053
Use VN_AS wherever possible and obvious. No functional change.
2021-10-22 14:06:00 +01:00
Geza Lore
536bdf506e
Fix re-evaluation of logic dependent on state set in DPI exports ( #3091 ).
...
Verilator should now correctly re-evaluate any logic that depends on
state set in a DPI exported function, including if the DPI export is
called outside eval, or if the DPI export is called from a DPI import.
Whenever the design contains a DPI exported function that sets a
non-local variable, we create a global __Vdpi_export_trigger flag, that
is set in the body of the DPI export, and make all variables set in any
DPI exported functions dependent on this flag (this ensures correct
ordering and change detection on state set in DPI exports when needed).
The DPI export trigger flag is cleared at the end of eval, which ensured
calls to DPI exports outside of eval are detected. Additionally the
ordering is modifies to assume that any call to a 'context' DPI import
might call DPI exports by adding an edge to the ordering graph from the
logic vertex containing the call to the DPI import to the DPI export
trigger variable vertex (note the standard does not allow calls to DPI
exports from DPI imports that were not imported with 'context', so we
do not enforce ordering on those).
2021-08-12 21:43:32 +01:00
Wilson Snyder
b8e804f05b
Internals: Some clang-tidy cleanups. No functional change intended.
2021-07-25 13:38:27 -04:00
Geza Lore
1de33b9fb7
Support localparams in tasks/functions
2021-07-23 20:34:49 +01:00
Wilson Snyder
8ecdc85cf7
Internals: C++11 style cleanups. No functional change.
2021-07-11 18:42:01 -04:00
Wilson Snyder
512fe0a2d1
Internals: Add const. No functional change.
2021-06-20 18:33:13 -04:00
Geza Lore
c75a686081
Internals: Update to clang-format-11 ( #3021 )
2021-06-14 14:50:40 -04:00
Geza Lore
7280307a39
Implement DPI import/export as loose functions
2021-06-13 15:06:28 +01:00