diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-06-21 10:12:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-21 10:12:32 +0200 |
commit | 86a753cc18f4e85449a93042298a8e4a617c674a (patch) | |
tree | 0007b998ef3595c9a3ad5323c585fdcd6a809313 /frontends | |
parent | c4ea6fff65d6b2e69a31649af7e10b129c6ae0f5 (diff) | |
parent | 3b8f3a93ada563fbae62772b0bf642bb54170954 (diff) | |
download | yosys-86a753cc18f4e85449a93042298a8e4a617c674a.tar.gz yosys-86a753cc18f4e85449a93042298a8e4a617c674a.tar.bz2 yosys-86a753cc18f4e85449a93042298a8e4a617c674a.zip |
Merge pull request #1116 from YosysHQ/eddie/fix1115
Sign extend unsized 'bx and 'bz values
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/verilog/const2ast.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/frontends/verilog/const2ast.cc b/frontends/verilog/const2ast.cc index 57d366dbf..3a3634d34 100644 --- a/frontends/verilog/const2ast.cc +++ b/frontends/verilog/const2ast.cc @@ -204,7 +204,7 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn { std::vector<RTLIL::State> data; bool is_signed = false; - bool is_unsized = false; + bool is_unsized = len_in_bits < 0; if (*(endptr+1) == 's') { is_signed = true; endptr++; @@ -213,25 +213,25 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn { case 'b': case 'B': - my_strtobin(data, endptr+2, len_in_bits, 2, case_type, false); + my_strtobin(data, endptr+2, len_in_bits, 2, case_type, is_unsized); break; case 'o': case 'O': - my_strtobin(data, endptr+2, len_in_bits, 8, case_type, false); + my_strtobin(data, endptr+2, len_in_bits, 8, case_type, is_unsized); break; case 'd': case 'D': - my_strtobin(data, endptr+2, len_in_bits, 10, case_type, false); + my_strtobin(data, endptr+2, len_in_bits, 10, case_type, is_unsized); break; case 'h': case 'H': - my_strtobin(data, endptr+2, len_in_bits, 16, case_type, false); + my_strtobin(data, endptr+2, len_in_bits, 16, case_type, is_unsized); break; default: char next_char = char(tolower(*(endptr+1))); if (next_char == '0' || next_char == '1' || next_char == 'x' || next_char == 'z') { - my_strtobin(data, endptr+1, 1, 2, case_type, true); is_unsized = true; + my_strtobin(data, endptr+1, 1, 2, case_type, is_unsized); } else { return NULL; } |