From 87333f3ae236555ac1efb38b5e99b5f067900ddd Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Fri, 14 Nov 2014 19:59:50 +0100 Subject: Added warning for use of 'z' constants in HDL --- frontends/verilog/const2ast.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'frontends/verilog/const2ast.cc') diff --git a/frontends/verilog/const2ast.cc b/frontends/verilog/const2ast.cc index a81e3010f..ca995915f 100644 --- a/frontends/verilog/const2ast.cc +++ b/frontends/verilog/const2ast.cc @@ -132,8 +132,16 @@ static void my_strtobin(std::vector &data, const char *str, int le } // convert the verilog code for a constant to an AST node -AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type) +AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn_z) { + if (warn_z) { + AstNode *ret = const2ast(code, case_type); + if (std::find(ret->bits.begin(), ret->bits.end(), RTLIL::State::Sz) != ret->bits.end()) + log_warning("Yosys does not support tri-state logic at the moment. (%s:%d)\n", + current_filename.c_str(), frontend_verilog_yyget_lineno()); + return ret; + } + const char *str = code.c_str(); // Strings -- cgit v1.2.3 From 56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 24 Nov 2014 14:39:24 +0100 Subject: Fixed two minor bugs in constant parsing --- frontends/verilog/const2ast.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'frontends/verilog/const2ast.cc') diff --git a/frontends/verilog/const2ast.cc b/frontends/verilog/const2ast.cc index ca995915f..735bc5f99 100644 --- a/frontends/verilog/const2ast.cc +++ b/frontends/verilog/const2ast.cc @@ -182,7 +182,7 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn if (str == endptr) len_in_bits = -1; - // The "'s?[bodh]" syntax + // The "'s?[bodhBODH]" syntax if (*endptr == '\'') { std::vector data; @@ -194,15 +194,19 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn switch (*(endptr+1)) { case 'b': + case 'B': my_strtobin(data, endptr+2, len_in_bits, 2, case_type); break; case 'o': + case 'O': my_strtobin(data, endptr+2, len_in_bits, 8, case_type); break; case 'd': + case 'D': my_strtobin(data, endptr+2, len_in_bits, 10, case_type); break; case 'h': + case 'H': my_strtobin(data, endptr+2, len_in_bits, 16, case_type); break; default: -- cgit v1.2.3