mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-24 05:08:56 +00:00
verilog: fix sizing of constant args for tasks/functions
- Simplify synthetic localparams for normal calls to update their width - This step was inadvertently removed alongside `added_mod_children` - Support redeclaration of constant function arguments - `eval_const_function` never correctly handled this, but the issue was not exposed in the existing tests until the recent change to always attempt constant function evaluation when all-const args are used - Check asserts in const_arg_loop and const_func tests - Add coverage for width mismatch error cases
This commit is contained in:
parent
127484e675
commit
b6af90fe20
10 changed files with 124 additions and 47 deletions
|
@ -263,7 +263,13 @@ namespace AST
|
|||
bool detect_latch(const std::string &var);
|
||||
|
||||
// additional functionality for evaluating constant functions
|
||||
struct varinfo_t { RTLIL::Const val; int offset; bool is_signed; };
|
||||
struct varinfo_t {
|
||||
RTLIL::Const val;
|
||||
int offset;
|
||||
bool is_signed;
|
||||
AstNode *arg = nullptr;
|
||||
bool explicitly_sized;
|
||||
};
|
||||
bool has_const_only_constructs();
|
||||
bool replace_variables(std::map<std::string, varinfo_t> &variables, AstNode *fcall, bool must_succeed);
|
||||
AstNode *eval_const_function(AstNode *fcall, bool must_succeed);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue