aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-12-28 11:54:40 +0100
committerClifford Wolf <clifford@clifford.at>2013-12-28 12:02:14 +0100
commitc69c416d28015e496045d1b4529c465fbaad42e2 (patch)
treef70da346eabfcd5abfeee100a2470a4b50bea2ee /kernel
parent7f717875999f18065a69934db2075fd1508d3a7d (diff)
downloadyosys-c69c416d28015e496045d1b4529c465fbaad42e2.tar.gz
yosys-c69c416d28015e496045d1b4529c465fbaad42e2.tar.bz2
yosys-c69c416d28015e496045d1b4529c465fbaad42e2.zip
Added $bu0 cell (for easy correct $eq/$ne mapping)
Diffstat (limited to 'kernel')
-rw-r--r--kernel/calc.cc8
-rw-r--r--kernel/celltypes.h2
-rw-r--r--kernel/rtlil.cc2
-rw-r--r--kernel/rtlil.h1
4 files changed, 12 insertions, 1 deletions
diff --git a/kernel/calc.cc b/kernel/calc.cc
index fc978c11a..a56db93aa 100644
--- a/kernel/calc.cc
+++ b/kernel/calc.cc
@@ -543,6 +543,14 @@ RTLIL::Const RTLIL::const_pos(const RTLIL::Const &arg1, const RTLIL::Const&, boo
return arg1_ext;
}
+RTLIL::Const RTLIL::const_bu0(const RTLIL::Const &arg1, const RTLIL::Const&, bool signed1, bool, int result_len)
+{
+ RTLIL::Const arg1_ext = arg1;
+ extend_u0(arg1_ext, result_len, signed1);
+
+ return arg1_ext;
+}
+
RTLIL::Const RTLIL::const_neg(const RTLIL::Const &arg1, const RTLIL::Const&, bool signed1, bool, int result_len)
{
RTLIL::Const arg1_ext = arg1;
diff --git a/kernel/celltypes.h b/kernel/celltypes.h
index 29eb490f8..2f311c826 100644
--- a/kernel/celltypes.h
+++ b/kernel/celltypes.h
@@ -60,6 +60,7 @@ struct CellTypes
{
cell_types.insert("$not");
cell_types.insert("$pos");
+ cell_types.insert("$bu0");
cell_types.insert("$neg");
cell_types.insert("$and");
cell_types.insert("$or");
@@ -250,6 +251,7 @@ struct CellTypes
HANDLE_CELL_TYPE(mod)
HANDLE_CELL_TYPE(pow)
HANDLE_CELL_TYPE(pos)
+ HANDLE_CELL_TYPE(bu0)
HANDLE_CELL_TYPE(neg)
#undef HANDLE_CELL_TYPE
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 47dc098a4..b8c9e21ac 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -370,7 +370,7 @@ namespace {
void check()
{
- if (cell->type == "$not" || cell->type == "$pos" || cell->type == "$neg") {
+ if (cell->type == "$not" || cell->type == "$pos" || cell->type == "$bu0" || cell->type == "$neg") {
param("\\A_SIGNED");
port("\\A", param("\\A_WIDTH"));
port("\\Y", param("\\Y_WIDTH"));
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index 91dd9d44c..8e3b78eef 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -187,6 +187,7 @@ namespace RTLIL
RTLIL::Const const_pow (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len);
RTLIL::Const const_pos (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len);
+ RTLIL::Const const_bu0 (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len);
RTLIL::Const const_neg (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len);
};