PandA-2024.02
Public Member Functions | Protected Member Functions | Protected Attributes
XilinxBackendFlow Class Reference

#include <XilinxBackendFlow.hpp>

Inheritance diagram for XilinxBackendFlow:
Inheritance graph
[legend]
Collaboration diagram for XilinxBackendFlow:
Collaboration graph
[legend]

Public Member Functions

 XilinxBackendFlow (const ParameterConstRef Param, const std::string &flow_name, const generic_deviceRef _device)
 Constructor. More...
 
 ~XilinxBackendFlow () override
 Destructor. More...
 
void InitDesignParameters () override
 Initializes the parameters. More...
 
void ExecuteSynthesis () override
 Checks if the execution can be performed and, in case, performs the synthesis. More...
 
- Public Member Functions inherited from BackendFlow
 BackendFlow (const ParameterConstRef Param, std::string flow_name, const generic_deviceRef _device)
 Constructor. More...
 
virtual ~BackendFlow ()
 Destructor. More...
 
virtual std::string GenerateSynthesisScripts (const std::string &fu_name, const structural_managerRef SM, const std::list< std::string > &hdl_files, const std::list< std::string > &aux_files)
 Generates the synthesis scripts for the specified design. More...
 
void Execute (const std::string &top_id, const std::string &top_normalized, const std::string &filestring, const std::string &filename_bench, const std::string &clock, double clk_period, bool syntax_check)
 Executes the synthesis with the implemented flow. More...
 
std::string CreateScripts (const DesignParametersRef dp)
 Creates the scripts for the specified tools in the right order, along with the overall configuration. More...
 
void parse_flow (const XMLDomParserRef parser)
 Creates the synthesis flow based on the user's requirements. More...
 
void create_xml_scripts (const std::string &xml_file)
 Creates the XML script containing all the steps. More...
 
void add_backend_step (const BackendStepRef &step)
 Adds a backend step to the list of the ones to be performed. More...
 
std::string get_flow_name () const
 Returns the name of the flow. More...
 
void set_initial_parameters (const DesignParametersRef &flow_parameters, const CustomOrderedSet< std::string > &undefined_parameters)
 Sets parameters. More...
 
void set_parameters (const DesignParametersRef &_flow_parameters)
 Sets actual parameters. More...
 
area_infoRef get_used_resources () const
 Returns the list of used resources. More...
 
time_infoRef get_timing_results () const
 Returns the timing information. More...
 

Protected Member Functions

virtual void create_cf (const DesignParametersRef dp, bool xst)
 Creates the UCF file. More...
 
void WriteFlowConfiguration (std::ostream &script) override
 Writes the proper flow configuration in the output script. More...
 
void CheckSynthesisResults () override
 Checks the synthesis results and fills the corresponding data-structures. More...
 
void xparse_xst_utilization (const std::string &fn)
 Parses the utilization file in XML format. More...
 
void parse_DSPs (const std::string &log_file)
 retrieve the number of DSPs from the xst log More...
 
void xparse_map_utilization (const std::string &fn)
 Parses the utilization file in XML format. More...
 
void vivado_xparse_utilization (const std::string &fn)
 parse vivado results More...
 
void xparse_timing (const std::string &fn)
 Fixed the parsing of timing results from trce. More...
 
void parse_timing (const std::string &log_file)
 Fixed the parsing of timing results from xst. More...
 
- Protected Member Functions inherited from BackendFlow
void ParseBackendFlow (const std::string &flow_name)
 Parses the description of the backend flow given its identifier. More...
 
void xload (const xml_element *node)
 Loads the backend flow from an XML node. More...
 

Protected Attributes

std::map< std::string, double > design_values
 results from the synthesis More...
 
- Protected Attributes inherited from BackendFlow
const ParameterConstRef Param
 class containing all the parameters More...
 
int debug_level
 debugging level of the class More...
 
unsigned int output_level
 verbosity level of the class More...
 
std::string flow_name
 string-based identifier of the flow More...
 
std::string out_dir
 name of the output directory More...
 
std::map< std::string, std::string > default_data
 map between the identifiers of the synthesis flows and the corresponding implementations More...
 
const generic_deviceRef device
 information about the target device More...
 
xml_elementroot
 root node of the configuration device More...
 
area_infoRef area_m
 pointer to the data structure containing information about the resources More...
 
time_infoRef time_m
 pointer to the data structure containing timing information More...
 
std::vector< BackendStepRefsteps
 ordered list of synthesis steps More...
 
DesignParametersRef default_flow_parameters
 set of design parameters to be set More...
 
CustomOrderedSet< std::string > undefined_parameters
 list of undefined parameters More...
 
DesignParametersRef actual_parameters
 set of design parameters with the actual values More...
 
std::string generated_synthesis_script
 name of the synthesis script More...
 

Additional Inherited Members

- Public Types inherited from BackendFlow
using type_t = enum { UNKNOWN, XILINX_FPGA, ALTERA_FPGA, LATTICE_FPGA, NANOXPLORE_FPGA, GENERIC, }
 implemented flow More...
 
- Static Public Member Functions inherited from BackendFlow
static BackendFlowRef CreateFlow (const ParameterConstRef Param, const std::string &flow_name, const generic_deviceRef _device)
 Creates the flow specification based on the given parameters. More...
 
static type_t DetermineBackendFlowType (const generic_deviceRef device, const ParameterConstRef parameters)
 Determines the type of the backend flow based on the target device. More...
 

Detailed Description

Definition at line 60 of file XilinxBackendFlow.hpp.

Constructor & Destructor Documentation

◆ XilinxBackendFlow()

XilinxBackendFlow::XilinxBackendFlow ( const ParameterConstRef  Param,
const std::string &  flow_name,
const generic_deviceRef  _device 
)

◆ ~XilinxBackendFlow()

XilinxBackendFlow::~XilinxBackendFlow ( )
overridedefault

Destructor.

Referenced by XilinxBackendFlow().

Here is the caller graph for this function:

Member Function Documentation

◆ CheckSynthesisResults()

void XilinxBackendFlow::CheckSynthesisResults ( )
overrideprotectedvirtual

◆ create_cf()

void XilinxBackendFlow::create_cf ( const DesignParametersRef  dp,
bool  xst 
)
protectedvirtual

◆ ExecuteSynthesis()

void XilinxBackendFlow::ExecuteSynthesis ( )
overridevirtual

Checks if the execution can be performed and, in case, performs the synthesis.

Reimplemented from BackendFlow.

Definition at line 817 of file XilinxBackendFlow.cpp.

References BackendFlow::ExecuteSynthesis().

Here is the call graph for this function:

◆ InitDesignParameters()

void XilinxBackendFlow::InitDesignParameters ( )
overridevirtual

Initializes the parameters.

determine if power optimization has to be performed

Vivado section

additional constraints have to be manage at this level

Reimplemented from BackendFlow.

Definition at line 822 of file XilinxBackendFlow.cpp.

References BackendFlow::actual_parameters, create_cf(), BackendFlow::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, BackendFlow::device, INDENT_DBG_MEX, INTSTYLE_ISE, INTSTYLE_SILENT, BackendFlow::output_level, OUTPUT_LEVEL_VERY_PEDANTIC, BackendFlow::Param, PARAM_HDL_files, PARAM_ise_style, PARAM_power_optimization, PARAM_target_device, PARAM_vivado_sources_macro_list, PARAM_yosys_vivado_sources_macro_list, DesignParameters::parameter_values, BackendFlow::steps, STR, and THROW_ERROR.

Referenced by XilinxTasteBackendFlow::GenerateSynthesisScripts().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_DSPs()

void XilinxBackendFlow::parse_DSPs ( const std::string &  log_file)
protected

retrieve the number of DSPs from the xst log

Definition at line 478 of file XilinxBackendFlow.cpp.

References BackendFlow::area_m, line(), area_info::set_resource_value(), and THROW_ASSERT.

Referenced by CheckSynthesisResults().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_timing()

void XilinxBackendFlow::parse_timing ( const std::string &  log_file)
protected

◆ vivado_xparse_utilization()

void XilinxBackendFlow::vivado_xparse_utilization ( const std::string &  fn)
protected

parse vivado results

Parameters
fnsi the file where the synthesis results are written

Definition at line 698 of file XilinxBackendFlow.cpp.

References CE_XVM, design_values, XMLDomParser::Exec(), xml_child::get_children(), XMLDomParser::get_document(), xml_node::get_name(), LOAD_XVM, test_panda::parser, THROW_ASSERT, THROW_ERROR, and symmetry::value.

Referenced by CheckSynthesisResults().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteFlowConfiguration()

void XilinxBackendFlow::WriteFlowConfiguration ( std::ostream &  script)
overrideprotectedvirtual

Writes the proper flow configuration in the output script.

Implements BackendFlow.

Definition at line 788 of file XilinxBackendFlow.cpp.

References BackendFlow::device, BackendFlow::Param, and starts_with().

Here is the call graph for this function:

◆ xparse_map_utilization()

void XilinxBackendFlow::xparse_map_utilization ( const std::string &  fn)
protected

Parses the utilization file in XML format.

Definition at line 148 of file XilinxBackendFlow.cpp.

References BackendFlow::area_m, area_info::factory(), line(), BackendFlow::Param, area_info::set_area_value(), and area_info::set_resource_value().

Referenced by CheckSynthesisResults().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xparse_timing()

void XilinxBackendFlow::xparse_timing ( const std::string &  fn)
protected

◆ xparse_xst_utilization()

void XilinxBackendFlow::xparse_xst_utilization ( const std::string &  fn)
protected

Parses the utilization file in XML format.

setting the global area occupation as the number of LUT/FF pairs when possible

Definition at line 316 of file XilinxBackendFlow.cpp.

References BackendFlow::area_m, CE_XVM, design_values, XMLDomParser::Exec(), area_info::factory(), xml_child::get_children(), XMLDomParser::get_document(), xml_node::get_name(), LOAD_XVM, BackendFlow::Param, test_panda::parser, area_info::set_area_value(), area_info::set_resource_value(), THROW_ASSERT, THROW_ERROR, symmetry::value, XST_NUMBER_OF_BLOCK_RAMFIFO, XST_NUMBER_OF_LUT_FLIP_FLOP_PAIRS_USED, XST_NUMBER_OF_SLICE_LUTS, and XST_NUMBER_OF_SLICE_REGISTERS.

Referenced by CheckSynthesisResults().

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ design_values

std::map<std::string, double> XilinxBackendFlow::design_values
protected

results from the synthesis

Definition at line 64 of file XilinxBackendFlow.hpp.

Referenced by CheckSynthesisResults(), vivado_xparse_utilization(), and xparse_xst_utilization().


The documentation for this class was generated from the following files:

Generated on Mon Feb 12 2024 13:04:11 for PandA-2024.02 by doxygen 1.8.13