| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
|  | 
Bugpoint's current documentation does specify that the result of a run is stored as the current design,
however it's easy to skim over what that means in practice. 
Add a documentation comment to explain specifically that an after bugpoint `write_xyz` pass is required to save
the reduced design.
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
Fixes #2646 fallout.
 | 
| |\  
| | 
| |  | 
split CodingReadme into multiple files
 | 
| | |  | 
 | 
| | |  | 
 | 
| |/   | 
 | 
| |  | 
 | 
| |  | 
 | 
| |\  
| | 
| |  | 
Fix check for bad std::regex
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
This was actually a ticking UB bomb: after running the parser, the type
maps contain pointers to children of the current AST, which is
recursively deleted after the pass has executed. This leaves the
pointers in user_type_stack dangling, which just happened to never be a
problem due to another bug that causes typedefs from higher-level type
maps to never be considered.
Rebuilding the type stack from the design's globals ensures the AstNode
pointers are valid.
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
cell_inputs and cell_outputs retain cell pointers as their keys across
invocations of setup(), which may however be invalidated in the meantime
(as happens in e.g. passes/opt/share.cc:1432). A later rehash of the
dicts (caused by inserting in ModWalker::add_wire()) will cause them to
be dereferenced.
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
Co-authored-by: Grzegorz Latosiński <glatosinski@antmicro.com>
Co-authored-by: Maciej Kurc <mkurc@antmicro.com>
Co-authored-by: Tarachand Pagarani <tpagarani@quicklogic.com>
Co-authored-by: Lalit Sharma <lsharma@quicklogic.com>
Co-authored-by: kkumar23 <kkumar@quicklogic.com>
 | 
| |/  
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|    | 
Calling log_signal is problematic for several reasons:
- with recent changes, empty string is serialized as { }, which violates
  the "no spaces in IdString" rule
- the type (plain / real / signed / string) is dropped, wrongly conflating
  functionally different values and potentially introducing a subtle
  elaboration bug
Instead, use a custom simple serialization scheme.
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This prevents issues like processes in whiteboxes triggering an error in
the JSON backend.
Signed-off-by: gatecat <gatecat@ds0.me>
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This breaks the ability to use a global typename as a standard
identifier in a subsequent input file. This is otherwise backwards
compatible, including for sources which previously included conflicting
typedefs in each input file.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
From IEEE1364-2005, section 7.3 buf and not gates:
> These two logic gates shall have one input and one or more outputs.
> The last terminal in the terminal list shall connect to the input of the
> logic gate, and the other terminals shall connect to the outputs of
> the logic gate.
yosys does not follow this and instead interprets the first argument as
the output, the second as the input and ignores the rest.
 | 
| | 
| 
| 
|  | 
Signed-off-by: gatecat <gatecat@ds0.me>
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Previously, memories were silently discarded by the JSON backend, making
round-tripping modules with them crash.
Since there are already some users using JSON to implement custom
external passes that use memories (and infer width/size from memory
ports), let's fix this by just making JSON backend and frontend support
memories as first-class objects.
Processes are still not supported, and will now cause a hard error.
Fixes #1908.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The already-existing special case for conditionals on clock has been
remade as follows:
- now triggered for the last remaining edge trigger after all others
  have been converted to async reset, not just when there is only one
  sync rule in the first place
- does not require all contained assignments to be constant, as opposed
  to a reset conditional — merely const-folds the condition
In addition, the code has been refactored a bit; as a bonus, the
priority order of async resets found is now preserved in resulting sync
rule ordering (though this is not yet respected by proc_dff).
Fixes #2656.
 | 
| | 
| 
| 
|  | 
Fixes #2546.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Among other problems, this also fixes equality comparisons between
SigSpec by enforcing a canonical form.
Also fix another minor issue with possible non-canonical SigSpec.
Fixes #2623.
 | 
| |\  
| | 
| |  | 
sv: allow globals in one file to depend on globals in another
 | 
| |/  
|   
|   
|   
|   
|    | 
This defers the simplification of globals so that globals in one file
may depend on globals in other files. Adds a simplify() call downstream
because globals are appended at the end.
 | 
| |\  
| | 
| |  | 
verilog: disallow overriding global parameters
 | 
| | | 
| | 
| | 
| | 
| | 
| |  | 
It was previously possible to override global parameters on a
per-instance basis. This could be dangerous when using positional
parameter bindings, hiding oversupplied parameters.
 | 
| |\ \  
| | | 
| | |  | 
CXXRTL: some -noproc fixes
 | 
| | | | 
| | | 
| | | 
| | | 
| | |  | 
These are commonly the result of tying an async reset to an inactive
level.
 | 
| | | | 
| | | 
| | | 
| | | 
| | |  | 
These can be produced from `always @*` processes, if `-noproc`
is used.
 | 
| | |/  
|/|    | 
 | 
| | |  | 
 | 
| |\ \  
| | | 
| | |  | 
Fix param without default log line
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | |  | 
 | 
| | | | 
| | | 
| | | 
| | |  | 
Fixes #2513.
 | 
| | | | 
| | | 
| | | 
| | |  | 
Fixes #2619.
 | 
| | | | 
| | | 
| | | 
| | |  | 
This job is now performed by `opt_dff`, which runs before this pass.
 | 
| |/ /  
| |   
| |   
| |    | 
These have no defined semantics, making the tests non-deterministic.
 | 
| | |  | 
 | 
| |\ \  
| | | 
| | |  | 
sv: support for parameters without default values
 | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
- Modules with a parameter without a default value will be automatically
  deferred until the hierarchy pass
- Allows for parameters without defaults as module items, rather than
  just int the `parameter_port_list`, despite being forbidden in the LRM
- Check for parameters without defaults that haven't been overriden
- Add location info to parameter/localparam declarations
 | 
| |\ \ \  
| | | | 
| | | |  | 
verilog: impose limit on maximum expression width
 |