| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\
| |
| | |
Improved rewrite code for writing to bit slice
|
| |
| |
| |
| | |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
| |
| |
| |
| | |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds the new rewrite rule. But it's still missing a check that makes
sure the new rewrite rule is actually a valid substitute in the always
block being processed. Therefore the new rewrite rule is just disabled
for now.
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
|\ \
| | |
| | | |
ast, rpc: record original name of $paramod\* as \hdlname attribute
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The $paramod name mangling is not invertible (the \ character, which
separates the module name from the parameters, is valid in the module
name itself), which does not stop people from trying to invert it.
This commit makes it easy to invert the name mangling by storing
the original name explicitly, and fixes the firrtl backend to use
the newly introduced attribute.
|
| | |
| | |
| | |
| | | |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
| | | |
|
|/ /
| |
| |
| | |
nodes.
|
| | |
|
|/
|
|
| |
Signed-off-by: David Shah <dave@ds0.me>
|
|\
| |
| | |
ast/simplify: improve enum handling
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before this commit, enum values were serialized as attributes of form
\enum_<width>_<value>
where <value> was a decimal signed integer.
This has multiple drawbacks:
* Enums with large values would be hard to process for downstream
tooling that cannot parse arbitrary precision decimals. (In fact
Yosys also did not correctly process enums with large values,
and would overflow `int`.)
* Enum value attributes were not confined to their own namespace,
making it harder for downstream tooling to enumerate all such
attributes, as opposed to looking up any specific value.
* Enum values could not include x or z, which are explicitly
permitted in the SystemVerilog standard.
After this commit, enum values are serialized as attributes of form
\enum_value_<value>
where <value> is a bit sequence of the appropriate width.
|
| |
| |
| |
| | |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
|\ \
| | |
| | | |
support using previously declared types/localparams/parameters in package
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
(parameters in systemverilog packages can't actually be overridden, so
allowing parameters in addition to localparams doesn't actually add any
new functionality, but it's useful to be able to use the parameter
keyword also)
|
|\ \ \
| |_|/
|/| | |
duplicated enum item names should result in an error
|
| |/ |
|
|\ \
| | |
| | | |
Clean up pseudo-private member usage in `frontends/ilang/ilang_parser.y`.
|
| | | |
|
|/ /
| |
| |
| | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \
| | |
| | | |
Improve handling of integer literals in RTLIL frontend
|
| | |
| | |
| | | |
Co-Authored-By: Alberto Gonzalez <61295559+boqwxp@users.noreply.github.com>
|
| | |
| | |
| | |
| | | |
Fixes #1838.
|
| |/ |
|
|/ |
|
|\
| |
| | |
ast: cap dynamic range select to size of signal, suppresses warnings
|
| | |
|
|\ \
| | |
| | | |
IdString: use more ID::*, make them easier to use, speed up IdString::in()
|
| | | |
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Adding error message for when size (width) of number literal is zero
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
kernel: speedup by using more pass-by-const-ref
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
verilog: Add location info for generate constructs
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \ \ \ \
| |_|_|/ /
|/| | | /
| | |_|/
| |/| | |
ast: simplify to fully populate dynamic slicing case transformation
|
| | |/
| |/| |
|
|\ \ \
| |_|/
|/| | |
Clean up pseudo-private member usage in `frontends/ast/ast.cc`.
|
| | |
| | |
| | |
| | |
| | |
| | | |
superfluous call to `fixup_ports()`.
Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Support module/package/interface/block scope for typedef names.
|
| | | | |
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Add support for SystemVerilog-style `define to Verilog frontend
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch should support things like
`define foo(a, b = 3, c) a+b+c
`foo(1, ,2)
which will evaluate to 1+3+2. It also spots mistakes like
`foo(1)
(the 3rd argument doesn't have a default value, so a call site is
required to set it).
Most of the patch is a simple parser for the format in preproc.cc, but
I've also taken the opportunity to wrap up the "name -> definition"
map in a type, rather than use multiple std::map's.
Since this type needs to be visible to code that touches defines, I've
pulled it (and the frontend_verilog_preproc declaration) out into a
new file at frontends/verilog/preproc.h and included that where
necessary.
Finally, the patch adds a few tests in tests/various to check that we
are parsing everything correctly.
|