DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::timing::SIMIONode Class Reference

Class for the timing simulation IO. More...

#include <SIMIONode.hpp>

Inheritance diagram for dunedaq::timing::SIMIONode:
[legend]
Collaboration diagram for dunedaq::timing::SIMIONode:
[legend]

Public Member Functions

 SIMIONode (const uhal::Node &node)
 
virtual ~SIMIONode ()
 
std::string get_uid_address_parameter_name () const override
 Get the UID address parameter name.
 
std::string get_status (bool print_out=false) const override
 Get status string, optionally print.
 
BoardRevision get_board_revision () const override
 Read the word identifying the timing board.
 
std::string get_hardware_info (bool print_out=false) const override
 Print hardware information.
 
void reset (const std::string &clock_config_file) const override
 Reset IO.
 
uint64_t read_board_uid () const override
 Read the word containing the timing board UID.
 
void configure_pll (const std::string &clock_config_file="") const override
 Configure clock chip.
 
std::vector< double > read_clock_frequencies () const override
 Read frequencies of on-board clocks.
 
std::string get_clock_frequencies_table (bool print_out=false) const override
 Print frequencies of on-board clocks.
 
std::string get_pll_status (bool print_out=false) const override
 Print status of on-board PLL.
 
std::string get_sfp_status (uint32_t sfp_id, bool print_out=false) const override
 Print status of on-board SFP.
 
void switch_sfp_soft_tx_control_bit (uint32_t sfp_id, bool turn_on) const override
 Control tx laser of on-board SFP softly (I2C command)
 
bool clocks_ok () const override
 Clocks ready?
 
void switch_sfp_tx (uint32_t sfp_id, bool turn_on) const override
 Control tx laser of on-board SFP softly (I2C command)
 
virtual void reset (const ClockSource &clock_source) const
 Reset IO, with clock file look up.
 
- Public Member Functions inherited from dunedaq::timing::IONode
 IONode (const uhal::Node &node, std::string uid_i2c_bus, std::string pll_i2c_bus, std::string pll_i2c_device, std::vector< std::string > clock_names, std::vector< std::string > sfp_i2c_buses)
 
virtual ~IONode ()
 
virtual uint32_t read_board_type () const
 Read the word identifying the timing board.
 
virtual uint32_t read_carrier_type () const
 Read the word identifying the FPFA carrier board.
 
virtual uint32_t read_design_type () const
 Read the word identifying the firmware design in the FPGA.
 
virtual uint32_t read_firmware_frequency () const
 Read the word identifying the frequency [units of Hz] of the firmware in the FPGA.
 
virtual std::string get_full_clock_config_file_path (const ClockSource &clock_source) const
 Get the full config path.
 
template<class T >
std::unique_ptr< const T > get_i2c_device (const std::string &i2c_bus_name, const std::string &i2c_device_name) const
 Get the an I2C chip.
 
virtual std::unique_ptr< const SI534xSlave > get_pll () const
 Get the PLL chip.
 
virtual void soft_reset () const
 Reset timing node.
 
virtual void get_info (timinghardwareinfo::TimingPLLMonitorData &mon_data) const
 
- Public Member Functions inherited from dunedaq::timing::TimingNode
 TimingNode (const uhal::Node &node)
 
virtual ~TimingNode ()
 
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes (const uhal::Node &node, bool dispatch=true) const
 Read subnodes.
 
void reset_sub_nodes (const uhal::Node &node, uint32_t aValue=0x0, bool dispatch=true) const
 Reset subnodes.
 

Additional Inherited Members

- Static Public Member Functions inherited from dunedaq::timing::IONode
static const std::map< BoardType, std::string > & get_board_type_map ()
 
static const std::map< CarrierType, std::string > & get_carrier_type_map ()
 
static const std::map< BoardRevision, std::string > & get_board_revision_map ()
 
static const std::map< uint64_t, BoardRevision > & get_board_uid_revision_map ()
 
static const std::map< DesignType, std::string > & get_design_type_map ()
 
static const std::map< std::string, std::string > & get_clock_config_map ()
 
static const std::vector< BoardType > & get_library_supported_boards ()
 
static const std::vector< DesignType > & get_library_supported_designs ()
 
- Protected Member Functions inherited from dunedaq::timing::IONode
virtual void write_soft_reset_register () const
 Write soft reset register.
 
- Static Protected Member Functions inherited from dunedaq::timing::IONode
static std::string clock_source_to_string (const ClockSource &source)
 
- Protected Attributes inherited from dunedaq::timing::IONode
const std::string m_uid_i2c_bus
 
const std::string m_pll_i2c_bus
 
const std::string m_pll_i2c_device
 
const std::vector< std::string > m_clock_names
 
const std::vector< std::string > m_sfp_i2c_buses
 
- Static Protected Attributes inherited from dunedaq::timing::IONode
static const std::map< BoardType, std::string > board_type_map
 
static const std::map< CarrierType, std::string > carrier_type_map
 
static const std::map< BoardRevision, std::string > board_revision_map
 
static const std::map< DesignType, std::string > design_type_map
 
static const std::map< uint64_t, BoardRevisionboard_uid_revision_map
 
static const std::map< ClockSource, std::string > clock_source_map
 
static const std::map< std::string, std::string > clock_config_map
 
static const std::vector< BoardTypelibrary_supported_boards
 
static const std::vector< DesignTypelibrary_supported_designs
 

Detailed Description

Class for the timing simulation IO.

Definition at line 33 of file SIMIONode.hpp.

Constructor & Destructor Documentation

◆ SIMIONode()

dunedaq::timing::SIMIONode::SIMIONode ( const uhal::Node & node)
explicit

Definition at line 23 of file SIMIONode.cpp.

24 : IONode(node, "", "", "", {}, {})
25{}
IONode(const uhal::Node &node, std::string uid_i2c_bus, std::string pll_i2c_bus, std::string pll_i2c_device, std::vector< std::string > clock_names, std::vector< std::string > sfp_i2c_buses)
Definition IONode.cpp:25

◆ ~SIMIONode()

dunedaq::timing::SIMIONode::~SIMIONode ( )
virtual

Definition at line 29 of file SIMIONode.cpp.

29{}

Member Function Documentation

◆ clocks_ok()

bool dunedaq::timing::SIMIONode::clocks_ok ( ) const
inlineoverridevirtual

Clocks ready?

Implements dunedaq::timing::IONode.

Definition at line 115 of file SIMIONode.hpp.

115{return true;}

◆ configure_pll()

void dunedaq::timing::SIMIONode::configure_pll ( const std::string & clock_config_file = "") const
overridevirtual

Configure clock chip.

Reimplemented from dunedaq::timing::IONode.

Definition at line 126 of file SIMIONode.cpp.

127{
128 TLOG_DEBUG(0) << "Simulation does not support PLL config";
129}
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112

◆ get_board_revision()

BoardRevision dunedaq::timing::SIMIONode::get_board_revision ( ) const
overridevirtual

Read the word identifying the timing board.

Returns
{ description_of_the_return_value }

Reimplemented from dunedaq::timing::IONode.

Definition at line 65 of file SIMIONode.cpp.

66{
67 return kSIMRev1;
68}

◆ get_clock_frequencies_table()

std::string dunedaq::timing::SIMIONode::get_clock_frequencies_table ( bool print_out = false) const
overridevirtual

Print frequencies of on-board clocks.

Reimplemented from dunedaq::timing::IONode.

Definition at line 143 of file SIMIONode.cpp.

144{
145 TLOG_DEBUG(0) << "Simulation does not support freq table";
146 return "Simulation does not support freq table";
147}

◆ get_hardware_info()

std::string dunedaq::timing::SIMIONode::get_hardware_info ( bool print_out = false) const
overridevirtual

Print hardware information.

Reimplemented from dunedaq::timing::IONode.

Definition at line 73 of file SIMIONode.cpp.

74{
75 std::stringstream info;
77 const BoardRevision board_revision = get_board_revision();
80
81 std::vector<std::pair<std::string, std::string>> hardware_info;
82
83 try {
84 hardware_info.push_back(std::make_pair("Board type", get_board_type_map().at(board_type)));
85 } catch (const std::out_of_range& e) {
86 throw MissingBoardTypeMapEntry(ERS_HERE, format_reg_value(board_type), e);
87 }
88
89 try {
90 hardware_info.push_back(std::make_pair("Board revision", get_board_revision_map().at(board_revision)));
91 } catch (const std::out_of_range& e) {
92 throw MissingBoardRevisionMapEntry(ERS_HERE, format_reg_value(board_revision), e);
93 }
94
95 try {
96 hardware_info.push_back(std::make_pair("Carrier type", get_carrier_type_map().at(carrier_type)));
97 } catch (const std::out_of_range& e) {
98 throw MissingCarrierTypeMapEntry(ERS_HERE, format_reg_value(carrier_type), e);
99 }
100
101 try {
102 hardware_info.push_back(std::make_pair("Design type", get_design_type_map().at(design_type)));
103 } catch (const std::out_of_range& e) {
104 throw MissingDesignTypeMapEntry(ERS_HERE, format_reg_value(design_type), e);
105 }
106 info << format_reg_table(hardware_info, "Hardware info", { "", "" });
107
108 if (print_out)
109 TLOG() << info.str();
110 return info.str();
111}
#define ERS_HERE
virtual uint32_t read_board_type() const
Read the word identifying the timing board.
Definition IONode.cpp:48
virtual uint32_t read_carrier_type() const
Read the word identifying the FPFA carrier board.
Definition IONode.cpp:58
virtual uint32_t read_design_type() const
Read the word identifying the firmware design in the FPGA.
Definition IONode.cpp:68
static const std::map< DesignType, std::string > & get_design_type_map()
Definition IONode.hpp:194
static const std::map< BoardRevision, std::string > & get_board_revision_map()
Definition IONode.hpp:192
static const std::map< BoardType, std::string > & get_board_type_map()
Definition IONode.hpp:188
static const std::map< CarrierType, std::string > & get_carrier_type_map()
Definition IONode.hpp:190
BoardRevision get_board_revision() const override
Read the word identifying the timing board.
Definition SIMIONode.cpp:65
#define TLOG(...)
Definition macro.hpp:22
CarrierType convert_value_to_carrier_type(uint32_t darrier_type)
Definition toolbox.cpp:287
BoardType convert_value_to_board_type(uint32_t Board_type)
Definition toolbox.cpp:274
std::string format_reg_table(T data, std::string title, std::vector< std::string > headers)
Format reg-value table.
Definition toolbox.hxx:166
DesignType convert_value_to_design_type(uint32_t design_type)
Definition toolbox.cpp:300
std::string format_reg_value(T reg_value, uint32_t base)
Definition toolbox.hxx:117

◆ get_pll_status()

std::string dunedaq::timing::SIMIONode::get_pll_status ( bool print_out = false) const
overridevirtual

Print status of on-board PLL.

Reimplemented from dunedaq::timing::IONode.

Definition at line 152 of file SIMIONode.cpp.

153{
154 TLOG_DEBUG(0) << "Simulation does not support PLL status";
155 return "Simulation does not support PLL status";
156}

◆ get_sfp_status()

std::string dunedaq::timing::SIMIONode::get_sfp_status ( uint32_t sfp_id,
bool print_out = false ) const
overridevirtual

Print status of on-board SFP.

Reimplemented from dunedaq::timing::IONode.

Definition at line 161 of file SIMIONode.cpp.

162{
163 TLOG_DEBUG(0) << "Simulation does not support SFP I2C";
164 return "Simulation does not support SFP I2C";
165}

◆ get_status()

std::string dunedaq::timing::SIMIONode::get_status ( bool print_out = false) const
overridevirtual

Get status string, optionally print.

Implements dunedaq::timing::TimingNode.

Definition at line 42 of file SIMIONode.cpp.

43{
44 std::stringstream status;
45
46 auto subnodes = read_sub_nodes(getNode("csr.stat"));
47 status << format_reg_table(subnodes, "SIM IO state");
48
49 if (print_out)
50 TLOG() << status.str();
51 return status.str();
52}
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes(const uhal::Node &node, bool dispatch=true) const
Read subnodes.

◆ get_uid_address_parameter_name()

std::string dunedaq::timing::SIMIONode::get_uid_address_parameter_name ( ) const
overridevirtual

Get the UID address parameter name.

Returns
{ description_of_the_return_value }

Implements dunedaq::timing::IONode.

Definition at line 34 of file SIMIONode.cpp.

35{
36 return "";
37}

◆ read_board_uid()

uint64_t dunedaq::timing::SIMIONode::read_board_uid ( ) const
overridevirtual

Read the word containing the timing board UID.

Returns
{ description_of_the_return_value }

Reimplemented from dunedaq::timing::IONode.

Definition at line 57 of file SIMIONode.cpp.

58{
59 return 0;
60}

◆ read_clock_frequencies()

std::vector< double > dunedaq::timing::SIMIONode::read_clock_frequencies ( ) const
overridevirtual

Read frequencies of on-board clocks.

Reimplemented from dunedaq::timing::IONode.

Definition at line 134 of file SIMIONode.cpp.

135{
136 TLOG_DEBUG(0) << "Simulation does not support reading of freq";
137 return {};
138}

◆ reset() [1/2]

void dunedaq::timing::IONode::reset ( const ClockSource & clock_source) const
virtual

Reset IO, with clock file look up.

Reimplemented from dunedaq::timing::IONode.

Definition at line 179 of file IONode.cpp.

315{
316 // Find the right pll config file
317 std::string clock_config = get_full_clock_config_file_path(clock_source);
318 reset(clock_config);
319}
virtual std::string get_full_clock_config_file_path(const ClockSource &clock_source) const
Get the full config path.
Definition IONode.cpp:167
void reset(const std::string &clock_config_file) const override
Reset IO.

◆ reset() [2/2]

void dunedaq::timing::SIMIONode::reset ( const std::string & clock_config_file) const
overridevirtual

Reset IO.

Implements dunedaq::timing::IONode.

Definition at line 116 of file SIMIONode.cpp.

117{
118
120 TLOG_DEBUG(0) << "Reset done";
121}
virtual void write_soft_reset_register() const
Write soft reset register.
Definition IONode.cpp:296

◆ switch_sfp_soft_tx_control_bit()

void dunedaq::timing::SIMIONode::switch_sfp_soft_tx_control_bit ( uint32_t sfp_id,
bool turn_on ) const
overridevirtual

Control tx laser of on-board SFP softly (I2C command)

Reimplemented from dunedaq::timing::IONode.

Definition at line 170 of file SIMIONode.cpp.

171{
172 TLOG_DEBUG(0) << "Simulation does not support SFP I2C";
173}

◆ switch_sfp_tx()

void dunedaq::timing::SIMIONode::switch_sfp_tx ( uint32_t sfp_id,
bool turn_on ) const
overridevirtual

Control tx laser of on-board SFP softly (I2C command)

Implements dunedaq::timing::IONode.

Definition at line 178 of file SIMIONode.cpp.

179{
180 TLOG_DEBUG(0) << "Simulation does not support SFP control";
181}

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