71 const std::string& _flow_name, std::string _output_dir)
74 debug_level(Param->getOption<int>(OPT_debug_level)),
75 output_level(Param->getOption<unsigned int>(OPT_output_level)),
76 tool_exec(
std::move(_tool_exec)),
77 output_dir(
std::move(_output_dir))
118 case QUARTUS_13_SETUP:
124 case QUARTUS_13_FLOW:
148 THROW_ERROR(
"Synthesis tool currently not supported");
169 auto general_output_dir =
Param->getOption<std::string>(OPT_output_directory);
172 general_output_dir +=
"/" + sub_dir;
176 std::string candidate_dir;
177 if(std::filesystem::exists(output_dir))
179 unsigned int progressive = 0;
182 candidate_dir = output_dir +
"_" + std::to_string(progressive++);
183 }
while(std::filesystem::exists(candidate_dir));
184 output_dir = candidate_dir;
186 std::filesystem::create_directories(output_dir);
187 std::filesystem::create_directories(output_dir +
"/input");
188 std::filesystem::create_directories(output_dir +
"/output");
196 bool nodes_found =
false;
198 for(
const auto&
line : lines)
209 THROW_ERROR(
"Cannot instantiate tool options after script nodes");
225 bool node_found =
false;
227 for(
const auto& l : list)
229 const xml_element* child = GetPointer<xml_element>(l);
239 if(!
CE_XVM(config, child))
244 if(config != tool_config)
263 root->add_child_element(node->create_xml_node());
267 root->add_child_element(node->create_xml_node());
276 for(
const auto& node : nodes)
278 if(node->checkCondition(dp) || node->nodeType == NODE_ITE_BLOCK)
291 if(name == node->name)
296 THROW_ERROR(
"\"" + name +
"\" is not a reserved tool parameter");
303 for(
const auto& it : map)
305 const std::string& name = it.first;
306 const std::string&
value = it.second;
307 boost::algorithm::replace_all(script,
"${__" + name +
"__}", value);
308 boost::algorithm::replace_all(script,
"$__" + name +
"__", value);
Wrapper to trce by XILINX.
Main class for wrapping nxpython_flow tool by NANOXPLORE.
Wrapper to invoke a generic bash script.
Main class for wrapping ISE tools by Xilinx.
std::map< std::string, std::string > map_t
Parameters map type.
Wrapper to invoke vivado_flow tool by XILINX.
exceptions managed by PandA
#define CE_XVM(variable, node)
Check existence XML Value Macro. Check if an XML attribute is present in the XML tree.
Definition of hash function for EdgeDescriptor.
Main class for wrapping ISE tools by Xilinx.
Main class for wrapping vivado_flow tool by XILINX.
Main class for wrapping quartus_pow tool by Altera.
void line(int x1, int y1, int x2, int y2, unsigned int color)
Main class for wrapping quartus_report tool by Altera.
Wrapper to invoke nxpython_flow tool by NANOXPLORE.
map_t parameter_values
Map between the name of the parameter and the corresponding string-based value.
unsigned map[NUM_VERTICES]
std::string get_name() const
Get the name of this node.
Main class for wrapping ISE tools by Xilinx.
This file contains the definition of the parameters for the synthesis tools.
Wrapper to XST by XILINX.
utility function used to read files.
refcount< xml_script_node_t > xml_script_node_tRef
This file collects some utility functions and macros.
Wrapper to par by XILINX.
std::list< xml_nodeRef > node_list
type for list of xml nodes
#define THROW_ERROR(str_expr)
helper function used to throw an error in a standard way
Main class for wrapping lattice_flow tool by Lattice.
Wrapper to invoke quartus_report tool by Altera.
static xml_script_node_t * create(const xml_element *element)
Creates a script node by parsing the XML element.
Main class for wrapping ISE tools by Xilinx.
Classes for handling configuration files.
Wrapper to ngdbuild by XILINX.
Wrapper to invoke quartus_report tool by Altera.
Wrapper to invoke lattice_flow tool by Lattice.
Main class for wrapping ISE tools by Xilinx.
refcount< xml_parameter_t > xml_parameter_tRef
Variable assignment, either single value or multiple entries set.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Main class for wrapping bash_flow tool by NANOXPLORE.
this class is used to manage the command-line or XML options.
refcount< xml_set_variable_t > xml_set_variable_tRef
#define LOAD_XVM(variable, node)
LOAD XML Value Macro. Set a variable starting from an XML value. Conversion is performed if needed...
Wrapper to map by XILINX.
Some macro used to interface with the XML library.
node_list const & get_children()
Obtain the list of child nodes.
Main class for wrapping quartus_report tool by Altera.
static xml_script_node_enum_t find_type(const xml_element *element)
Finds the type of an XML element.
Wrapper to quartus 14.0 and newer.
Wrapper to quartus 13.x and newer.