diff options
Diffstat (limited to 'common/command.cc')
| -rw-r--r-- | common/command.cc | 21 | 
1 files changed, 17 insertions, 4 deletions
diff --git a/common/command.cc b/common/command.cc index d0ef5174..d700f4ee 100644 --- a/common/command.cc +++ b/common/command.cc @@ -28,6 +28,7 @@  #endif  #include <boost/algorithm/string/join.hpp> +#include <boost/algorithm/string.hpp>  #include <boost/filesystem/convenience.hpp>  #include <boost/program_options.hpp>  #include <fstream> @@ -317,15 +318,27 @@ int CommandHandler::executeMain(std::unique_ptr<Context> ctx)                  auto constr_child = c->attrs.find(ctx->id("NEXTPNR_CONSTR_CHILDREN"));                  if (constr_main!=c->attrs.end())                  { -                    std::vector<std::string> val = split(constr_main->second.str.c_str(),";"); +                    std::vector<std::string> val; +                    boost::split(val,constr_main->second.str,boost::is_any_of(";"));                      c->constr_x = std::stoi(val[0]);                      c->constr_y = std::stoi(val[1]);                      c->constr_z = std::stoi(val[2]); -                    c->constr_abs_z = val[3]=="1" ? true : false; +                    c->constr_abs_z = val[3]=="1";                      c->constr_parent = nullptr; -                    if (val.size()==5) +                    if (!val[4].empty())                          c->constr_parent = ctx->cells.find(ctx->id(val[4].c_str()))->second.get(); -                     +                    #ifdef ARCH_ECP5 +                    c->sliceInfo.using_dff = val[5]=="1"; +                    c->sliceInfo.has_l6mux = val[6]=="1"; +                    c->sliceInfo.is_carry = val[7]=="1"; +                    c->sliceInfo.clk_sig = ctx->id(val[8]); +                    c->sliceInfo.lsr_sig = ctx->id(val[9]); +                    c->sliceInfo.clkmux = ctx->id(val[10]); +                    c->sliceInfo.lsrmux = ctx->id(val[11]); +                    c->sliceInfo.srmode = ctx->id(val[12]); +                    c->sliceInfo.sd0 = std::stoi(val[13]); +                    c->sliceInfo.sd1 = std::stoi(val[14]); +                    #endif                                      }                  if (constr_child!=c->attrs.end())                  {  | 
