From: Clifford Wolf Date: Sat, 6 Sep 2014 17:44:28 +0000 (+0200) Subject: Added $macc eval model X-Git-Tag: yosys-0.4~154 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=98e6463ca78d8c0a342c9b86d9223dbeb45c093c;p=yosys.git Added $macc eval model --- diff --git a/kernel/consteval.h b/kernel/consteval.h index c73a0b351..f995c9cc2 100644 --- a/kernel/consteval.h +++ b/kernel/consteval.h @@ -23,6 +23,7 @@ #include "kernel/rtlil.h" #include "kernel/sigtools.h" #include "kernel/celltypes.h" +#include "kernel/macc.h" struct ConstEval { @@ -210,6 +211,27 @@ struct ConstEval } } } + else if (cell->type == "$macc") + { + Macc macc; + macc.from_cell(cell); + + if (!eval(macc.bit_ports, undef, cell)) + return false; + + for (auto &port : macc.ports) { + if (!eval(port.in_a, undef, cell)) + return false; + if (!eval(port.in_b, undef, cell)) + return false; + } + + RTLIL::Const result(0, SIZE(cell->getPort("\\Y"))); + if (!macc.eval(result)) + log_abort(); + + set(cell->getPort("\\Y"), result); + } else { RTLIL::SigSpec sig_c, sig_d;