diff --git a/src/rs-dsp-multadd.cc b/src/rs-dsp-multadd.cc index 19449218..f470b49b 100644 --- a/src/rs-dsp-multadd.cc +++ b/src/rs-dsp-multadd.cc @@ -272,14 +272,23 @@ struct RsDspMultAddWorker cell_muladd->setPort(RTLIL::escape_id("unsigned_b_i"),mult_coeff->getParam(ID::B_SIGNED).as_bool()?RTLIL::S0:RTLIL::S1); } else if (mult_coeff->getPort(ID::B).is_fully_const()){ - cell_muladd->setParam(RTLIL::escape_id("COEFF_0"), mult_coeff->getPort(ID::B).as_const()); + RTLIL::Const coeff_0 = const_or(RTLIL::Const(RTLIL::S0,tgt_a_width), mult_coeff->getPort(ID::B).as_const(), false, false, tgt_a_width); + cell_muladd->setParam(RTLIL::escape_id("COEFF_0"), coeff_0); + + cell_muladd->setParam(RTLIL::escape_id("COEFF_1"), RTLIL::Const(RTLIL::S0,tgt_a_width)); + cell_muladd->setParam(RTLIL::escape_id("COEFF_2"), RTLIL::Const(RTLIL::S0,tgt_a_width)); + cell_muladd->setParam(RTLIL::escape_id("COEFF_3"), RTLIL::Const(RTLIL::S0,tgt_a_width)); sig_b = mult_coeff->getPort(ID::A); cell_muladd->setPort(RTLIL::escape_id("b_i"), sig_b); cell_muladd->setPort(RTLIL::escape_id("a_i"), sig_a); cell_muladd->setPort(RTLIL::escape_id("unsigned_b_i"),mult_coeff->getParam(ID::A_SIGNED).as_bool()?RTLIL::S0:RTLIL::S1); } else{ - cell_muladd->setParam(RTLIL::escape_id("COEFF_0"), mult_coeff->getPort(ID::A).as_const()); + RTLIL::Const coeff_0 = const_or(RTLIL::Const(RTLIL::S0,tgt_a_width), mult_coeff->getPort(ID::A).as_const(), false, false, tgt_a_width); + cell_muladd->setParam(RTLIL::escape_id("COEFF_0"), coeff_0); + cell_muladd->setParam(RTLIL::escape_id("COEFF_1"), RTLIL::Const(RTLIL::S0,tgt_a_width)); + cell_muladd->setParam(RTLIL::escape_id("COEFF_2"), RTLIL::Const(RTLIL::S0,tgt_a_width)); + cell_muladd->setParam(RTLIL::escape_id("COEFF_3"), RTLIL::Const(RTLIL::S0,tgt_a_width)); sig_b = mult_coeff->getPort(ID::B); cell_muladd->setPort(RTLIL::escape_id("b_i"), sig_b); cell_muladd->setPort(RTLIL::escape_id("a_i"), sig_a); diff --git a/src/rs-pack-dsp-regs.cc b/src/rs-pack-dsp-regs.cc index 94856d3e..937ddcb3 100644 --- a/src/rs-pack-dsp-regs.cc +++ b/src/rs-pack-dsp-regs.cc @@ -368,7 +368,6 @@ struct RsPackDspRegsWorker if (!gen) { DSP_RST_POL = it_dsp->getParam(RTLIL::escape_id("DSP_RST_POL")); - log("DSP_Reset value = %d\n", DSP_RST_POL.as_int()); if ((ignore_dsp) && !(DSP_RST_POL.as_int())) continue; // if DSP data ports is driven from DFFs add it in vector