PandA-2024.02
|
Step which loads device dependent technology information. More...
#include <functional_unit_step.hpp>
Public Member Functions | |
FunctionalUnitStep (const generic_deviceRef _device, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters) | |
Constructor. More... | |
~FunctionalUnitStep () override | |
Destructor. More... | |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. More... | |
Public Member Functions inherited from DesignFlowStep | |
DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters) | |
Constructor. More... | |
virtual | ~DesignFlowStep () |
Destructor. More... | |
virtual DesignFlowStep_Status | Exec ()=0 |
Execute the step. More... | |
virtual bool | HasToBeExecuted () const =0 |
Check if this step has actually to be executed. More... | |
virtual std::string | GetSignature () const =0 |
Return a unified identifier of this design step. More... | |
virtual std::string | GetName () const =0 |
Return the name of this design step. More... | |
DesignFlowStep_Status | GetStatus () const |
Return the status of this design step. More... | |
virtual void | ComputeRelationships (DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type)=0 |
Compute the relationships of a step with other steps. More... | |
virtual void | WriteDot (std::ostream &out) const |
Write the label for a dot graph. More... | |
virtual DesignFlowStepFactoryConstRef | CGetDesignFlowStepFactory () const =0 |
Return the factory to create this type of steps. More... | |
bool | IsComposed () const |
Returns if this step is composed. More... | |
int | CGetDebugLevel () const |
Return the debug level of the step. More... | |
virtual void | PrintInitialIR () const |
Dump the initial intermediate representation. More... | |
virtual void | PrintFinalIR () const |
Dump the final intermediate representation. More... | |
Protected Member Functions | |
virtual void | AnalyzeCell (functional_unit *fu, const unsigned int prec, const std::vector< std::string > &portsize_parameters, const size_t portsize_index, const std::vector< std::string > &pipe_parameters, const size_t stage_index, const unsigned int constPort, const bool is_commutative, size_t max_lut_size)=0 |
Analyze the single cell. More... | |
virtual void | AnalyzeFu (const technology_nodeRef f_unit) |
Analyze all the cells built starting from a template. More... | |
technology_nodeRef | create_template_instance (const technology_nodeRef &fu_template, const std::string &name, unsigned int prec) |
Create a template instance to be specialized. More... | |
Protected Attributes | |
const technology_managerRef | TM |
Technology manager. More... | |
const generic_deviceRef | device |
device information More... | |
unsigned int | has_first_synthesis_id |
The id of the first analyzed cell of a sequence of cells which differ for the position of the constant. More... | |
CustomMap< unsigned int, unsigned int > | DSP_y_to_DSP_x |
The sizes of available DSPs. More... | |
Protected Attributes inherited from DesignFlowStep | |
bool | composed |
True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More... | |
const Wrefcount< const DesignFlowManager > | design_flow_manager |
The design flow manager. More... | |
const ParameterConstRef | parameters |
Set of input parameters. More... | |
int | debug_level |
The debug level. More... | |
const int | output_level |
The output level. More... | |
Additional Inherited Members | |
Public Types inherited from DesignFlowStep | |
enum | RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP } |
The relationship type. More... | |
Step which loads device dependent technology information.
Definition at line 60 of file functional_unit_step.hpp.
FunctionalUnitStep::FunctionalUnitStep | ( | const generic_deviceRef | _device, |
const DesignFlowManagerConstRef | design_flow_manager, | ||
const ParameterConstRef | parameters | ||
) |
Constructor.
_device | is the device |
design_flow_manager | is the design flow manager |
parameters | is the set of input parameters |
Definition at line 62 of file functional_unit_step.cpp.
References ~FunctionalUnitStep().
|
overridedefault |
|
protectedpure virtual |
Analyze the single cell.
fu | is the cell |
prec | is the precision |
portsize_parameters | is the size of parameters |
portsize_index | |
pipe_parameters | |
stage_index | |
constPort | is the index of the constant port |
Implemented in RTLCharacterization, and GenerateFuList.
Referenced by AnalyzeFu().
|
protectedvirtual |
Analyze all the cells built starting from a template.
fu | is the corresponding functional unit |
previous characterization is not considered
check for a single port
check if the resource can be pipelined
Definition at line 74 of file functional_unit_step.cpp.
References library_manager::add(), AnalyzeCell(), AND_GATE_STD, structural_type_descriptor::BOOL, CLOCK_PORT_NAME, CONSTANT_STD, create_template_instance(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, DEMUX_GATE_STD, device, DONE_PORT_NAME, DSP_y_to_DSP_x, NP_functionality::exist_NP_functionality(), NP_functionality::FLOPOCO_PROVIDED, functional_unit::fu_template_parameters, technology_manager::get_fu(), structural_object::get_id(), module::get_in_port(), module::get_in_port_size(), technology_manager::get_library(), technology_manager::get_library_manager(), technology_node::get_name(), functional_unit::get_name(), module::get_out_port(), module::get_out_port_size(), structural_object::get_typeRef(), has_first_synthesis_id, INDENT_DBG_MEX, LUT_GATE_STD, lenet_tvm::mod, MUX_GATE_STD, NAND_GATE_STD, NOR_GATE_STD, OR_GATE_STD, READ_COND_STD, RESET_PORT_NAME, resize_1_8_pow2(), SplitString(), START_PORT_NAME, STR, NP_functionality::SYSTEM_VERILOG_PROVIDED, THROW_ASSERT, THROW_ERROR, TM, structural_type_descriptor::type, structural_type_descriptor::VECTOR_INT, structural_type_descriptor::VECTOR_REAL, structural_type_descriptor::VECTOR_UINT, NP_functionality::VERILOG_PROVIDED, NP_functionality::VHDL_PROVIDED, XNOR_GATE_STD, and XOR_GATE_STD.
Referenced by GenerateFuList::Exec(), and RTLCharacterization::Exec().
|
protected |
Create a template instance to be specialized.
Definition at line 543 of file functional_unit_step.cpp.
References time_info::factory(), area_info::factory(), functional_unit::functional_unit_name, operation::operation_name, DesignFlowStep::parameters, and THROW_ASSERT.
Referenced by AnalyzeFu().
|
overridevirtual |
Initialize the step (i.e., like a constructor, but executed just before exec.
Reimplemented from DesignFlowStep.
Reimplemented in RTLCharacterization.
Definition at line 525 of file functional_unit_step.cpp.
References device, DSP_y_to_DSP_x, SplitString(), and THROW_ASSERT.
Referenced by RTLCharacterization::Initialize().
|
protected |
device information
Definition at line 67 of file functional_unit_step.hpp.
Referenced by RTLCharacterization::AnalyzeCell(), AnalyzeFu(), Initialize(), and RTLCharacterization::xwrite_device_file().
|
protected |
The sizes of available DSPs.
Definition at line 73 of file functional_unit_step.hpp.
Referenced by AnalyzeFu(), and Initialize().
|
protected |
The id of the first analyzed cell of a sequence of cells which differ for the position of the constant.
Definition at line 70 of file functional_unit_step.hpp.
Referenced by GenerateFuList::AnalyzeCell(), RTLCharacterization::AnalyzeCell(), and AnalyzeFu().
|
protected |
Technology manager.
Definition at line 64 of file functional_unit_step.hpp.
Referenced by RTLCharacterization::add_input_register(), RTLCharacterization::add_output_register(), RTLCharacterization::AnalyzeCell(), AnalyzeFu(), GenerateFuList::Exec(), RTLCharacterization::fix_execution_time_std(), RTLCharacterization::fix_muxes(), RTLCharacterization::fix_proxies_execution_time_std(), and RTLCharacterization::Initialize().