diff options
author | Clifford Wolf <clifford@clifford.at> | 2013-12-28 11:54:40 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2013-12-28 12:02:14 +0100 |
commit | c69c416d28015e496045d1b4529c465fbaad42e2 (patch) | |
tree | f70da346eabfcd5abfeee100a2470a4b50bea2ee /kernel | |
parent | 7f717875999f18065a69934db2075fd1508d3a7d (diff) | |
download | yosys-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.cc | 8 | ||||
-rw-r--r-- | kernel/celltypes.h | 2 | ||||
-rw-r--r-- | kernel/rtlil.cc | 2 | ||||
-rw-r--r-- | kernel/rtlil.h | 1 |
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); }; |