43 #include "config_SKIP_WARNING_SECTIONS.hpp" 46 #if SKIP_WARNING_SECTIONS 47 #pragma GCC diagnostic ignored "-Wshadow" 48 #pragma GCC diagnostic ignored "-Wsign-conversion" 49 #pragma GCC diagnostic ignored "-Wconversion" 50 #pragma GCC diagnostic ignored "-Wunused-parameter" 65 #include "FPAdderSinglePath.hpp" 87 extern vector<Operator*>
oplist;
91 FPlt_expr::FPlt_expr(Target* _target,
int wE,
int wF) : Operator(_target)
95 name <<
"FPlt_expr_" << wE <<
"_" << wF;
98 setCopyrightString(
"Fabrizio Ferrandi (2011-2018)");
102 addFPInput(
"X", wE, wF);
103 addFPInput(
"Y", wE, wF);
107 manageCriticalPath(_target->localWireDelay() + _target->lutDelay());
108 vhdl <<
tab << declare(
"nX", wE + wF + 3) <<
" <= X" << range(wE + wF + 2, wE + wF + 1) <<
" & not(X" 109 << of(wE + wF) <<
") & X" << range(wE + wF - 1, 0) <<
";" << endl;
110 auto* value_difference =
new FPAdderSinglePath(_target, wE, wF, wE, wF, wE, wF);
111 value_difference->changeName(getName() +
"value_difference");
112 oplist.push_back(value_difference);
113 inPortMap(value_difference,
"X",
"Y");
114 inPortMap(value_difference,
"Y",
"nX");
115 outPortMap(value_difference,
"R",
"valueDiff");
116 vhdl << instance(value_difference,
"value_difference");
117 syncCycleFromSignal(
"valueDiff");
118 setCriticalPath(value_difference->getOutputDelay(
"R"));
120 manageCriticalPath(_target->localWireDelay() + _target->lutDelay());
121 vhdl <<
tab <<
"R(0) <= '1' when (valueDiff" << of(wE + wF) <<
"='0') and (valueDiff" 122 << range(wE + wF + 2, wE + wF + 1) <<
" /= \"00\") else '0';" << endl;
Forward declarations of FloPoCo classes.
Definition of hash function for EdgeDescriptor.
FPlt_expr module for flopoco.
redefinition of map to manage ordered/unordered structures
~FPlt_expr() override
destructor
void buildStandardTestCases(TestCaseList *tcl) override
void emulate(TestCase *tc) override
Wrapper to FloPoCo for VHDL code generation.
vector< Operator * > oplist