From 2917f786892f81a31ca919ce61be5a32d1c13c56 Mon Sep 17 00:00:00 2001 From: yuex1994 Date: Mon, 8 Jun 2020 06:05:45 +0000 Subject: [PATCH] fix bug: keep bv_width for Ilator constants for Concat --- src/target-sc/dfs.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/target-sc/dfs.cc b/src/target-sc/dfs.cc index d22347b1d..e53275ffb 100644 --- a/src/target-sc/dfs.cc +++ b/src/target-sc/dfs.cc @@ -273,8 +273,16 @@ void IlaSim::dfs_binary_op_non_mem(std::stringstream& dfs_simulator, << arg1_str << ");" << std::endl; } } else { - dfs_simulator << indent << out_str << " = (" << arg0_str << op_str - << arg1_str << ");" << std::endl; + if (GetUidExprOp(expr) == AST_UID_EXPR_OP::CONCAT) { + auto arg0_width = expr->arg(0)->sort()->bit_width(); + auto arg1_width = expr->arg(1)->sort()->bit_width(); + dfs_simulator << indent << out_str << " = (sc_biguint<" << arg0_width + << ">(" << arg0_str << ")" << op_str << "sc_biguint<" + << arg1_width << ">(" << arg1_str << "));" << std::endl; + } else { + dfs_simulator << indent << out_str << " = (" << arg0_str << op_str + << arg1_str << ");" << std::endl; + } } } @@ -357,7 +365,6 @@ void IlaSim::dfs_binary_op_mem(std::stringstream& dfs_simulator, ? "0" : (GetUidExpr(expr->arg(2)) == AST_UID_EXPR::CONST) ? arg2_str - : arg2_str + ".to_int()"; dfs_simulator << indent << "mem_update_map[" << arg1_str << "] = " << arg2_str << ";" << std::endl;