diff options
author | tklam <tklam@easylogic.hk> | 2018-10-03 21:17:03 +0800 |
---|---|---|
committer | tklam <tklam@easylogic.hk> | 2018-10-03 21:17:03 +0800 |
commit | 27c46d94e32a45762b3a424d6c7bfcd3ce7a1b12 (patch) | |
tree | 24b47553fb2aff94f4bd15315f3d43e29db5d30f /frontends/ast | |
parent | b86eb3deef7d80fc5450379c80047636832ef458 (diff) | |
parent | 76baae4b946cdeb04026120b495c87a6146358d0 (diff) | |
download | yosys-27c46d94e32a45762b3a424d6c7bfcd3ce7a1b12.tar.gz yosys-27c46d94e32a45762b3a424d6c7bfcd3ce7a1b12.tar.bz2 yosys-27c46d94e32a45762b3a424d6c7bfcd3ce7a1b12.zip |
Merge branch 'master' of https://github.com/YosysHQ/yosys
Diffstat (limited to 'frontends/ast')
-rw-r--r-- | frontends/ast/genrtlil.cc | 3 | ||||
-rw-r--r-- | frontends/ast/simplify.cc | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc index 0f7e910f3..c9345ff08 100644 --- a/frontends/ast/genrtlil.cc +++ b/frontends/ast/genrtlil.cc @@ -985,7 +985,8 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint) use_const_chunk: if (children.size() != 0) { - log_assert(children[0]->type == AST_RANGE); + if (children[0]->type != AST_RANGE) + log_file_error(filename, linenum, "Single range expected.\n"); int source_width = id2ast->range_left - id2ast->range_right + 1; int source_offset = id2ast->range_right; if (!children[0]->range_valid) { diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 04c429f7f..71eba547c 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -1781,7 +1781,7 @@ skip_dynamic_range_lvalue_expansion:; if (GetSize(children) == 2) { AstNode *buf = children[1]->clone(); - while (buf->simplify(true, false, false, stage, width_hint, sign_hint, false)) { } + while (buf->simplify(true, false, false, stage, -1, false, false)) { } if (buf->type != AST_CONSTANT) log_file_error(filename, linenum, "Failed to evaluate system function `%s' with non-constant value.\n", str.c_str()); @@ -1836,7 +1836,7 @@ skip_dynamic_range_lvalue_expansion:; goto apply_newNode; } - if (str == "\\$stable" || str == "\\$rose" || str == "\\$fell") + if (str == "\\$stable" || str == "\\$rose" || str == "\\$fell" || str == "\\$changed") { if (GetSize(children) != 1) log_file_error(filename, linenum, "System function %s got %d arguments, expected 1.\n", @@ -1853,6 +1853,9 @@ skip_dynamic_range_lvalue_expansion:; if (str == "\\$stable") newNode = new AstNode(AST_EQ, past, present); + else if (str == "\\$changed") + newNode = new AstNode(AST_NE, past, present); + else if (str == "\\$rose") newNode = new AstNode(AST_LOGIC_AND, new AstNode(AST_LOGIC_NOT, past), present); |