API Reference: hxcomm¶
-
struct
hxcomm::vx::instruction::omnibus_to_fpga
::
Address
¶ - #include <omnibus_to_fpga.h>
Instruction to set Omnibus address for a read or write operation.
On read this instruction leads to a read response. On write, data is to be provided with a following ‘Data’ instruction. To the FPGA, byte enables can be used to select byte transmission.
Public Static Attributes
-
static constexpr size_t
size
= 37¶
-
static constexpr size_t
-
template<typename...>
structall_char_const_ptr
¶ Check whether are not all supplied types can be converted to
char const*
;.
-
template<typename
ConnectionParameter
>
classhxcomm
::
ARQConnection
¶ - #include <arqconnection.h>
HostARQ connection class.
Establish and hold HostARQ connection to FPGA. Provide convenience functions for sending and receiving UT messages.
- tparam ConnectionParameter
UT message parameter for connection
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
ARQConnection () SYMBOL_VISIBLE
Create connection to FPGA with IP address found in environment.
- Throws
std::runtime_error – On no or more than one FPGA IP address available in environment
-
ARQConnection (ARQConnection &&other) SYMBOL_VISIBLE
Move constructor.
-
ARQConnection
(ARQConnection const&) = delete¶ Copy constructor (deleted because no two instances with the same hardware allocation can coexist).
-
ARQConnection (ip_t ip) SYMBOL_VISIBLE
Create connection to FPGA.
- Parameters
ip – IP-address of FPGA
-
~ARQConnection
()¶ Destruct connection to FPGA joining all receive threads.
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
- Returns
Bitfile info
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get server-side remote repository state information.
Only non-empty for QuiggeldyConnection.
- Returns
Repository state
-
ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information.
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > hwdb_path=std::nullopt) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
ARQConnection & operator= (ARQConnection &&other) SYMBOL_VISIBLE
Assignment operator.
-
ARQConnection &
operator=
(ARQConnection const&) = delete¶ Assignment operator (deleted because no two instances with the same hardware allocation can coexist).
Public Static Attributes
-
static constexpr char
name
[] = "ARQConnection"¶
Private Types
-
typedef sctrltp::ARQStream<sctrltp::ParametersFcpBss2Cube>
arq_stream_type
¶
-
typedef Decoder<typename ConnectionParameter::Receive, receive_queue_type, listener_halt_type>
decoder_type
¶
-
typedef Encoder<typename ConnectionParameter::Send, send_queue_type>
encoder_type
¶
-
typedef ListenerHalt<UTMessage<ConnectionParameter::Receive::HeaderAlignment, typename ConnectionParameter::Receive::SubwordType, typename ConnectionParameter::Receive::PhywordType, typename ConnectionParameter::Receive::Dictionary, typename ConnectionParameter::ReceiveHalt>>
listener_halt_type
¶
-
typedef ConnectionRegistry<ARQConnection>
Registry
¶ Registry of open ARQConnections.
-
typedef SendQueue
send_queue_type
¶
-
typedef sctrltp::packet<sctrltp::ParametersFcpBss2Cube>::entry_t
subpacket_type
¶
Private Functions
-
template<typename
InputIterator
>
voidadd
(InputIterator const &begin, InputIterator const &end)¶ Add multiple UT messages to the send queue.
Messages may be sent to the hardware as part of this call if the send queue is full.
- Template Parameters
InputIterator – Iterator type to sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
void add (send_message_type const &message) SYMBOL_VISIBLE
Add a single UT message to the send queue.
Messages may be sent to the hardware as part of this call if the send queue is full.
- Parameters
message – Message to add
-
void
check_compatibility
() const¶ Check for bitfile version compatibility.
-
void commit () SYMBOL_VISIBLE
Send messages in send queue.
All messages in the send queue are guaranteed to be transfered.
-
std::mutex & get_mutex () SYMBOL_VISIBLE
Get internal mutex to use for mutual exclusion.
- Returns
Mutable reference to mutex
-
receive_queue_type receive_all () SYMBOL_VISIBLE
Receive all UT messages currently in the receive queue.
- Returns
Received messages
-
bool receive_empty () const SYMBOL_VISIBLE
Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
-
void run_until_halt () SYMBOL_VISIBLE
Start execution and wait until halt instruction is received from FPGA.
-
void
work_receive
()¶
Private Members
-
std::unique_ptr<arq_stream_type>
m_arq_stream
¶
-
duration_type
m_commit_duration
= {}¶
-
duration_type
m_decode_duration
= {}¶
-
decoder_type
m_decoder
¶
-
duration_type
m_encode_duration
= {}¶
-
encoder_type
m_encoder
¶
-
duration_type
m_execution_duration
= {}¶
-
listener_halt_type
m_listener_halt
¶
-
receive_queue_type
m_receive_queue
¶
-
send_queue_type
m_send_queue
¶
-
friend Stream< ARQConnection >
Private Static Attributes
-
static constexpr size_t
newest_supported_compatible_until
= bss_hw_params::cube_ethernet::bitfile_compatible_until¶
-
static constexpr size_t
oldest_supported_version
= 0¶ Numbers to compare against bitfile protocol version.
There are 5 scenarios (newer covers new changes as well as outdated partners) 1: Software is newer than biftile and still compatible 2: Software is newer than biftile but incompatible 3: FPGA bitfile is newer than software and still compatible 4: FPGA bitfile is newer than software but incompatible 5: Both are head
The FPGA returns two numbers
version: Integer automatically incrementing with each change to the bitfile
compatible_until: Integer manually incrementing when bitfile introduces breaking feature
We can now cover all 5 cases by comparing these two numbers as follows
oldest_supported_version: manually set to last known bitfile version with breaking change
newest_supported_compatible_until: identical to current head bitfile compatible_until
oldest_supported_version needs to be lesser or equal to version and newest_supported_compatible_until needs to be greater or equal to compatible_until Cases 1, 3 and 5 fulfill these conditions whereas 2 and 4 do not
-
static constexpr uint16_t
pid
= 0x0010¶
-
struct
hxcomm::vx::instruction::timing
::
Barrier
¶ - #include <timing.h>
Block further execution until specified set of communication channels is idle.
-
template<typename
Tag
, size_tN
>
classhxcomm::instruction::detail::payload
::
Bitset
: public hate::bitset<N>¶ - #include <payload.h>
Payload for bitset data.
- tparam Tag
Type of tag class
- tparam N
Number of bits of payload
Public Functions
-
template<typename ...
Args
>
inline explicit constexprBitset
(Args... args)¶ Construct a bitset payload.
- Template Parameters
Args – Argument types to construct from
- Parameters
args – Agruments to construct from
-
template<typename
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<N, SubwordType> const &data)¶ Decode from a bitset of size N (no-op for Bitset).
- Template Parameters
SubwordType – Word type used in bitset representation
- Parameters
data – Bitset data to decode
-
template<typename
SubwordType
= unsigned long>
inline constexpr hate::bitset<N, SubwordType>encode
() const¶ Encode into a bitset of size N (no-op for Bitset).
- Template Parameters
SubwordType – Word type used in bitset representation
- Returns
Payload encoded as bitset
-
struct
Check
¶ - #include <stream_rc.h>
-
template<typename
Connection
>
structhxcomm
::
ConnectionConcept
¶ - #include <connection.h>
Base concept for all connections (ARQ, CoSim, QuiggeldyConnection, …).
Public Static Attributes
-
template<typename
C
>
static constexpr boolhas_receive_message_type_v
= has_receive_message_type<C>::value¶
-
template<typename
C
>
static constexpr boolhas_send_halt_message_type_v
= has_send_halt_message_type<C>::value¶
-
template<typename
-
template<typename
Connection
>
structConnectionIsPlain
: public std::true_type¶ - #include <visit_connection.h>
Helper struct that is used to differentiate between plain connections and connections wrapped up in second order types (e.g.
variant, Handles).
Used in
stadls::run
andConnectionIs{Plain,Wrapped}Guard
below.
- #include <visit_connection.h>
-
template<typename ...
Connections
>
structConnectionIsPlain
<std::variant<Connections...>> : public std::false_type¶ - #include <visit_connection.h>
-
template<size_t
SendHeaderAlignment
, typenameSendSubwordType
, typenameSendPhywordType
, typenameSendDictionary
, typenameSendHaltInstructionType
, size_tReceiveHeaderAlignment
, typenameReceiveSubwordType
, typenameReceivePhywordType
, typenameReceiveDictionary
, typenameReceiveHaltInstructionType
, typenameReceiveTimeoutInstructionType
, typenameQuiggeldyScheduleOutToInTransformType
>
structhxcomm
::
ConnectionParameter
¶ - #include <connection_parameter.h>
Set of template parameters of a connection with different UTMessage sets for sending and receiving direction.
- tparam SendHeaderAlignment
Alignment of header of send UTMessage set
- tparam SendSubwordType
Type of subword of send UTMessage set
- tparam SendPhywordType
Type of PHY-word of send UTMessage set
- tparam SendDictionary
Dictionary of instructions of sent UTMessages
- tparam SendHaltInstructionType
Instruction type of Halt message in sent diciontary
- tparam ReceiveHeaderAlignment
Alignment of header of receive UTMessage set
- tparam ReceiveSubwordType
Type of subword of receive UTMessage set
- tparam ReceivePhywordType
Type of PHY-word of receive UTMessage set
- tparam ReceiveDictionary
Dictionary of instructions of received UTMessages
- tparam ReceiveHaltInstructionType
Instruction type of Halt message in receive dictionary
- tparam QuiggeldyScheduleOutToInTransformType
Functor to transform a schedule-out result to schedule-in instructions in quiggeldy
Public Types
-
typedef QuiggeldyScheduleOutToInTransformType
QuiggeldyScheduleOutToInTransform
¶
-
typedef UTMessageParameter<ReceiveHeaderAlignment, ReceiveSubwordType, ReceivePhywordType, ReceiveDictionary>
Receive
¶
-
typedef ReceiveHaltInstructionType
ReceiveHalt
¶
-
typedef ReceiveTimeoutInstructionType
ReceiveTimeout
¶
-
typedef UTMessageParameter<SendHeaderAlignment, SendSubwordType, SendPhywordType, SendDictionary>
Send
¶
-
typedef SendHaltInstructionType
SendHalt
¶
-
template<typename
Connection
>
structhxcomm
::
ConnectionRegistry
¶ - #include <connection_registry.h>
Registry of open connections.
- tparam Connection
Connection type of registry
Public Types
-
typedef Connection::init_parameters_type
Parameters
¶
Public Members
-
Parameters
m_parameters
¶
Public Static Functions
-
static std::set<Parameters> &
registry
()¶
-
struct
hxcomm
::
ConnectionTimeInfo
¶ - #include <connection_time_info.h>
Time information of a connection’s history of usage.
Public Functions
-
bool operator!= (ConnectionTimeInfo const &other) const SYMBOL_VISIBLE
-
ConnectionTimeInfo operator+ (ConnectionTimeInfo const &other) const SYMBOL_VISIBLE
-
ConnectionTimeInfo & operator+= (ConnectionTimeInfo const &other) SYMBOL_VISIBLE
-
ConnectionTimeInfo operator- (ConnectionTimeInfo const &other) const SYMBOL_VISIBLE
-
ConnectionTimeInfo & operator-= (ConnectionTimeInfo const &other) SYMBOL_VISIBLE
-
bool operator== (ConnectionTimeInfo const &other) const SYMBOL_VISIBLE
Public Members
-
std::chrono::nanoseconds
commit_duration
= {}¶ Time spent sending streams of words to backend since construction.
-
std::chrono::nanoseconds
decode_duration
= {}¶ Time spent decoding UT messages from a stream of words since construction.
Friends
-
friend std::ostream & operator<< (std::ostream &os, ConnectionTimeInfo const &data) SYMBOL_VISIBLE
-
-
struct
hxcomm::vx::instruction::jtag_from_hicann
::
Data
¶ - #include <jtag_from_hicann.h>
Response to a to_fpga_jtag::Data packet, if keep_response is true.
Public Static Attributes
-
static constexpr size_t
size
= 33¶
-
static constexpr size_t
-
struct
hxcomm::vx::instruction::omnibus_from_fpga
::
Data
¶ - #include <omnibus_from_fpga.h>
Response to a omnibus_to_fpga::Address packet, if is_read is true.
Public Types
-
typedef hxcomm::instruction::detail::payload::Number<Data, value_type>
Payload
¶
-
typedef uint32_t
value_type
¶
Public Static Attributes
-
static constexpr size_t
size
= sizeof(value_type) * CHAR_BIT¶
-
typedef hxcomm::instruction::detail::payload::Number<Data, value_type>
-
struct
hxcomm::vx::instruction::omnibus_to_fpga
::
Data
¶ - #include <omnibus_to_fpga.h>
Write data to a beforehand specified Omnibus address.
Write response filtering can be disabled by setting the lowest bit of omnibus on FPGA address 0 to false.
Public Static Attributes
-
static constexpr size_t
size
= sizeof(uint32_t) * CHAR_BIT¶
-
static constexpr size_t
-
struct
hxcomm::vx::instruction::to_fpga_jtag
::
Data
¶ - #include <to_fpga_jtag.h>
Data instruction.
Public Static Attributes
-
static constexpr size_t
max_num_bits_payload
= 33¶
-
static constexpr size_t
min_num_bits_payload
= 3¶
-
static constexpr size_t
padded_num_bits_keep_response
= hate::math::round_up_to_multiple(1, CHAR_BIT)¶
-
static constexpr size_t
padded_num_bits_num_bits_payload
= hate::math::round_up_to_multiple(hate::math::num_bits(max_num_bits_payload), CHAR_BIT)¶
-
static constexpr size_t
padded_num_bits_payload
= hate::math::round_up_to_multiple(max_num_bits_payload, CHAR_BIT)¶
-
static constexpr size_t
size
= padded_num_bits_payload + padded_num_bits_num_bits_payload + padded_num_bits_keep_response¶
-
static constexpr size_t
-
template<typename
UTMessageParameter
, typenameMessageQueueType
, typename ...Listener
>
classhxcomm
::
Decoder
¶ - #include <decoder.h>
Decoder sequentially decoding a stream of words into a UT message queue.
The queue is expected to provide a push function.
- tparam UTMessageParameter
UT message parameter
- tparam MessageQueueType
Queue type used for storing decoded UT messages in
- tparam Listener
An arbitrary number of message listeners to be invoked for each decoded message using their operator()
Public Types
-
typedef MessageQueueType
message_queue_type
¶
-
typedef ToUTMessageVariant<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::type
receive_message_type
¶
-
typedef UTMessageParameter::PhywordType
word_type
¶
Public Functions
-
Decoder
(Decoder &other, message_queue_type &message_queue, Listener&... listener)¶ Initialize decoder with a reference to a message queue to push decoded messages to, references to message listeners to invoke on decoded messages and a reference decoder from which to take existing state.
- Parameters
other – Reference decoder
message_queue – Reference to message queue
listener – List of references to message listeners
-
Decoder
(message_queue_type &message_queue, Listener&... listener)¶ Initialize decoder with a reference to a message queue to push decoded messages to and references to message listeners to invoke on decoded messages.
- Parameters
message_queue – Reference to message queue
listener – List of references to message listeners
-
template<typename
InputIterator
>
voidoperator()
(InputIterator const &begin, InputIterator const &end)¶ Decode a ensemble of words from an iterable.
During the process multiple messages might be decoded and pushed to the message queue. The iterable has to define a cbegin and cend function for iteration.
- Template Parameters
InputIterator – Iterator to word sequence
- Parameters
begin – Iterator to beginning of word sequence
end – Iterator to end of word sequence
Private Types
-
typedef hate::bitset<buffer_size, word_type>
buffer_type
¶
Private Functions
-
size_t
decode_header
() const¶ Decode UT message header.
- Returns
Header
-
template<size_t
Header
>
voiddecode_message
()¶
-
void
decode_message
(size_t header)¶ Decode UT message corresponding to header from buffer and push into message queue.
- Parameters
header – Header to decode UT message for
-
template<size_t...
Header
>
voiddecode_message_table_generator
(size_t header, std::index_sequence<Header...>)¶
-
constexpr size_t
get_message_size
(size_t header)¶ Get UT message size for specified header.
- Parameters
header – Header to lookup UT message size for
Private Members
-
buffer_type
m_buffer
¶
-
size_t
m_buffer_filling_level
¶
-
size_t
m_current_header
¶
-
size_t
m_current_message_size
¶
-
message_queue_type &
m_message_queue
¶
Private Static Functions
Private Static Attributes
-
static constexpr size_t
buffer_size
= hate::math::round_up_to_multiple(LargestUTMessageSize<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::value, num_bits_word) + num_bits_word¶
-
static constexpr size_t
header_size
= UTMessageHeaderWidth<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::Dictionary>::value¶
-
template<typename
UTMessageParameter
>
structhxcomm::random
::
default_ut_message
¶ - #include <utmessage_random.h>
Return default-constructed UTMessage of runtime-specifiable header.
Public Types
-
typedef hxcomm::ToUTMessageVariant<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::type
message_type
¶
Public Static Functions
-
static inline message_type
get
(size_t const header)¶
Private Static Functions
-
template<size_t
H
>
static inline message_typemessage_recurse
(size_t const header, std::index_sequence<H>)¶
-
template<size_t
H
, size_t...Hs
>
static inline message_typemessage_recurse
(size_t const header, std::index_sequence<H, Hs...>)¶
-
typedef hxcomm::ToUTMessageVariant<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::type
-
template<typename
UTMessageParameter
, typenameWordQueueType
>
classhxcomm
::
Encoder
¶ - #include <encoder.h>
Encoder sequentially encoding UT messages to a word queue.
The queue is expected to provide a push function for single words.
- tparam UTMessageParameter
UT message parameter
- tparam WordQueueType
Queue type to push words to
Public Types
-
typedef ToUTMessageVariant<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::type
send_message_type
¶
-
typedef WordQueueType
word_queue_type
¶
-
typedef UTMessageParameter::PhywordType
word_type
¶
Public Functions
-
Encoder
(Encoder &other, word_queue_type &word_queue)¶ Initialize encoder with a reference to a word queue to push encoded words to and a reference encoder from which to take existing buffer state.
- Parameters
word_queue – Reference to word queue
other – Reference encoder
-
Encoder
(word_queue_type &word_queue)¶ Initialize encoder with a reference to a word queue to push encoded words to.
- Parameters
word_queue – Reference to word queue
-
void
flush
()¶ Flush the possibly partially filled head-word of the buffer to the queue.
Appends a comma to the word before pushing.
-
template<typename
InputIterator
>
voidoperator()
(InputIterator const &begin, InputIterator const &end)¶ Encode multiple messages.
During the process multiple words might be produced and pushed to the word queue. The implementation requires messages to have a cbegin and cend function for iteration. The containers’ entries are to be message variants.
- Template Parameters
InputIterator – Iterator to UTMessage variant sequence
- Parameters
begin – Iterator to beginning of message sequence
end – Iterator to end of message sequence
-
template<typename
MessageType
>
std::enable_if<detail::IsUTMessage<MessageType>::value, void>::typeoperator()
(MessageType const &message)¶ Encode a message.
During the process multiple words might be produced and pushed to the word queue.
- Template Parameters
MessageType – Type of message to encode
- Parameters
message – Message to encode
Private Types
-
typedef hate::bitset<buffer_size, word_type>
buffer_type
¶
Private Static Attributes
-
static constexpr size_t
buffer_size
= hate::math::round_up_to_multiple(LargestUTMessageSize<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::value, num_bits_word) + num_bits_word¶
-
class
hxcomm::vx
::
EnsureLocalQuiggeldy
¶ - #include <ensure_local_quiggeldy.h>
RAII-style helper to ensure a local quiggeldy instance is running.
Public Functions
-
EnsureLocalQuiggeldy () SYMBOL_VISIBLE
-
~EnsureLocalQuiggeldy () SYMBOL_VISIBLE
-
-
template<typename
Connection
>
structhxcomm::detail
::
ExecuteMessagesArgumentType
¶ - #include <execute_messages_types.h>
Public Types
-
using
type
= std::vector<typename GetMessageTypes<std::remove_cvref_t<Connection>>::type::send_type>¶
-
using
-
template<typename
Connection
>
structhxcomm::detail
::
ExecuteMessagesReturnType
¶ - #include <execute_messages_types.h>
Public Types
-
using
type
= std::pair<std::vector<typename GetMessageTypes<std::remove_cvref_t<Connection>>::type::receive_type>, ConnectionTimeInfo>¶
-
using
-
template<typename
Connection
>
structhxcomm::detail
::
ExecutorMessages
¶ - #include <execute_messages.h>
Helper for partial specialization over templated connection-types.
operator()-contains the implementation of execute_messages defined below.
TODO: Validate interface via concepts once gcc 10 is ready.
Public Types
-
using
connection_type
= Connection¶
-
using
messages_type
= execute_messages_argument_t<Connection>¶
-
using
receive_message_type
= typename connection_type::receive_message_type¶
-
using
response_type
= typename return_type::first_type¶
-
using
return_type
= execute_messages_return_t<Connection>¶
-
using
send_halt_message_type
= typename connection_type::send_halt_message_type¶
-
using
send_message_type
= typename connection_type::send_message_type¶
Public Functions
-
inline return_type
operator()
(connection_type &conn, messages_type const &messages)¶
-
using
-
template<typename
ConnectionParameter
>
classhxcomm
::
ExtollConnection
¶ - #include <extollconnection.h>
Extoll connection class.
Establish and hold Extoll connection to FPGA. Provide convenience functions for sending and receiving UT messages.
- tparam ConnectionParameter
UT message parameter for connection
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
ExtollConnection () SYMBOL_VISIBLE
Create connection to FPGA via Extoll.
-
ExtollConnection (ExtollConnection &&other) SYMBOL_VISIBLE
Move constructor.
-
ExtollConnection
(ExtollConnection const&) = delete¶ Copy constructor deleted.
-
ExtollConnection (RMA2_Nodeid node_id) SYMBOL_VISIBLE
Create connection to FPGA via Extoll for given Node ID.
-
~ExtollConnection () SYMBOL_VISIBLE
Destruct connection to FPGA joining all receive threads.
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
- Returns
Bitfile info
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get server-side remote repository state information.
Only non-empty for QuiggeldyConnection.
- Returns
Repository state
-
ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information.
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > hwdb_path=std::nullopt) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
ExtollConnection & operator= (ExtollConnection &&other) SYMBOL_VISIBLE
Assignment operator.
-
ExtollConnection &
operator=
(ExtollConnection const&) = delete¶ Assignment operator deleted.
Public Static Attributes
-
static constexpr char
name
[] = "ExtollConnection"¶
Private Types
-
typedef Decoder<typename ConnectionParameter::Receive, receive_queue_type, listener_halt_type>
decoder_type
¶
-
typedef Encoder<typename ConnectionParameter::Send, send_queue_type>
encoder_type
¶
-
typedef ListenerHalt<UTMessage<ConnectionParameter::Receive::HeaderAlignment, typename ConnectionParameter::Receive::SubwordType, typename ConnectionParameter::Receive::PhywordType, typename ConnectionParameter::Receive::Dictionary, typename ConnectionParameter::ReceiveHalt>>
listener_halt_type
¶
-
typedef ConnectionRegistry<ExtollConnection>
Registry
¶ Registry of open ExtollConnections.
-
typedef SendQueue
send_queue_type
¶
-
typedef ConnectionParameter::Send::PhywordType
subpacket_type
¶
Private Functions
-
template<typename
InputIterator
>
voidadd
(InputIterator const &begin, InputIterator const &end)¶ Add multiple UT messages to the send queue.
- Template Parameters
InputIterator – Iterator type of sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
void add (send_message_type const &message) SYMBOL_VISIBLE
Add a single UT message to the send queue.
- Parameters
message – Message to add
-
void check_compatibility () const SYMBOL_VISIBLE
Check for bitfile version compatibility.
-
void commit () SYMBOL_VISIBLE
Send messages in send queue.
All messages in the send queue are guaranteed to be transferred.
-
std::mutex & get_mutex () SYMBOL_VISIBLE
Get internal mutex to use for mutual exclusion.
- Returns
Mutable reference to mutex
-
receive_queue_type receive_all () SYMBOL_VISIBLE
Receive all UT messages currently in the receive queue.
- Returns
Received messages
-
bool receive_empty () const SYMBOL_VISIBLE
Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
-
void run_until_halt () SYMBOL_VISIBLE
Start execution and wait until halt instruction is received from FPGA.
-
void
work_receive
()¶
Private Members
-
duration_type
m_commit_duration
= {}¶
-
duration_type
m_decode_duration
= {}¶
-
decoder_type
m_decoder
¶
-
duration_type
m_encode_duration
= {}¶
-
encoder_type
m_encoder
¶
-
duration_type
m_execution_duration
= {}¶
-
listener_halt_type
m_listener_halt
¶
-
receive_queue_type
m_receive_queue
¶
-
send_queue_type
m_send_queue
¶
-
friend Stream< ExtollConnection >
Private Static Attributes
-
static constexpr size_t
newest_supported_compatible_until
= bss_hw_params::cube_extoll::bitfile_compatible_until¶
-
static constexpr size_t
oldest_supported_version
= 0¶ Numbers to compare against bitfile protocol version.
There are 5 scenarios (newer covers new changes as well as outdated partners) 1: Software is newer than biftile and still compatible 2: Software is newer than biftile but incompatible 3: FPGA bitfile is newer than software and still compatible 4: FPGA bitfile is newer than software but incompatible 5: Both are head
The FPGA returns two numbers
version: Integer automatically incrementing with each change to the bitfile
compatible_until: Integer manually incrementing when bitfile introduces breaking feature
We can now cover all 5 cases by comparing these two numbers as follows
oldest_supported_version: manually set to last known bitfile version with breaking change
newest_supported_compatible_until: identical to current head bitfile compatible_until
oldest_supported_version needs to be lesser or equal to version and newest_supported_compatible_until needs to be greater or equal to compatible_until Cases 1, 3 and 5 fulfill these conditions whereas 2 and 4 do not
-
template<template<size_t> class
PackSpike
, template<size_t> classPackMADC
, typenameIS
>
structGenerateDictionary
¶
-
template<template<size_t> class
Pack
, typenameIS
>
structGenerateDictionary
¶
-
template<template<size_t> class
Pack
, size_t...Is
>
structhxcomm::vx::instruction::event_to_fpga::detail
::
GenerateDictionary
<Pack, std::index_sequence<Is...>>¶ - #include <event_to_fpga.h>
-
template<template<size_t> class
PackSpike
, template<size_t> classPackMADC
, size_t...Is
>
structhxcomm::vx::instruction::event_from_fpga::detail
::
GenerateDictionary
<PackSpike, PackMADC, std::index_sequence<Is...>>¶ - #include <event_from_fpga.h>
-
template<typename
C
, typename = void>
structhxcomm
::
GetMessageTypes
¶ - #include <connection.h>
Helper function to get MessageTypes from a Connection or a variant etc over the same Connection in a streamlined fashion.
If C is a ConnectionParameter instance, the corresponding MessageTypes will be returned.
Public Types
-
using
type
= MessageTypes<std::decay_t<C>>¶
-
using
-
template<typename
C
>
structhxcomm
::
GetMessageTypes
<C, std::void_t<typename C::message_types>>¶ - #include <connection.h>
- #include <connection.h>
Public Types
-
template<typename ...
Cs
>
structhxcomm
::
GetMessageTypes
<std::variant<Cs...>>¶ - #include <connection.h>
-
template<typename
C
, typename = void>
structhas_get_time_info
: public std::false_type¶ - #include <connection.h>
-
template<typename
C
>
structhxcomm::ConnectionConcept
::
has_get_time_info
<C, std::void_t<decltype(&C::get_time_info)>>¶ - #include <connection.h>
Public Static Attributes
-
static constexpr bool
value
= std::is_same_v<decltype(&C::get_time_info), ConnectionTimeInfo (C::*)() const>¶
-
static constexpr bool
-
template<typename
C
, typename = std::void_t<>>
structhas_method_get_reinit_stack
: public std::false_type¶ - #include <stream_rc.h>
-
template<typename
C
>
structhas_method_get_reinit_stack
<C, std::void_t<decltype(std::declval<C&>().get_reinit_stack())>> : public std::true_type¶ - #include <stream_rc.h>
-
template<typename
C
, typename = std::void_t<>>
structhas_method_get_reinit_uploader
: public std::false_type¶ - #include <stream_rc.h>
-
template<typename
C
>
structhas_method_get_reinit_uploader
<C, std::void_t<decltype(std::declval<C&>().get_reinit_upload())>> : public std::true_type¶ - #include <stream_rc.h>
-
template<typename
C
, typename = std::void_t<>>
structhas_method_reinit_enforce
: public std::false_type¶ - #include <stream_rc.h>
-
template<typename
C
>
structhas_method_reinit_enforce
<C, std::void_t<decltype(std::declval<C&>().reinit_enforce())>> : public std::true_type¶ - #include <stream_rc.h>
-
template<typename
C
, typename = std::void_t<>>
structhas_method_submit_async
: public std::false_type¶ - #include <stream_rc.h>
-
template<typename
C
>
structhas_method_submit_async
<C, std::void_t<typename submit_async_return<C>::type>> : public std::true_type¶ - #include <stream_rc.h>
-
template<typename, typename = std::void_t<>>
structhas_method_submit_blocking
: public std::false_type¶ - #include <stream_rc.h>
-
template<typename
C
>
structhas_method_submit_blocking
<C, std::void_t<typename submit_blocking_return<C>::type>> : public std::true_type¶ - #include <stream_rc.h>
-
template<typename
C
, typename = void>
structhas_receive_message_type
: public std::false_type¶ - #include <connection.h>
-
template<typename
C
>
structhas_receive_message_type
<C, std::void_t<typename C::receive_message_type>> : public std::true_type¶ - #include <connection.h>
-
template<typename
C
>
structhas_required_interface
: public std::conjunction<has_method_submit_async<C>, has_method_submit_blocking<C>>¶ - #include <stream_rc.h>
-
template<typename
C
, typename = void>
structhas_send_halt_message_type
: public std::false_type¶ - #include <connection.h>
-
template<typename
C
>
structhas_send_halt_message_type
<C, std::void_t<typename C::send_halt_message_type>> : public std::true_type¶ - #include <connection.h>
-
template<typename
C
, typename = void>
structhas_send_message_type
: public std::false_type¶ - #include <connection.h>
-
template<typename
C
>
structhas_send_message_type
<C, std::void_t<typename C::send_message_type>> : public std::true_type¶ - #include <connection.h>
-
template<typename
C
, typename = void>
structhas_supported_targets
: public std::false_type¶ - #include <connection.h>
-
template<typename
C
>
structhxcomm::ConnectionConcept
::
has_supported_targets
<C, std::void_t<decltype(C::supported_targets)>>¶ - #include <connection.h>
-
struct
hxcomm::vx::instruction::from_fpga_system
::
HighspeedLinkNotification
¶ - #include <from_fpga_system.h>
Highspeed-Link notifications.
Public Types
-
typedef hxcomm::instruction::detail::payload::Bitset<HighspeedLinkNotification, size>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= 8¶
-
typedef hxcomm::instruction::detail::payload::Bitset<HighspeedLinkNotification, size>
-
struct
hxcomm::vx::instruction::to_fpga_jtag
::
Init
¶ - #include <to_fpga_jtag.h>
Reset state machine.
Public Static Attributes
-
static constexpr size_t
size
= 0¶
-
static constexpr size_t
-
struct
hxcomm::vx::instruction::to_fpga_jtag
::
Ins
¶ - #include <to_fpga_jtag.h>
Select instruction register on the Hicann.
Public Static Attributes
-
static constexpr size_t
size
= 7¶
-
static constexpr size_t
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typenameDictionary
, typenameInstruction
>
structIsUTMessage
<UTMessage<HeaderAlignment, SubwordType, PhywordType, Dictionary, Instruction>> : public std::true_type¶ - #include <encoder.h>
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typenameDictionary
>
structLargestUTMessageSize
¶ Get the largest UT message size in bits for a given set of UT message parameters.
- tparam HeaderAlignment
Alignment of header in bits
- tparam SubwordType
Type of subword which’s width corresponds to the messages alignment
- tparam PhywordType
Type of PHY-word which’s width corresponds to the message’s minimal width
- tparam Dictionary
Dictionary of instructions
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typename ...Is
>
structhxcomm
::
LargestUTMessageSize
<HeaderAlignment, SubwordType, PhywordType, hate::type_list<Is...>>¶ - #include <largest_utmessage_size.h>
Public Static Attributes
-
static constexpr size_t
value
= std::max({UTMessage<HeaderAlignment, SubwordType, PhywordType, hate::type_list<Is...>, Is>::word_width...})¶
-
static constexpr size_t
-
template<typename
HaltMessageType
>
classhxcomm
::
ListenerHalt
¶ - #include <listener_halt.h>
Listener registering occurence of a halt instruction.
Filtering is done at compile-time for the halt message type and at runtime for the payload comparing with the
halt
member of the messages instruction type.- tparam HaltMessageType
Message type of Halt instruction
Public Functions
-
inline
ListenerHalt
()¶ Construct Halt listener.
-
inline bool
get
() const¶ Get whether the listener registered a Halt message.
-
template<typename
MessageType
>
inline voidoperator()
(MessageType const &message)¶ Operator invoked for every decoded message checking whether the message contains a Halt.
- Template Parameters
MessageType – Type of UT message to check
- Parameters
message – UT message instance to check
-
inline void
reset
()¶ Reset listener state to not having registered a Halt message.
-
struct
hxcomm::vx::instruction::from_fpga_system
::
Loopback
¶ - #include <from_fpga_system.h>
Trace-marker response to a system::Loopback packet.
-
struct
hxcomm::vx::instruction::system
::
Loopback
¶ - #include <system.h>
Instruction generating a Loopback response.
-
template<typename
UTMessageParameter
>
classhxcomm
::
LoopbackConnection
¶ - #include <loopbackconnection.h>
Loopback connection class.
Committed packets are added to a intermediate packet queue in software without alteration. Every committed message can be received in order. The send and receive dictionary are therefore the same.
- tparam UTMessageParameter
UT message parameter
Public Types
-
typedef UTMessageParameter::Dictionary
dictionary_type
¶
-
typedef UTMessageParameter::PhywordType
phyword_type
¶
-
typedef send_message_type
receive_message_type
¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
typedef ToUTMessageVariant<UTMessageParameter::HeaderAlignment, typenameUTMessageParameter::SubwordType, typenameUTMessageParameter::PhywordType, typenameUTMessageParameter::Dictionary>::type
send_message_type
¶
-
typedef phyword_type
subpacket_type
¶
-
typedef UTMessageParameter::SubwordType
subword_type
¶
-
typedef UTMessageParameter
ut_message_parameter_type
¶
Public Functions
-
LoopbackConnection
()¶ Default construct loopback connection.
-
~LoopbackConnection
()¶ Destruct loopback connection joining all receive threads.
-
template<typename
InputIterator
>
voidadd
(InputIterator const &begin, InputIterator const &end)¶ Add multiple UT messages to the send queue.
- Template Parameters
InputIterator – Iterator type to sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
void
add
(send_message_type const &message)¶ Add a single UT message to the send queue.
- Parameters
message – Message to add
-
void
commit
()¶ Send messages in send queue by moving to the intermediate queue.
-
receive_queue_type
receive_all
()¶ Receive all UT messages currently in the receive queue.
- Returns
Received messages
-
bool
receive_empty
() const¶ Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
Public Static Attributes
-
static constexpr size_t
header_alignment
= UTMessageParameter::HeaderAlignment¶
Private Types
-
typedef std::queue<subpacket_type>
send_queue_type
¶
Private Functions
-
void
work_receive
()¶
Private Members
-
Decoder<UTMessageParameter, receive_queue_type>
m_decoder
¶
-
Encoder<UTMessageParameter, send_queue_type>
m_encoder
¶
-
std::deque<subpacket_type>
m_intermediate_queue
¶
-
receive_queue_type
m_receive_queue
¶
-
send_queue_type
m_send_queue
¶
-
class
hxcomm::vx::instruction::event_from_fpga
::
MADCSample
¶ - #include <event_from_fpga.h>
Type of one sample event.
Public Types
-
typedef hate::bitset<timestamp_size>
Timestamp
¶
Public Functions
-
inline
MADCSample
()¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline bool
operator!=
(MADCSample const &other) const¶
-
inline bool
operator==
(MADCSample const &other) const¶
Public Static Attributes
-
static constexpr size_t
size
= value_size + timestamp_size¶
-
static constexpr size_t
timestamp_size
= 8¶
-
static constexpr size_t
value_size
= 16¶
Friends
-
inline friend std::ostream &
operator<<
(std::ostream &os, MADCSample const &value)¶
-
typedef hate::bitset<timestamp_size>
-
template<size_t
num_samples
>
structhxcomm::vx::instruction::event_from_fpga
::
MADCSamplePack
¶ - #include <event_from_fpga.h>
Public Types
-
typedef MADCSamplePackPayload<num_samples>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= MADCSamplePackPayload<num_samples>::size¶
-
typedef MADCSamplePackPayload<num_samples>
-
template<size_t
num_samples
>
classhxcomm::vx::instruction::event_from_fpga
::
MADCSamplePackPayload
¶ - #include <event_from_fpga.h>
Payload of a madc_sample_pack instruction.
Public Types
-
typedef std::array<MADCSample, num_samples>
samples_type
¶
Public Functions
-
inline
MADCSamplePackPayload
()¶
-
inline
MADCSamplePackPayload
(samples_type const &samples)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline samples_type const &
get_samples
() const¶
-
inline bool
operator!=
(MADCSamplePackPayload const &other) const¶
-
inline bool
operator==
(MADCSamplePackPayload const &other) const¶
-
inline void
set_samples
(samples_type const &samples)¶
Public Static Attributes
-
static constexpr size_t
size
= MADCSample::size * num_samples¶
Private Members
-
samples_type
m_samples
¶
Friends
-
inline friend std::ostream &
operator<<
(std::ostream &os, MADCSamplePackPayload const &value)¶
-
typedef std::array<MADCSample, num_samples>
-
template<typename
ConnectionParameter
>
structhxcomm
::
MessageTypes
¶ - #include <connection.h>
Helper struct that defines message types from ConnectionParameters.
- tparam ConnectionParameter
UT message parameter for connection
Public Types
-
using
connection_parameter_type
= ConnectionParameter¶
-
typedef hxcomm::ToUTMessageVariant<ConnectionParameter::Receive::HeaderAlignment, typenameConnectionParameter::Receive::SubwordType, typenameConnectionParameter::Receive::PhywordType, typenameConnectionParameter::Receive::Dictionary>::type
receive_type
¶
-
typedef hxcomm::UTMessage<ConnectionParameter::Send::HeaderAlignment, typename ConnectionParameter::Send::SubwordType, typename ConnectionParameter::Send::PhywordType, typename ConnectionParameter::Send::Dictionary, typename ConnectionParameter::SendHalt>
send_halt_type
¶
-
typedef hxcomm::ToUTMessageVariant<ConnectionParameter::Send::HeaderAlignment, typenameConnectionParameter::Send::SubwordType, typenameConnectionParameter::Send::PhywordType, typenameConnectionParameter::Send::Dictionary>::type
send_type
¶
-
template<typename
Tag
, typenameT
>
classhxcomm::instruction::detail::payload
::
Number
¶ - #include <payload.h>
Payload for number-type data.
- tparam Tag
Type of tag class
- tparam N
Number of bits of payload
- tparam T
underlying number type
Public Functions
-
inline explicit constexpr
Number
(T const value = 0)¶ Construct a Number payload.
- Parameters
value – Value to construct from
-
template<typename
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶ Decode from a bitset of size N.
- Template Parameters
SubwordType – Word type used in bitset representation
- Parameters
data – Bitset data to decode
-
template<typename
SubwordType
= unsigned long>
inline constexpr hate::bitset<size, SubwordType>encode
() const¶ Encode into a bitset of size N.
- Template Parameters
SubwordType – Word type used in bitset representation
- Returns
Payload encoded as bitset
-
inline
operator T
() const¶
-
class
hxcomm::vx::instruction::omnibus_to_fpga::Address
::
Payload
¶ - #include <omnibus_to_fpga.h>
Public Functions
-
inline explicit
Payload
(uint32_t const address = 0, bool const is_read = false, hate::bitset<sizeof(uint32_t)> const byte_enables = 0xf)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline bool
get_is_read
() const¶
-
inline void
set_is_read
(bool value)¶
-
inline explicit
-
class
hxcomm::vx::instruction::to_fpga_jtag::Data
::
Payload
¶ - #include <to_fpga_jtag.h>
Payload of a data instruction.
Public Types
-
typedef rant::integral_range<uint_fast8_t, max_num_bits_payload, min_num_bits_payload>
NumBits
¶ Select the amount of bits of payload field to be shifted in instruction register previously selected by an ins instruction.
Public Functions
-
inline
Payload
(bool const keep_response = false, NumBits const num_bits = NumBits(max_num_bits_payload), hate::bitset<max_num_bits_payload> const payload = 0u)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline bool
get_keep_response
() const¶
-
inline hate::bitset<max_num_bits_payload>
get_payload
() const¶
-
inline void
set_keep_response
(bool const value)¶
-
inline void
set_payload
(hate::bitset<max_num_bits_payload> const &value)¶
Private Members
-
bool
m_keep_response
¶ Select whether to keep the JTAG_from_hicann::data response.
-
hate::bitset<max_num_bits_payload>
m_payload
¶ Data to be inserted into the previously selected instruction register.
-
typedef rant::integral_range<uint_fast8_t, max_num_bits_payload, min_num_bits_payload>
-
struct
hxcomm::vx::instruction::timing
::
PollingOmnibusBlock
¶ - #include <timing.h>
Block further execution until specified Omnibus address has value & mask == target.
Configuration is found in the FPGA Omnibus register file of the executor.
Public Types
-
typedef hxcomm::instruction::detail::payload::Bitset<PollingOmnibusBlock, size>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= 1¶
-
typedef hxcomm::instruction::detail::payload::Bitset<PollingOmnibusBlock, size>
-
template<typename
ConnectionParameter
>
structhxcomm
::
quiggeldy_interface_types
¶ - #include <quiggeldy_interface_types.h>
Subclassed by hxcomm::quiggeldy_interface_types< MessageTypes< ConnectionParameter > >
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
reinit_entry_type
= detail::ReinitEntryType<ConnectionParameter>¶
-
using
reinit_type
= std::vector<reinit_entry_type>¶
-
using
request_type
= detail::execute_messages_argument_t<ConnectionParameter>¶
-
using
response_type
= detail::execute_messages_return_t<ConnectionParameter>¶
-
using
-
template<typename
ConnectionParameter
>
structhxcomm
::
quiggeldy_interface_types
<MessageTypes<ConnectionParameter>> : public hxcomm::quiggeldy_interface_types<ConnectionParameter>¶ - #include <quiggeldy_interface_types.h>
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
reinit_entry_type
= detail::ReinitEntryType<ConnectionParameter>¶
-
using
reinit_type
= std::vector<reinit_entry_type>¶
-
using
request_type
= detail::execute_messages_argument_t<ConnectionParameter>¶
-
using
response_type
= detail::execute_messages_return_t<ConnectionParameter>¶
-
using
-
template<typename
ConnectionParameter
, typenameRcfClient
>
classhxcomm
::
QuiggeldyConnection
¶ - #include <quiggeldy_connection.h>
QuiggeldyConnection class.
Establish and hold connection to a remote quiggeldy instance that itself proxies another connection.
- tparam ConnectionParameter
UT message parameter for connection
- tparam RcfClient
RCF-based client that is needed to connect to quiggeldy instance.
Public Types
-
using
future_type
= QuiggeldyFuture<typename interface_types::response_type, rcf_client_type>¶
-
using
interface_types
= quiggeldy_interface_types<ConnectionParameter>¶
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
using
reinit_stack_type
= ReinitStack<ConnectionParameter>¶
-
using
reinit_uploader_type
= rcf_extensions::OnDemandUpload<rcf_client_type, typename interface_types::reinit_type>¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
QuiggeldyConnection () SYMBOL_VISIBLE
Connects to server while getting IP and port from environment.
-
QuiggeldyConnection (connect_parameters_type const ¶ms) SYMBOL_VISIBLE
Connect via tuple of ip/port.
-
QuiggeldyConnection (QuiggeldyConnection &&) SYMBOL_VISIBLE
Move constructor.
-
QuiggeldyConnection
(QuiggeldyConnection const&) = delete¶ No copies allowed.
-
QuiggeldyConnection (std::string ip, uint16_t port) SYMBOL_VISIBLE
Connects to server with explicit ip/port.
- Parameters
ip – Target ip address.
port – Target port.
-
~QuiggeldyConnection () SYMBOL_VISIBLE
Destruct connection to FPGA joining all receive threads.
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
- Returns
Bitfile info
-
std::chrono::milliseconds get_connection_attempt_wait_after () const SYMBOL_VISIBLE
Get wait duration after every connection attempt number of connection attempts.
- Returns
Wait duration after every connection attempt.
-
size_t get_connection_attempts_max () const SYMBOL_VISIBLE
Get maximum number of connection attempts.
- Returns
Number of connection attempts.
-
std::optional< std::string > get_custom_username () SYMBOL_VISIBLE
Get custom username to use remotely, if defined.
- Returns
Custom username if defined. Otherwise: nullopt.
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get quiggeldy server repository state info.
- Returns
Repository state info
-
ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information.
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > hwdb_path=std::nullopt) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
bool get_use_munge () const SYMBOL_VISIBLE
Get whether or not to encode user information using munge.
This is needed if the remote side is also using munge (i.e., regular operations), but should be disabled in testing environments running without munge.
This option has no effect if fisch was compiled with
--without-munge
.- Returns
Whether munge should be used (true) or not (false).
-
std::string get_version_string () const SYMBOL_VISIBLE
Get compile time version information in human-readable form from server side.
- Returns
Human-readable form of version information.
-
bool is_out_of_order () const SYMBOL_VISIBLE
Return whether this instance submits packages out-of-order, i.e., if submitted asynchronous requests could be executed out of order.
Note: In case of out-of-order execution, single submitted work packages should correspond to a full program.
-
QuiggeldyConnection & operator= (QuiggeldyConnection &&) SYMBOL_VISIBLE
Assignment operator.
-
QuiggeldyConnection &
operator=
(QuiggeldyConnection const&) = delete¶ No copies allowed.
-
void set_connection_attempt_wait_after (std::chrono::milliseconds ms) SYMBOL_VISIBLE
Set wait duration after every connection attempt number of connection attempts.
- Parameters
ms – Wait duration after every connection attempt.
-
void set_connection_attempts_max (size_t num) SYMBOL_VISIBLE
Set maximum number of connection attempts.
- Parameters
num – Number of connection attempts.
-
void set_custom_username (std::string custom_user) SYMBOL_VISIBLE
Set custom username.
Please note that this setting will only be used if munge authentication is disabled.
- Parameters
custom_user – Custom username to use.
-
void set_out_of_order () SYMBOL_VISIBLE
Set the QuiggeldyConnection to set out-of-order work units.
This can speed up execution times if each playback-program does not depend on other playback programs. Plus, it might make learning more robust.
-
void set_use_munge (bool value) SYMBOL_VISIBLE
Set whether or not to encode user information using munge.
This is needed if the remote side is also using munge (i.e., regular operations), but should be disabled in testing environments running without munge.
This option has no effect if compiling with
--without-munge
.- Parameters
value – If munge should be used (true) or not (false).
Public Static Attributes
-
static constexpr char
name
[] = {"QuiggeldyConnection"}¶
-
static constexpr std::chrono::hours
program_runtime_max
= std::chrono::hours(24 * 30)¶ When running experiments over quiggeldy - if running blocking - RCF needs to keep the connection open for as long as an experiment could theoretically be running.
For now just set it to one month. If needed, this should be set to a more reasonable constant in the future.
Protected Functions
-
void accumulate_time_info (ConnectionTimeInfo const &delta) SYMBOL_VISIBLE
-
f_create_client_shared_ptr_t
get_create_client_function
()¶ Return function that creates RCF clients with this connection’s info.
-
std::weak_ptr< reinit_stack_type > get_reinit_stack () const SYMBOL_VISIBLE
Get a reference to the reinit stack.
This is only used by ReinitStackEntry to support nested reinit programs and is not really useful otherwise.
-
std::weak_ptr< reinit_uploader_type > get_reinit_upload () const SYMBOL_VISIBLE
Get a reference to the uploader instance so that a possible reinit program can be registered elsewhere.
-
std::lock_guard< std::mutex > lock_time_info () const SYMBOL_VISIBLE
Lock guard for time info.
-
rcf_extensions::SequenceNumber next_sequence_number () SYMBOL_VISIBLE
Get next sequence number for a new request.
-
void reinit_enforce () SYMBOL_VISIBLE
Enforce reinit program to be used on the remote site prior to executing result-producing FPGA word streams.
-
void set_user_data (std::unique_ptr< rcf_client_type > &) const SYMBOL_VISIBLE
Prepare user data in connection to authenticate request on the server side.
Called by setup_client().
Sets up potential munge authentication.
-
std::unique_ptr< rcf_client_type > setup_client (bool with_user_data=true) const SYMBOL_VISIBLE
Set up the RCF-client, i.e., establish a connection to the server.
Takes its parameters from
m_connect_parameters
.- Parameters
with_user_data – whether or not to set user data in connection (for work submission user data needs to be set).
-
future_type submit_async (typename interface_types::request_type const &req) SYMBOL_VISIBLE
Send the given request to the server and block until response is ready.
- Parameters
req – Request which is sent to the server.
- Returns
Response containing FPGA words from the connection.
-
interface_types::response_type submit_blocking (typename interface_types::request_type const &req) SYMBOL_VISIBLE
Send the given request to the server and block until response is ready.
This function is reentrant.
- Parameters
req – Request which is sent to the server.
- Returns
Response containing FPGA words from the connection.
Protected Attributes
-
connect_parameters_type
m_connect_parameters
¶
-
size_t
m_connection_attempt_num_max
¶
-
RCF::RcfInit
m_rcf
¶
-
std::shared_ptr<reinit_stack_type>
m_reinit_stack
¶
-
std::shared_ptr<reinit_uploader_type>
m_reinit_uploader
¶
-
rcf_extensions::SequenceNumber
m_sequence_num
¶
-
boost::uuids::uuid
m_session_uuid
¶
-
ConnectionTimeInfo
m_time_info
¶
-
bool
m_use_munge
¶
-
friend StreamRC< QuiggeldyConnection >
Protected Static Functions
-
static connect_parameters_type get_connect_params_from_env () SYMBOL_VISIBLE
-
template<typename
ReturnValue
, typenameRcfClient
>
classhxcomm
::
QuiggeldyFuture
¶ - #include <quiggeldy_future.h>
Wrapper class that holds an async-response as well as the corresponding RCF-client because each RCF-client only supports one concurrent asynchronous call.
If forwards needed portions of the RCF::Future-API.
Public Types
-
using
rcf_future_type
= RCF::Future<ReturnValue>¶
-
using
return_value_type
= ReturnValue¶
Public Functions
-
inline
QuiggeldyFuture
(std::unique_ptr<rcf_client_type> client, std::unique_ptr<rcf_future_type> future)¶ Construct QuiggeldyFuture.
- Parameters
client – Client used to create future.
future – RCF::Future value to be wrapped.
-
inline void
cancel
()¶ Cancel the future and clear this instance.
-
inline return_value_type
operator*
()¶ Access the computed value, blocking until the value is ready.
If QuiggeldyFuture was
cancel()
-ed, will throw.Should only be called once!
-
inline bool
ready
()¶ Check if the Future holds a value.
Private Members
-
std::unique_ptr<rcf_client_type>
m_client
¶
-
std::unique_ptr<RCF::Future<return_value_type>>
m_future
¶
-
using
-
struct
hxcomm::vx::detail
::
QuiggeldyScheduleOutToInTransform
¶ - #include <quiggeldy_schedule_out_to_in_transform.h>
Public Types
-
using
request_type
= std::vector<UTMessageToFPGAVariant>¶
-
using
response_type
= std::vector<UTMessageFromFPGAVariant>¶
Public Functions
-
request_type operator() (response_type const &response, request_type const &snapshot) SYMBOL_VISIBLE
-
using
-
template<typename
Connection
>
classhxcomm
::
QuiggeldyServer
: public rcf_extensions::RoundRobinReinitScheduler<QuiggeldyWorker<Connection>>¶ - #include <quiggeldy_server.h>
Public Types
-
using
parent_t
= rcf_extensions::RoundRobinReinitScheduler<QuiggeldyWorker<Connection>>¶
Public Functions
-
template<typename
RcfInterface
>
inline voidbind_to_interface
()¶ Bind QuiggeldyServer to the RcfInterface.
Cannot be called on baseclass because then the baseclass would get bound to the RCF-interface.
-
inline bool
get_use_munge
() const¶ Get if worker is configured to use munge.
Convenience to automatically disable munge usage on the client.
- Returns
if worker is configured to use munge.
-
using
-
template<typename
Connection
>
classhxcomm
::
QuiggeldyWorker
¶ - #include <quiggeldy_worker.h>
Implementation of server-side experiment execution.
Set up and used by quiggeldy and not intended to be used in user-code.
Public Types
-
using
interface_types
= quiggeldy_interface_types<typename Connection::message_types>¶
-
using
reinit_type
= typename interface_types::reinit_type¶
-
using
request_type
= typename interface_types::request_type¶
-
using
response_type
= typename interface_types::response_type¶
Public Functions
-
QuiggeldyWorker
(QuiggeldyWorker &&other) = default¶
-
QuiggeldyWorker
(QuiggeldyWorker const &other) = delete¶
-
~QuiggeldyWorker
()¶
-
bool
check_for_timeout
(typename response_type::first_type const &response)¶ Check if response contains a timeout response.
- Parameters
response – to check for timeouts.
- Returns
True if timeout was encountered, false otherwise.
-
std::chrono::milliseconds
get_delay_after_connection_attempt
() const¶ Get the amount of time to wait, if connecting to the “real” backend fails.
- Returns
Number of millisconds between attempts.
-
std::size_t
get_max_num_connection_attemps
() const¶ Get how many connection attempts to the “real” backend are made prior to failing hard.
- Returns
Number of attempts
-
std::string
get_remote_repo_state
() const¶ Get repository state info of quiggeldy server side build.
- Returns
Repository state info
-
std::string const &
get_slurm_license
() const¶ Get slurm license that is allocated by worker.
- Returns
Slurm license to acquire in setup().
-
std::string
get_unique_identifier
(std::optional<std::string> hwdb_path = std::nullopt) const¶ Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
bool
get_use_munge
() const¶ Get whether worker expects to decode user data via munge.
- Returns
Whether worker expects to decode user data via munge.
-
QuiggeldyWorker &
operator=
(QuiggeldyWorker &&other) = default¶
-
QuiggeldyWorker &
operator=
(QuiggeldyWorker const &other) = delete¶
-
void
perform_reinit
(reinit_type &reinit_type, bool enforce)¶ This function is called whenever we had to relinquish control of our hardware resource and the user specified a reinit-program to be loaded prior to the next work-unit being executed.
- Parameters
reinit_type – reinit stack to be executed
enforce – execute all reinit stack entries
-
void
perform_reinit_snapshot
(reinit_type&)¶ This function is called whenever we have to relinquish control of our hardware resource and the user specified a reinit-program to be snapshotted after the previous work-unit was executed.
-
void
set_delay_after_connection_attempt
(std::chrono::milliseconds delay)¶ Set the amount of time to wait, if connecting to the “real” backend fails.
-
void
set_enable_allocate_license
(bool enable_license_alloc)¶ Set or unset if the worker should perform its work with a license allocation.
- Parameters
enable_license_allocj – Whether or not to perform work with a license allocation.
-
void
set_enable_mock_mode
(bool mode_enable)¶ Set or unset the worker into mock-mode.
If in mock-mode, no communication with any hardware is attempted and empty results are returned.
- Parameters
mode_enable – Whether or not to enable mock mode.
-
void
set_max_num_connection_attemps
(std::size_t num)¶ Set how many connection attempts to the “real” backend are made prior to failing hard.
- Parameters
num – Number of attempts to set.
-
void
set_slurm_license
(std::string license)¶ Set slurm license to allocate.
- Parameters
license – Slurm license to acquire in setup().
-
void
set_slurm_partition
(std::string partition)¶ Set slurm partition.
(If unset defaults to “cube”.)
- Parameters
partition – Which slurm partition to use in allocations.
-
void
set_use_munge
(bool use_munge)¶ Set whether or not to verify user information using munge.
This option has no effect if fisch was compiled with
--without-munge
.- Parameters
use_munge – If munge should be used (true) or not (false).
-
void
setup
()¶ This function is called by the scheduler whenever there is work to execute (in our case FPGA words that need to be send and then an answer to receive) but the chip is currently not used by us.
The function performs whatever is necessary to run experiments on a locally attach board. This includes getting a license allocation.
NOTE: If the GRES is already allocated in SLURM, this function will block until it becomes available!
-
void
teardown
()¶ This function is run whenever the server releases control (and any associated slurm resources).
-
std::optional<user_session_type>
verify_user
(std::string const &user_data)¶ Verify the authenticity of the given user.
- Parameters
user_data – User data supplied via RCF. If munge support is enabled (via USE_MUNGE_AUTH), it should be encoded using munge.
- Returns
If user is authenticated, return identifying hash with which fair round-robin scheduling is ensured.
-
response_type
work
(request_type const &req)¶ This function is called by the scheduler to actually evaluate the FPGA words (send data to chip, wait, retrieve response from chip).
- Parameters
req – FPGA words to be sent to the chip for this job.
Protected Types
-
using
connection_init_type
= typename Connection::init_parameters_type¶
Protected Functions
-
template<typename ...
Args
>
voidexec_slurm_binary
(char const *binary_name, Args&&... args)¶ Helper function to execute slurm binaries.
-
bool
has_slurm_allocation
()¶
-
void
setup_connection
()¶ Create a new connection, closing the old one in the process.
-
void
slurm_allocation_acquire
()¶
-
void
slurm_allocation_release
()¶
Protected Attributes
-
bool
m_allocate_license
¶
-
std::unique_ptr<Connection>
m_connection
¶
-
connection_init_type
m_connection_init
¶
-
bool
m_has_slurm_allocation
¶ Explicit slurm license to use for allocation.
-
bool
m_mock_mode
¶
-
bool
m_use_munge
¶
Protected Static Attributes
-
static constexpr char
default_slurm_partition
[] = {"cube"}¶
-
using
-
template<typename
ConnectionParameter
>
structhxcomm::detail
::
ReinitEntryType
¶ - #include <quiggeldy_interface_types.h>
Public Types
-
using
request_type
= detail::execute_messages_argument_t<ConnectionParameter>¶
-
typedef ConnectionParameter::QuiggeldyScheduleOutToInTransform
transform_type
¶
Public Members
-
bool
reinit_pending
= true¶
-
request_type
request
¶
-
std::optional<request_type>
snapshot
¶
-
using
-
template<typename
ConnectionParameters
>
classhxcomm
::
ReinitStack
¶ - #include <reinit_stack.h>
ReinitStack holds the stack of reinit programs that are currently set as a simple wrapper around a vector.
Since ReinitStack resides within the QuiggeldyConnection-handle, ReinitStack needs to be constructable prior to the full definition of QuiggeldyConnection. This is why informing the remote side about changes in the stack is handled by ReinitStackEntry.
Public Types
-
using
interface_types
= quiggeldy_interface_types<ConnectionParameters>¶
-
using
reinit_entry_type
= typename interface_types::reinit_entry_type¶
-
using
reinit_type
= typename interface_types::reinit_type¶
Public Functions
-
ReinitStack
()¶
-
ReinitStack
(ReinitStack&&) = default¶
-
ReinitStack
(ReinitStack const&) = delete¶
-
void
pop_entry
(std::size_t idx)¶ Pop entry with given index.
Throws if the given index is not the topmost entry in the stack.
- Parameters
idx – Index to delete.
-
std::size_t
push
(reinit_entry_type &&entry)¶ Push a new entry onto the stack and return its position within the stack.
- Parameters
entry – The entry to be pushed on the stack
- Returns
Position at which entry resides in stack after pushing.
-
std::size_t
push
(reinit_entry_type const &entry)¶ Push a new entry onto the stack and return its position within the stack.
- Parameters
entry – The entry to be pushed on the stack
- Returns
Position at which entry resides in stack after pushing.
-
void
set_all_done
()¶ Set all reinit stack entries as done.
-
bool
update_at
(std::size_t idx, reinit_entry_type &&entry)¶ Update entry at given position.
- Parameters
idx – Position at which to update the entry.
entry – New updated entry in the stack.
- Returns
if entry was succesfully updated
-
bool
update_at
(std::size_t idx, reinit_entry_type const &entry)¶ Update entry at given position.
- Parameters
idx – Position at which to update the entry.
entry – New updated entry in the stack.
- Returns
if entry was succesfully updated
-
using
-
template<typename
QuiggeldyConnection
, typenameConnectionVariant
>
classhxcomm
::
ReinitStackEntry
¶ - #include <reinit_stack_entry.h>
Proxy object that can be used independently from a connection to register a reinit program to be run whenever control of the hardware resources is relinquished for some time.
Note: On direct-access connections this is a no-op since those connections do not support the notion of relinquishing control. Right now, only
QuiggeldyConnection
makes use of this.Public Types
-
using
connection_ref_variant_type
= detail::variant_to_ref_t<ConnectionVariant>¶
-
using
interface_types
= typename quiggeldy_connection_type::interface_types¶
-
using
quiggeldy_connection_type
= QuiggeldyConnection¶
-
using
reinit_entry_type
= typename interface_types::reinit_entry_type¶
-
using
reinit_stack_type
= typename quiggeldy_connection_type::reinit_stack_type¶
-
using
reinit_type
= typename interface_types::reinit_type¶
-
using
reinit_uploader_type
= typename quiggeldy_connection_type::reinit_uploader_type¶
Public Functions
-
ReinitStackEntry
() = delete¶
-
template<typename
Connection
>ReinitStackEntry
(Connection&)¶
-
ReinitStackEntry (ConnectionVariant &) SYMBOL_VISIBLE
-
ReinitStackEntry
(ReinitStackEntry&&) = default¶
-
ReinitStackEntry
(ReinitStackEntry const&) = default¶
-
~ReinitStackEntry () SYMBOL_VISIBLE
-
void enforce () SYMBOL_VISIBLE
Enforce reinit program to be used on the remote site.
-
void pop () SYMBOL_VISIBLE
Pop this entry from the stack.
-
void set (reinit_entry_type &&entry) SYMBOL_VISIBLE
Register a reinit program to be used on the remote site.
Takes ownership of the program.
- Parameters
entry – What to upload.
-
void set (reinit_entry_type const &entry) SYMBOL_VISIBLE
Register a reinit program to be used on the remote site.
Copies the program.
- Parameters
entry – What to upload.
Private Functions
-
void
handle_unsupported_connection
(reinit_entry_type const&)¶
-
template<typename
Connection
>
voidsetup
(Connection &connection)¶
Private Members
-
connection_ref_variant_type
m_connection_ref
¶
-
bool
m_connection_supports_reinit
¶
-
std::weak_ptr<reinit_stack_type>
m_reinit_stack
¶
-
std::weak_ptr<reinit_uploader_type>
m_reinit_uploader
¶
Private Static Attributes
-
template<typename
Connection
>
static constexpr boolsupports_reinit_v
= std::is_same_v<std::remove_cvref_t<Connection>, quiggeldy_connection_type>¶
-
using
-
struct
hxcomm::vx::instruction::system
::
Reset
¶ - #include <system.h>
Instruction to set reset register.
True enables the reset.
Public Static Attributes
-
static constexpr size_t
size
= 1¶
-
static constexpr size_t
-
struct
hxcomm::SimConnection
::
ResetHaltListener
¶ Public Functions
-
inline
ResetHaltListener
(listener_halt_type &listener)¶
-
inline
~ResetHaltListener
()¶
Public Members
-
listener_halt_type &
listener
¶
-
inline
-
struct
hxcomm::vx::instruction::to_fpga_jtag
::
Scaler
¶ - #include <to_fpga_jtag.h>
Set slow-down scaling factor of clock of the JTAG communication.
Public Types
-
typedef hxcomm::instruction::detail::payload::Number<Scaler, value_type>
Payload
¶
-
typedef uint8_t
value_type
¶
Public Static Attributes
-
static constexpr size_t
size
= sizeof(value_type) * CHAR_BIT¶
-
typedef hxcomm::instruction::detail::payload::Number<Scaler, value_type>
-
struct
hxcomm::ARQConnection
::
SendQueue
¶
-
struct
hxcomm::ExtollConnection
::
SendQueue
¶
-
struct
hxcomm::vx::instruction::timing
::
Setup
¶ - #include <timing.h>
Initialize timer to 0.
Public Static Attributes
-
static constexpr size_t
size
= 0¶
-
static constexpr size_t
-
class
hxcomm
::
SignalOverrideIntTerm
¶ - #include <signal.h>
Class overriding the SIGINT and the SIGTERM signal handler to a exit handler during life-time.
Public Functions
-
SignalOverrideIntTerm () SYMBOL_VISIBLE
Construct signal override for SIGINT and SIGTERM by alteration to a exit handler.
-
~SignalOverrideIntTerm () SYMBOL_VISIBLE
Destruct signal override with cleanup of signal handlers.
Private Types
-
typedef decltype(signal(SIGINT, SIG_IGN))
signal_handler_type
¶
Private Members
-
signal_handler_type
m_previous_handler_sigint
¶
-
signal_handler_type
m_previous_handler_sigterm
¶
-
-
template<typename
ConnectionParameter
>
classhxcomm
::
SimConnection
¶ - #include <simconnection.h>
Simulation connection class.
Establish and hold Simulation connection to FPGA. Provide convenience functions for sending and receiving UT messages.
- tparam ConnectionParameter
UT message parameter for connection
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
SimConnection (bool enable_terminate_on_destruction=false) SYMBOL_VISIBLE
Create and start connection to simulation server.
The RCF port is automatically extracted from the enviroment, the simulation server is expected to run on the same host.
- Parameters
enable_terminate_on_destruction – Whether or not to terminate the remote simulation upon destruction of the SimConnection.
- Throws
std::runtime_error – On no port to simulator found in environment
-
SimConnection (ip_t ip, port_t port, bool enable_terminate_on_destruction=false) SYMBOL_VISIBLE
Create and start connection to simulation server.
- Parameters
ip – IP-address of simulation server
port – Port of simulation server
enable_terminate_on_destruction – Whether or not to terminate the remote simulation upon destruction of the SimConnection.
-
SimConnection (SimConnection &&) SYMBOL_VISIBLE
Move constructor.
-
SimConnection
(SimConnection const&) = delete¶ Copy constructor (deleted because no two instances with the same simulator allocation can coexist).
-
~SimConnection () SYMBOL_VISIBLE
Destruct simulation connection joining all receive threads.
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
Returns “simulation” for SimConnection.
- Returns
Bitfile info
-
bool get_enable_terminate_on_destruction () const SYMBOL_VISIBLE
Get enable value to terminate simulator on destruction of connection.
- Returns
Boolean value
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get server-side remote repository state information.
Only non-empty for QuiggeldyConnection.
- Returns
Repository state
-
ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information.
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > hwdb_path=std::nullopt) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
SimConnection & operator= (SimConnection &&) SYMBOL_VISIBLE
Assignment operator.
-
SimConnection &
operator=
(SimConnection const&) = delete¶ Assignment operator (deleted because no two instances with the same simulator allocation can coexist).
-
void set_enable_terminate_on_destruction (bool const value) SYMBOL_VISIBLE
Set enable value to terminate simulator on destruction of connection.
- Parameters
value – Boolean value
Public Static Attributes
-
static constexpr char
name
[] = "SimConnection"¶
-
static constexpr auto
supported_targets
= {Target::simulation}¶
Private Types
-
typedef Decoder<typename ConnectionParameter::Receive, receive_queue_type, listener_halt_type>
decoder_type
¶
-
typedef Encoder<typename ConnectionParameter::Send, send_queue_type>
encoder_type
¶
-
typedef ListenerHalt<UTMessage<ConnectionParameter::Receive::HeaderAlignment, typename ConnectionParameter::Receive::SubwordType, typename ConnectionParameter::Receive::PhywordType, typename ConnectionParameter::Receive::Dictionary, typename ConnectionParameter::ReceiveHalt>>
listener_halt_type
¶
-
typedef ConnectionRegistry<SimConnection>
Registry
¶ Registry of open SimConnections.
-
typedef std::queue<subpacket_type>
send_queue_type
¶
-
typedef flange::SimulatorEvent::al_data_t::value_type
subpacket_type
¶
Private Functions
-
template<typename
InputIterator
>
voidadd
(InputIterator const &begin, InputIterator const &end)¶ Add multiple UT messages to the send queue.
- Template Parameters
InputIterator – Iterator type to sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
void add (send_message_type const &message) SYMBOL_VISIBLE
Add a single UT message to the send queue.
- Parameters
message – Message to add
-
void commit () SYMBOL_VISIBLE
Send messages in send queue.
-
std::mutex & get_mutex () SYMBOL_VISIBLE
Get internal mutex to use for mutual exclusion.
- Returns
Mutable reference to mutex
-
receive_queue_type receive_all () SYMBOL_VISIBLE
Receive all UT messages currently in the receive queue.
- Returns
Received messages
-
bool receive_empty () const SYMBOL_VISIBLE
Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
-
void run_until_halt () SYMBOL_VISIBLE
Start simulation and wait until halt instruction is received from simulation.
- Throws
std::runtime_error – Simulation already running
-
void
work_receive
(flange::SimulatorClient &sim)¶
Private Members
-
duration_type
m_commit_duration
= {}¶
-
duration_type
m_decode_duration
= {}¶
-
decoder_type
m_decoder
¶
-
duration_type
m_encode_duration
= {}¶
-
encoder_type
m_encoder
¶
-
duration_type
m_execution_duration
= {}¶
-
listener_halt_type
m_listener_halt
¶
-
receive_queue_type
m_receive_queue
¶
-
send_queue_type
m_send_queue
¶
-
bool
m_terminate_on_destruction
¶
Friends
- friend class Stream< SimConnection >
-
class
hxcomm::vx::instruction::event_from_fpga
::
Spike
¶ - #include <event_from_fpga.h>
Type of one spike event.
Public Types
-
typedef hate::bitset<event_constants::spike_size>
spike_type
¶
-
typedef hate::bitset<timestamp_size>
Timestamp
¶
Public Functions
-
inline
Spike
()¶
-
inline
Spike
(spike_type const &spike, Timestamp const ×tamp)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline spike_type const &
get_spike
() const¶
-
inline void
set_spike
(spike_type const &spike)¶
Public Static Attributes
-
static constexpr size_t
size
= event_constants::spike_size + timestamp_size¶
-
static constexpr size_t
timestamp_size
= 8¶
-
typedef hate::bitset<event_constants::spike_size>
-
template<size_t
num_spikes
>
structhxcomm::vx::instruction::event_from_fpga
::
SpikePack
¶ - #include <event_from_fpga.h>
Public Types
-
typedef SpikePackPayload<num_spikes>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= SpikePackPayload<num_spikes>::size¶
-
typedef SpikePackPayload<num_spikes>
-
template<size_t
num_spikes
>
structhxcomm::vx::instruction::event_to_fpga
::
SpikePack
¶ - #include <event_to_fpga.h>
Packed spike to FPGA instruction.
Public Types
-
typedef SpikePackPayload<num_spikes>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= SpikePackPayload<num_spikes>::size¶
-
typedef SpikePackPayload<num_spikes>
-
template<size_t
num_spikes
>
classhxcomm::vx::instruction::event_from_fpga
::
SpikePackPayload
¶ - #include <event_from_fpga.h>
Payload of a spike_pack instruction.
Public Types
-
typedef std::array<Spike, num_spikes>
spikes_type
¶
Public Functions
-
inline
SpikePackPayload
()¶
-
inline
SpikePackPayload
(spikes_type const &spikes)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline spikes_type const &
get_spikes
() const¶
-
inline bool
operator!=
(SpikePackPayload const &other) const¶
-
inline bool
operator==
(SpikePackPayload const &other) const¶
-
inline void
set_spikes
(spikes_type const &spikes)¶
Public Static Attributes
-
static constexpr size_t
size
= Spike::size * num_spikes¶
Private Members
-
spikes_type
m_spikes
¶
Friends
-
inline friend std::ostream &
operator<<
(std::ostream &os, SpikePackPayload const &value)¶
-
typedef std::array<Spike, num_spikes>
-
template<size_t
num_spikes
>
classhxcomm::vx::instruction::event_to_fpga
::
SpikePackPayload
¶ - #include <event_to_fpga.h>
Payload of a SpikePack instruction.
Public Types
-
typedef std::array<hate::bitset<event_constants::spike_size>, num_spikes>
spikes_type
¶
Public Functions
-
inline
SpikePackPayload
()¶
-
inline
SpikePackPayload
(spikes_type const &spikes)¶
-
template<class
SubwordType
= unsigned long>
inline voiddecode
(hate::bitset<size, SubwordType> const &data)¶
-
template<class
SubwordType
= unsigned long>
inline hate::bitset<size, SubwordType>encode
() const¶
-
inline spikes_type const &
get_spikes
() const¶
-
inline bool
operator!=
(SpikePackPayload const &other) const¶
-
inline bool
operator==
(SpikePackPayload const &other) const¶
-
inline void
set_spikes
(spikes_type const &spikes)¶
Public Static Attributes
-
static constexpr size_t
size
= event_constants::spike_size * num_spikes¶
Private Members
-
spikes_type
m_spikes
¶
Friends
-
inline friend std::ostream &
operator<<
(std::ostream &os, SpikePackPayload const &value)¶
-
typedef std::array<hate::bitset<event_constants::spike_size>, num_spikes>
-
template<typename
Connection
>
classhxcomm
::
Stream
¶ - #include <stream.h>
Interface definition as to how each connection can be interacted with.
The user is supposed to only be able to construct and destroy
Connection
handles on its own. Interaction is mitigated by the correspondingStream<Connection>
-object which is constructed byexecute_messages
Note: The Stream<Connection>-interface is intended for hxcomm and its internal testing routines and not meant to be relied upon in upper layers!
Instead, interaction with upper layers happens via
execute_messages(connection, messages)
. Here the specialized versions ofStream<Connection>
that have to be derived from this class are instantiated.By convention,
Stream<Connection>
is befriended byConnection
and calls private functions of the same signature as its interface.- tparam Connection
Which connection object to use for operation.
Public Types
-
using
connection_type
= Connection¶
-
using
message_types
= typename GetMessageTypes<Connection>::type¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
inline
Stream
(connection_type &conn)¶ Construct a Stream for the given connection handle which it manages.
Lock connection-internal mutex to ensure mutual exclusion.
-
template<typename
InputIterator
>
inline voidadd
(InputIterator const begin, InputIterator const end)¶ Add multiple UT messages to the send queue.
- Template Parameters
InputIterator – Iterator type to sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
template<typename
MessageType
>
inline voidadd
(MessageType const &message)¶ Add a single UT message to the send queue.
- Parameters
message – Message to add
-
inline void
commit
()¶ Send messages in send queue.
-
inline receive_message_type
receive
()¶ Receive a single UT message.
- Throws
std::runtime_error – On empty message queue
- Returns
Received message
-
inline auto
receive_all
()¶ Receive all UT messages.
- Returns
Received message queue
-
inline bool
receive_empty
() const¶ Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
-
inline void
run_until_halt
()¶ Start emulation and wait until halt instruction is received from simulation.
-
inline bool
try_receive
(receive_message_type &message)¶ Try to receive a single UT message.
- Parameters
message – Message to receive to
- Returns
Boolean value whether receive was successful
-
template<typename
ConnType
>
structhxcomm::Stream
::
Streamable
¶ - #include <stream.h>
Public Types
-
template<typename
InputIteratorT
>
usinghas_add_iterator_method
= typename std::is_same<decltype(std::declval<ConnType>().add(std::declval<InputIteratorT const&>(), std::declval<InputIteratorT const&>())), void>::type¶
-
template<typename
-
template<typename
Connection
>
structhxcomm
::
StreamRC
¶ - #include <stream_rc.h>
StreamRC (pronounced “streamers”), is a class similiar to the Stream-class but with a
R
educed andC
ustom interface forR
emote exeC
ution.Public Types
-
using
connection_type
= Connection¶
-
using
submit_arg_type
= detail::execute_messages_argument_t<connection_type>¶
Public Functions
-
inline
StreamRC
(connection_type &conn)¶ Construct a Stream for the given connection handle which it manages.
-
inline auto
get_reinit_stack
() const¶
-
inline auto
get_reinit_upload
() const¶
-
inline void
reinit_enforce
()¶
-
inline auto
submit_async
(submit_arg_type const &message)¶
-
inline auto
submit_blocking
(submit_arg_type const &message)¶
Protected Attributes
-
connection_type &
m_connection
¶
-
using
-
template<typename
C
>
structhxcomm::StreamRC::Check
::
submit_async_return
¶ - #include <stream_rc.h>
Helper for template engine.
-
template<typename
C
>
structhxcomm::StreamRC::Check
::
submit_blocking_return
¶ - #include <stream_rc.h>
Helper for template engine.
-
template<typename
Connection
, typename = void>
structsupports_full_stream_interface
: public std::true_type¶ - #include <stream.h>
-
template<typename
ConnectionParameter
, typenameRcfClient
>
structsupports_full_stream_interface
<QuiggeldyConnection<ConnectionParameter, RcfClient>> : public std::false_type¶ - #include <quiggeldy_connection.h>
-
struct
hxcomm::vx::instruction::timing_from_fpga
::
Sysdelta
¶ - #include <timing_from_fpga.h>
Delta time update.
Public Static Attributes
-
static constexpr size_t
size
= 8¶
-
static constexpr size_t
-
struct
hxcomm::vx::instruction::timing_from_fpga
::
Systime
¶ - #include <timing_from_fpga.h>
Full systime update.
Public Static Attributes
-
static constexpr size_t
size
= 43¶
-
static constexpr size_t
-
struct
hxcomm::vx::instruction::timing
::
SystimeInit
¶ - #include <timing.h>
Syncronize ASIC time with FPGA time.
Public Types
-
typedef hxcomm::instruction::detail::payload::Bitset<SystimeInit, size>
Payload
¶
Public Static Attributes
-
static constexpr size_t
size
= 1¶
-
typedef hxcomm::instruction::detail::payload::Bitset<SystimeInit, size>
-
struct
hxcomm::vx::instruction::from_fpga_system
::
TimeoutNotification
¶ - #include <from_fpga_system.h>
Instruction timeout notification.
Public Types
-
typedef hxcomm::instruction::detail::payload::Number<TimeoutNotification, value_type>
Payload
¶
-
typedef uint32_t
value_type
¶
Public Static Attributes
-
static constexpr size_t
size
= sizeof(value_type) * CHAR_BIT¶
-
typedef hxcomm::instruction::detail::payload::Number<TimeoutNotification, value_type>
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typenameDictionary
>
structToUTMessageVariant
¶ Get UT message variant type corresponding to UT message parameters.
- tparam HeaderAlignment
Alignment of header in bits
- tparam SubwordType
Type of subword which’s width corresponds to the messages alignment
- tparam PhywordType
Type of PHY-word which’s width corresponds to the message’s minimal width
- tparam Dictionary
Dictionary of instructions
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typename ...Is
>
structhxcomm
::
ToUTMessageVariant
<HeaderAlignment, SubwordType, PhywordType, hate::type_list<Is...>>¶ - #include <to_utmessage_variant.h>
Public Types
-
typedef std::variant<UTMessage<HeaderAlignment, SubwordType, PhywordType, hate::type_list<Is...>, Is>...>
type
¶
-
typedef std::variant<UTMessage<HeaderAlignment, SubwordType, PhywordType, hate::type_list<Is...>, Is>...>
-
template<typename
T
>
structtype
¶ - #include <payload_random.h>
To-type-proxy to partially specialize function on a non-default-constructible argument type.
- tparam T
Type to proxy for
-
template<size_t
HeaderAlignment
, typenameSubwordType
, typenamePhywordType
, typenameDictionary
, typenameInstruction
>
classhxcomm
::
UTMessage
¶ - #include <utmessage.h>
Container for a UT message used for host-FPGA communication.
It is aligned to subword width. The header is left-aligned, the payload is right-aligned. The leftmost header bit is reserved for a comma, which for valid UT messages is always set to false. The header is calculated as the instruction’s position in the dictionary.
- tparam HeaderAlignment
Alignment of header in bits
- tparam SubwordType
Type of subword which’s width corresponds to the message’s alignment
- tparam PhywordType
Type of PHY-word which’s width corresponds to the message’s minimal width
- tparam Dictionary
Dictionary of instructions
- tparam Instruction
Instruction to encode in UT message
Public Types
-
typedef bool
comma_type
¶ Type of the valid field.
-
typedef Dictionary
dictionary_type
¶
-
typedef hate::bitset<header_width, SubwordType>
header_type
¶ Type of the header field.
-
typedef Instruction
instruction_type
¶
-
typedef hate::bitset<payload_width, SubwordType>
payload_type
¶ Type of the payload field.
-
typedef hate::bitset<word_width, SubwordType>
word_type
¶ Word-type of a UTMessage.
Public Functions
-
explicit constexpr
UTMessage
(payload_type const &payload)¶ Construct UTMessage with header and payload.
- Parameters
payload – Payload bitset to fill UTMessage payload field with
-
explicit constexpr
UTMessage
(typename Instruction::Payload const &payload)¶ Construct UTMessage with header and payload.
- Parameters
payload – Payload to fill UTMessage payload field with
-
constexpr Instruction::Payload
decode
() const¶ Decode message to its instruction’s payload type.
- Returns
Payload of message
-
constexpr void
encode
(typename Instruction::Payload const &value)¶ Encode message from an instruction’s payload type.
- Parameters
value – Payload to encode
-
constexpr payload_type
get_payload
() const¶ Get payload.
- Returns
Bitset containing payload
-
bool
operator!=
(UTMessage const &other) const¶ Inequality operator.
- Parameters
other – UTMessage to compare to
- Returns
Boolean result of comparison
-
bool
operator==
(UTMessage const &other) const¶ Equality operator.
- Parameters
other – UTMessage to compare to
- Returns
Boolean result of comparison
-
constexpr void
set_payload
(payload_type const &value)¶ Set payload.
- Parameters
value – Bitset containing payload
Public Static Functions
-
static constexpr header_type
get_header
()¶ Get header.
- Returns
Bitset containing header
Public Static Attributes
-
static constexpr size_t
comma_width
= 1¶ Number of bits of the comma.
-
static constexpr size_t
header_width
= UTMessageHeaderWidth<HeaderAlignment, Dictionary>::value¶ Number of bits of the header.
The comma sits left-aligned in the header.
-
static constexpr size_t
num_subwords
= hate::math::round_up_integer_division(header_width + Instruction::size, sizeof(SubwordType) * CHAR_BIT)¶ Number of subwords.
-
static constexpr size_t
payload_width
= Instruction::size¶ Number of bits of the payload field.
-
static constexpr size_t
phyword_width
= sizeof(PhywordType) * CHAR_BIT¶ Number of bits of a phyword.
-
static constexpr size_t
subword_width
= sizeof(SubwordType) * CHAR_BIT¶ Number of bits of a subword.
-
static constexpr size_t word_width = ((subword_width * num_subwords) < phyword_width)?phyword_width : (subword_width * num_subwords)
Total number of bits of a UTMessage.
If the calculated minimal size aligned to subword_width is smaller than phyword_width, round up to one full phyword_width, because the UT can process at most one UT message per PHY word.
Private Members
-
payload_type
m_data
¶
-
template<size_t
HeaderAlignment
, typenameDictionary
>
structhxcomm
::
UTMessageHeaderWidth
¶ - #include <utmessage_header_width.h>
Get the header width corresponding to a given set of UT message parameters.
- tparam HeaderAlignment
Alignment of header in bits
- tparam Dictionary
Dictionary of instructions
Public Static Attributes
-
static constexpr size_t
value
= hate::math::round_up_to_multiple(1 + hate::math::num_bits(hate::type_list_size<Dictionary>::value - 1), HeaderAlignment)¶
-
template<size_t
HeaderAlignmentT
, typenameSubwordTypeT
, typenamePhywordTypeT
, typenameDictionaryT
>
structhxcomm
::
UTMessageParameter
¶ - #include <connection_parameter.h>
Set of template parameters common to a UTMessage set.
- tparam HeaderAlignmentT
Alignment of header in bits
- tparam SubwordTypeT
Type of subword which’s width corresponds to the message’s alignment
- tparam PhywordTypeT
Type of PHY-word which’s width corresponds to the message’s minimal width
- tparam DictionaryT
Dictionary of instructions
Public Types
-
typedef DictionaryT
Dictionary
¶
-
typedef PhywordTypeT
PhywordType
¶
-
typedef SubwordTypeT
SubwordType
¶
Public Static Attributes
-
static constexpr size_t
HeaderAlignment
= HeaderAlignmentT¶
-
template<typename
T
>
structvariant_to_ref
¶ - #include <reinit_stack_entry.h>
-
template<typename ...
T
>
structhxcomm::detail
::
variant_to_ref
<std::variant<T...>>¶ - #include <reinit_stack_entry.h>
-
template<typename
Visitor
, typenameConnection
>
structhxcomm::detail
::
VisitConnection
¶ - #include <visit_connection.h>
Public Types
-
using
return_type
= decltype(std::declval<Visitor>()(std::declval<Connection>()))¶
Public Functions
-
inline return_type
operator()
(Visitor &&visitor, Connection &&connection)¶
-
using
- #include <visit_connection.h>
Public Types
Public Functions
-
template<typename
Visitor
, typename ...Connections
>
structhxcomm::detail
::
VisitConnection
<Visitor, std::variant<Connections...>&>¶ - #include <visit_connection.h>
Public Types
-
using
return_type
= typename std::common_type<typename VisitConnection<Visitor, Connections&>::return_type...>::type¶
-
using
variant_type
= std::variant<Connections...>¶
Public Functions
-
inline return_type
operator()
(Visitor &&visitor, variant_type &variant)¶
-
using
-
template<typename
Visitor
, typename ...Connections
>
structhxcomm::detail
::
VisitConnection
<Visitor, std::variant<Connections...> const&>¶ - #include <visit_connection.h>
Public Types
-
using
return_type
= typename std::common_type<typename VisitConnection<Visitor, Connections&>::return_type...>::type¶
-
using
variant_type
= std::variant<Connections...> const¶
Public Functions
-
inline return_type
operator()
(Visitor &&visitor, variant_type &variant)¶
-
using
-
struct
hxcomm::vx::instruction::timing
::
WaitUntil
¶ - #include <timing.h>
Block further execution until incrementing timer reaches specified count.
Public Types
-
typedef hxcomm::instruction::detail::payload::Number<WaitUntil, value_type>
Payload
¶
-
typedef uint32_t
value_type
¶
Public Static Attributes
-
static constexpr size_t
size
= sizeof(value_type) * CHAR_BIT¶
-
typedef hxcomm::instruction::detail::payload::Number<WaitUntil, value_type>
-
template<typename
ConnectionParameter
>
classhxcomm
::
ZeroMockConnection
¶ - #include <zeromockconnection.h>
Connection returning zero’ed data on read requests, discarding all other messages.
We do not model experiment prebuffering, i.e. only message processing contributes to the
execution_duration
measurement.- tparam ConnectionParameter
UT message parameter for connection
Public Types
-
using
message_types
= MessageTypes<ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
ZeroMockConnection (long ns_per_message=8) SYMBOL_VISIBLE
Construct zero mock connection.
The time spent with processing each incoming message can be adjusted to simulate different data communication speeds.
- Parameters
ns_per_message – Time goal to spent with processing each incoming message. The specified goal may not be reached as it is only an upper bound to the rate of processed messages and the actually reachable performance depends on the used host computer and its load.
-
ZeroMockConnection (ZeroMockConnection &&other) SYMBOL_VISIBLE
-
ZeroMockConnection
(ZeroMockConnection const&) = delete¶
-
~ZeroMockConnection
() = default¶
-
std::string get_bitfile_info () const SYMBOL_VISIBLE
Get bitfile information.
Returns “zeromock” for ZeroMockConnection
- Returns
Bitfile info
-
std::string get_remote_repo_state () const SYMBOL_VISIBLE
Get server-side remote repository state information.
Only non-empty for QuiggeldyConnection.
- Returns
Repository state
-
ConnectionTimeInfo get_time_info () const SYMBOL_VISIBLE
Get time information.
- Returns
Time information
-
std::string get_unique_identifier (std::optional< std::string > hwdb_path=std::nullopt) const SYMBOL_VISIBLE
Get unique identifier from hwdb.
- Parameters
hwdb_path – Optional path to hwdb
- Returns
Unique identifier
-
ZeroMockConnection & operator= (ZeroMockConnection &&other) SYMBOL_VISIBLE
-
ZeroMockConnection &
operator=
(ZeroMockConnection const&) = delete¶
Public Static Attributes
-
static constexpr char
name
[] = "ZeroMockConnection"¶
-
static constexpr auto
supported_targets
= {Target::hardware, Target::simulation}¶
Private Types
-
typedef std::vector<send_message_type>
send_queue_type
¶
Private Functions
-
template<typename
InputIterator
>
voidadd
(InputIterator const &begin, InputIterator const &end)¶ Add multiple UT messages to the send queue.
- Template Parameters
InputIterator – Iterator type to sequence of messages to add
- Parameters
begin – Iterator to beginning of sequence
end – Iterator to end of sequence
-
void add (send_message_type const &message) SYMBOL_VISIBLE
Add a single UT message to the send queue.
- Parameters
message – Message to add
-
void commit () SYMBOL_VISIBLE
Send messages in send queue.
-
std::mutex & get_mutex () SYMBOL_VISIBLE
Get internal mutex to use for mutual exclusion.
- Returns
Mutable reference to mutex
-
receive_queue_type receive_all () SYMBOL_VISIBLE
Receive all UT messages.
- Returns
Received messages
-
bool receive_empty () const SYMBOL_VISIBLE
Get whether the connection has no UT messages available to receive.
- Returns
Boolean value
-
void run_until_halt () SYMBOL_VISIBLE
Start execution and wait until halt instruction.
Private Members
-
bool
m_halt
¶
-
size_t
m_last_message_count
¶ Message count since last
run_until_halt()
invokation used to calculate the amount of time to spend in the current invokation in order to match specified rate of processed UT messages.
-
ConnectionTimeInfo
m_last_time_info
¶
-
long
m_ns_per_message
¶
-
detail::ZeroMockProcessMessage<ConnectionParameter>
m_process_message
¶
-
receive_queue_type
m_receive_queue
¶
-
send_queue_type
m_send_queue
¶
-
ConnectionTimeInfo
m_time_info
¶
-
friend Stream< ZeroMockConnection >
-
template<typename
ConnectionParameter
>
structZeroMockProcessMessage
¶ Process message implementation used in ZeroMockConnection.
A specialization is necessary for each connection parameter set.
- tparam ConnectionParameter
Connection parameter for which to process messages
-
template<>
structhxcomm::detail
::
ZeroMockProcessMessage
<hxcomm::vx::ConnectionParameter>¶ - #include <zeromockconnection.h>
Public Types
-
using
message_types
= MessageTypes<hxcomm::vx::ConnectionParameter>¶
-
using
receive_message_type
= typename message_types::receive_type¶
-
typedef std::vector<receive_message_type>
receive_queue_type
¶
-
using
send_halt_message_type
= typename message_types::send_halt_type¶
-
using
send_message_type
= typename message_types::send_type¶
Public Functions
-
ZeroMockProcessMessage (receive_queue_type &receive_queue, bool &halt) SYMBOL_VISIBLE
-
void operator() (send_message_type const &message) SYMBOL_VISIBLE
-
using
-
namespace
cereal
-
namespace
hate
-
namespace
hxcomm
¶ Typedefs
-
template<typename
ConnectionVariant
>
usingConnectionFullStreamInterfaceVariant
= hate::type_list_to_t<std::variant, hate::filter_type_list_t<hxcomm::supports_full_stream_interface, hate::type_list_from_t<ConnectionVariant>>>¶
-
template<typename
Connection
>
usingConnectionIsPlainGuard
= std::enable_if_t<ConnectionIsPlain<std::remove_cvref_t<Connection>>::value, int>¶ Indicate whether supplied connection type is a plain Connection object that can be acted upon.
It is intended to be used as a defaulted template argument and needs a default in parameter (e.g. 0).
-
template<typename
Connection
>
usingConnectionIsWrappedGuard
= std::enable_if_t<!ConnectionIsPlain<std::remove_cvref_t<Connection>>::value, int>¶ Indicate whether supplied connection type is wrapped up and needs to be unwrapped in some kind (e.g.
in a variant that needs to be visited).
It is intended to be used as a defaulted template argument and needs a default in parameter (e.g. 0).
-
typedef uint64_t
largest_ut_message_subword_type
¶ Largest SubwordType supported by the UTMessage implementation.
-
typedef uint16_t
port_t
¶
-
template<typename
Connection
>
usingsupports_full_stream_interface
= detail::supports_full_stream_interface<std::decay_t<Connection>>¶ Helper function to distinguish between connections expected to implement the whole Stream interface as above and those with a custom execute_messages-implementation.
Enums
Functions
-
template<typename
Connection
, ConnectionIsWrappedGuard<Connection> = 0>
detail::execute_messages_return_t<Connection>execute_messages
(Connection &&connection, detail::execute_messages_argument_t<Connection> const &messages)¶
-
template<typename
Connection
, ConnectionIsPlainGuard<Connection> = 0>
detail::execute_messages_return_t<Connection>execute_messages
(Connection &connection, detail::execute_messages_argument_t<Connection> const &messages)¶ Execute the given messages on the given connection.
This function is specialized for each architecture in the corresponding
hxcomm/<architecture>/execute_messages.h
header or - if needed - in the connection-header itself. This function makes use of Stream, which locks the connection by acquiring the mutex via connection.get_mutex() to ensure mutual exclusion of access.- Template Parameters
Connection – The connection on which the messages are executed.
Sequence – In which sequential container should the messages be stored.
-
std::string get_fpga_ip () SYMBOL_VISIBLE
Get FPGA IP available via the environment.
- Returns
FPGA IP as string
-
std::vector< std::string > get_fpga_ip_list () SYMBOL_VISIBLE
Get list of FPGA IPs available via the environment.
- Returns
Vector of FPGA IPs as strings
-
std::optional< std::size_t > get_loglevel_from_env (char const *env_var="QUIGGELDY_LOGLEVEL") SYMBOL_VISIBLE
Get an integer representation of the loglevel variable from environment.
If the environmental variable is defined but contains an invalid value, a notification is printed to stderr.
- Parameters
env_var – Name of the environment variable from which to get the loglevel.
- Returns
Integer representation of the loglevel in case it is defined and a valid level.
-
char const * get_munge_socket () SYMBOL_VISIBLE
Get the munge socket to connect to.
- Returns
Path to munge socket to use. Either the default or the one specified via environment.
-
std::string get_repo_state () SYMBOL_VISIBLE
-
std::tuple< std::string, uint16_t > get_sim_parameters () SYMBOL_VISIBLE
Get simulator IP and port via the environment.
- Returns
Parameters
-
hxcomm::port_t get_unused_port () SYMBOL_VISIBLE
Get a free port number to use for tests, on success, return open port.
On error, throw runtime_error.
-
bool is_munge_available () SYMBOL_VISIBLE
Check for availability of munge by checking if the default munge socket (or the one specified by the environment does exist).
bool is_munge_available).
This is useful to disable munge authentication in testing environments where munge is not running.
- Returns
whether munge is available or not.
-
template<class ...
Args
>
pid_tsetup_quiggeldy
(char const *binary_name, uint16_t port, Args... args)¶ Convenience function to setup quiggeldy under the given port with additional arguments.
- Parameters
binary_name – name of the binary to launch
port – The port on which quiggeldy should listen.
args – Additional arguments to give to quiggeldy (should be C-strings).
- Returns
PID of started subprocess running quiggeldy.
-
void terminate (pid_t pid) SYMBOL_VISIBLE
Terminate given pid.
- Parameters
pid – The quiggeldy PID to terminate.
-
template<typename
Visitor
, typenameConnection
>
detail::VisitConnection<Visitor, Connection>::return_typevisit_connection
(Visitor &&visitor, Connection &&connection)¶ Vist a connection that might be wrapped inside a variant or proxified.
- Parameters
visitor – must be a Callable with templated operator() so that it can be applied to the extracted connection underneath.
connection – The connection to visit.
Variables
-
static constexpr size_t
quiggeldy_max_message_length
= 1280 * 1024 * 1024¶ Max message length should be at least as long as the FPGA memory filled with results (and then some).
-
template<typename
-
namespace
hxcomm
::
detail
¶ Typedefs
-
template<typename
Connection
>
usingexecute_messages_argument_t
= typename ExecuteMessagesArgumentType<Connection>::type¶
-
template<typename
Connection
>
usingexecute_messages_return_t
= typename ExecuteMessagesReturnType<Connection>::type¶
-
template<typename
T
>
usingvariant_to_ref_t
= typename variant_to_ref<T>::type¶
Variables
-
template<typename ...
Ts
>
static constexpr boolall_char_const_ptr_v
= all_char_const_ptr<Ts...>::value¶
-
template<typename
-
namespace
instruction
¶
-
namespace
detail
¶
-
namespace
payload
¶ Payload formatting.
Each payload type defines a value_type used for encoding the payload to a bitstream. The encode member function encodes payload data to a bitstream. The decode member fucntion decodes a bitstream to payload data.
-
namespace
hxcomm
::
random
¶ Functions
-
template<typename
PayloadType
>
PayloadTyperandom_payload
(std::mt19937 gen = std::mt19937(std::random_device{}()))¶ Generate a payload type with random value(s).
- Template Parameters
PayloadType – Type of payload
- Parameters
gen – Random number generator
- Returns
Random payload
-
template<typename
Tag
, size_tN
>
hxcomm::instruction::detail::payload::Bitset<Tag, N>random_payload
(type<hxcomm::instruction::detail::payload::Bitset<Tag, N>>, std::mt19937 gen)¶ Generate a Bitset payload type with random value.
- Template Parameters
Tag – Tag of instruction for type-safety
N – Number of bits of Bitset paylaod
- Parameters
gen – Random number generator
- Returns
Random payload
-
template<typename
Tag
, typenameT
>
hxcomm::instruction::detail::payload::Number<Tag, T>random_payload
(type<hxcomm::instruction::detail::payload::Number<Tag, T>>, std::mt19937 gen)¶ Generate a Number payload type with random value.
- Template Parameters
Tag – Tag of instruction for type-safety
T – Number base type
- Parameters
gen – Random number generator
- Returns
Random payload
-
template<typename
PayloadType
>
PayloadTyperandom_payload
(type<PayloadType> proxy, std::mt19937 gen) = delete¶ Generate a payload type with random value(s).
- Template Parameters
PayloadType – Type of payload
- Parameters
proxy – Type proxy to payload type
gen – Random number generator
- Returns
Random payload
-
template<size_t
NumPack
>
hxcomm::vx::instruction::event_from_fpga::MADCSamplePackPayload<NumPack>random_payload
(type<typename hxcomm::vx::instruction::event_from_fpga::MADCSamplePackPayload<NumPack>>, std::mt19937 gen)¶
-
template<size_t
NumPack
>
hxcomm::vx::instruction::event_from_fpga::SpikePackPayload<NumPack>random_payload
(type<typename hxcomm::vx::instruction::event_from_fpga::SpikePackPayload<NumPack>>, std::mt19937 gen)¶
-
template<size_t
NumPack
>
hxcomm::vx::instruction::event_to_fpga::SpikePackPayload<NumPack>random_payload
(type<typename hxcomm::vx::instruction::event_to_fpga::SpikePackPayload<NumPack>>, std::mt19937 gen)¶
-
hxcomm::vx::instruction::omnibus_to_fpga::Address::Payload random_payload (type< typename hxcomm::vx::instruction::omnibus_to_fpga::Address::Payload >, std::mt19937 gen) SYMBOL_VISIBLE
-
hxcomm::vx::instruction::to_fpga_jtag::Data::Payload random_payload (type< typename hxcomm::vx::instruction::to_fpga_jtag::Data::Payload >, std::mt19937 gen) SYMBOL_VISIBLE
-
template<typename
PayloadType
>
PayloadTyperandom_payload_non_default
(PayloadType const default_payload = PayloadType(), std::mt19937 gen = std::mt19937(std::random_device{}()))¶ Generate a payload type with random value(s) unequal to provided default value(s).
- Template Parameters
PayloadType – Type of payload
- Parameters
default_payload – Default payload value to exclude from random draw
gen – Random number generator
- Returns
Random payload
-
template<typename
UTMessageParameter
>
autorandom_ut_message
(std::mt19937 &gen) -> typename default_ut_message<UTMessageParameter>::message_type¶ Generate a random UTMessage of the provided dictionary with random payload.
- Template Parameters
UTMessageParameter – Parameter of UTMessage collection
- Parameters
gen – Random number generator
- Returns
Random UT message with random payload
-
template<typename
-
namespace
hxcomm
::
vx
¶ Typedefs
-
using
ARQConnection
= hxcomm::ARQConnection<ConnectionParameter>¶
-
using
ConnectionFullStreamInterfaceVariant
= hxcomm::ConnectionFullStreamInterfaceVariant<ConnectionVariant>¶
-
typedef hxcomm::ConnectionParameter<ut_message_to_fpga_header_alignment, ut_message_to_fpga_subword_type, ut_message_to_fpga_phyword_type, instruction::ToFPGADictionary, instruction::system::Loopback, ut_message_from_fpga_header_alignment, ut_message_from_fpga_subword_type, ut_message_from_fpga_phyword_type, instruction::FromFPGADictionary, instruction::from_fpga_system::Loopback, instruction::from_fpga_system::TimeoutNotification, detail::QuiggeldyScheduleOutToInTransform>
ConnectionParameter
¶
-
using
ConnectionVariant
= std::variant<hxcomm::vx::SimConnection, hxcomm::vx::QuiggeldyConnection, hxcomm::vx::ZeroMockConnection>¶
-
using
ExtollConnection
= hxcomm::ExtollConnection<ConnectionParameter>¶
-
using
quiggeldy_interface_types
= hxcomm::quiggeldy_interface_types<hxcomm::vx::ConnectionParameter>¶
-
using
QuiggeldyConnection
= hxcomm::QuiggeldyConnection<hxcomm::vx::ConnectionParameter, hxcomm::vx::detail::rcf_client_type>¶
-
template<typename
Connection
>
usingQuiggeldyServer
= hxcomm::QuiggeldyServer<Connection>¶
-
template<typename
Connection
>
usingQuiggeldyWorker
= hxcomm::QuiggeldyWorker<Connection>¶
-
using
ReinitStackEntry
= hxcomm::ReinitStackEntry<hxcomm::vx::QuiggeldyConnection, hxcomm::vx::ConnectionVariant>¶
-
using
SimConnection
= hxcomm::SimConnection<ConnectionParameter>¶
-
typedef uint64_t
ut_message_from_fpga_phyword_type
¶
-
typedef uint8_t
ut_message_from_fpga_subword_type
¶
-
typedef uint64_t
ut_message_to_fpga_phyword_type
¶
-
typedef uint64_t
ut_message_to_fpga_subword_type
¶
-
template<typename
I
>
usingUTMessageFromFPGA
= UTMessage<ut_message_from_fpga_header_alignment, ut_message_from_fpga_subword_type, ut_message_from_fpga_phyword_type, instruction::FromFPGADictionary, I>¶
-
using
UTMessageFromFPGAVariant
= ToUTMessageVariant<ut_message_from_fpga_header_alignment, ut_message_from_fpga_subword_type, ut_message_from_fpga_phyword_type, instruction::FromFPGADictionary>::type¶
-
template<typename
I
>
usingUTMessageToFPGA
= UTMessage<ut_message_to_fpga_header_alignment, ut_message_to_fpga_subword_type, ut_message_to_fpga_phyword_type, instruction::ToFPGADictionary, I>¶
-
using
UTMessageToFPGAVariant
= ToUTMessageVariant<ut_message_to_fpga_header_alignment, ut_message_to_fpga_subword_type, ut_message_to_fpga_phyword_type, instruction::ToFPGADictionary>::type¶
-
using
ZeroMockConnection
= hxcomm::ZeroMockConnection<ConnectionParameter>¶
Functions
-
hxcomm::vx::ConnectionVariant get_connection_from_env () SYMBOL_VISIBLE
Automatically determine from environment what connection type to use and return the corresponding variant.
Order of precedence is ZeroMockConnection > QuiggeldyConnection > Extoll-connected hardware > HostARQ-connected hardware > CoSim right now if several are available.
On the Python-side it is wrapped via ManagedConnection.
- Returns
An already allocated connection object.
-
std::optional< hxcomm::vx::ConnectionFullStreamInterfaceVariant > get_connection_full_stream_interface_from_env () SYMBOL_VISIBLE
Get the connection from env and check if it supports the full stream interface.
If so, return it wrapped in an optional, otherwise the optional is empty.
- Returns
Optional wrapping the connection object with support for the full stream interface, empty otherwise.
-
std::vector< hxcomm::vx::ConnectionVariant > get_connection_list_from_env (std::optional< size_t > limit=std::nullopt) SYMBOL_VISIBLE
Automatically determine from environment what connection type to use and return the corresponding variant list.
Order of precedence is HardwareBackend > CoSim right now if both are available.
- Returns
A list of already allocated connection objects.
-
std::tuple< pid_t, hxcomm::port_t > launch_quiggeldy_locally_from_env () SYMBOL_VISIBLE
Launch a local quiggeldy without slurm allocation and debug output based on current env settings.
The environment will be modified so that default constructed QuiggeldyConnection-instances automatically connect to it.
The release idle timeout is set to a day so that for all testing purposes a single connection will be used.
- Returns
Tuple of process ID and port of launched quiggeldy process and the port it is listening on.
-
RRWR_GENERATE_INTERFACE_EXPLICIT_TYPES (I_HXCommQuiggeldyVX, typename quiggeldy_interface_types::response_type, typename quiggeldy_interface_types::request_type, typename quiggeldy_interface_types::reinit_type) namespace detail
-
void unset_quiggeldy_env () SYMBOL_VISIBLE
Unset environment variables of quiggeldy.
-
using
-
namespace
detail
¶
-
namespace
hxcomm::vx
::
instruction
¶ Typedefs
-
typedef hate::multi_concat_t<jtag_from_hicann::Dictionary, omnibus_from_fpga::Dictionary, from_fpga_system::Dictionary, timing_from_fpga::Dictionary, event_from_fpga::Dictionary>
FromFPGADictionary
¶ Dictionary containing all from_fpga instruction subsets.
-
typedef hate::multi_concat_t<to_fpga_jtag::Dictionary, timing::Dictionary, system::Dictionary, omnibus_to_fpga::Dictionary, event_to_fpga::Dictionary>
ToFPGADictionary
¶ Dictionary containing all to_fpga instruction subsets.
-
typedef hate::multi_concat_t<jtag_from_hicann::Dictionary, omnibus_from_fpga::Dictionary, from_fpga_system::Dictionary, timing_from_fpga::Dictionary, event_from_fpga::Dictionary>
-
namespace
hxcomm::vx::instruction
::
event_constants
¶ Constants for event instructions to and from the FPGA.
-
namespace
hxcomm::vx::instruction
::
event_from_fpga
¶ Instructions for events from the FPGA.
Typedefs
-
typedef detail::GenerateDictionary<SpikePack, MADCSamplePack, std::make_index_sequence<event_constants::max_num_packed>>::type
Dictionary
¶ Dictionary of all events from FPGA instructions.
-
typedef detail::GenerateDictionary<SpikePack, MADCSamplePack, std::make_index_sequence<event_constants::max_num_packed>>::type
-
namespace
detail
¶
-
namespace
hxcomm::vx::instruction
::
event_to_fpga
¶ Instructions for events to the FPGA.
Typedefs
-
typedef detail::GenerateDictionary<SpikePack, std::make_index_sequence<event_constants::max_num_packed>>::type
Dictionary
¶ Dictionary of all events to FPGA instructions.
-
typedef detail::GenerateDictionary<SpikePack, std::make_index_sequence<event_constants::max_num_packed>>::type
-
namespace
detail
¶
-
namespace
hxcomm::vx::instruction
::
from_fpga_system
¶ FPGA system responses to the host.
Typedefs
-
typedef hate::type_list<Loopback, HighspeedLinkNotification, TimeoutNotification>
Dictionary
¶ Dictionary of all FPGA system response instructions.
-
typedef hate::type_list<Loopback, HighspeedLinkNotification, TimeoutNotification>
-
namespace
hxcomm::vx::instruction
::
jtag_from_hicann
¶ JTAG responses transported back to the host.
Typedefs
-
typedef hate::type_list<Data>
Dictionary
¶ Dictionary of all jtag_from_hicann instructions.
-
typedef hate::type_list<Data>
-
namespace
hxcomm::vx::instruction
::
omnibus_from_fpga
¶ Omnibus from FPGA responses transported back to the host.
-
namespace
hxcomm::vx::instruction
::
omnibus_to_fpga
¶ Instructions for omnibus communication to the FPGA.
-
namespace
hxcomm::vx::instruction
::
system
¶ Instructions for setting up an experiment.
-
namespace
hxcomm::vx::instruction
::
timing
¶ Instructions controlling the timing of execution of commands.
Typedefs
-
typedef hate::type_list<Setup, WaitUntil, SystimeInit, Barrier, PollingOmnibusBlock>
Dictionary
¶ Dictionary of all timing instructions.
-
typedef hate::type_list<Setup, WaitUntil, SystimeInit, Barrier, PollingOmnibusBlock>
-
namespace
hxcomm::vx::instruction
::
timing_from_fpga
¶ Timing response instructions from the FPGA.
-
namespace
hxcomm::vx::instruction
::
to_fpga_jtag
¶ JTAG instructions to the fpga.
-
namespace
log4cxx
Typedefs
-
typedef std::shared_ptr<Logger>
LoggerPtr
-
typedef std::shared_ptr<Logger>
-
namespace
rcf_extensions
¶
-
namespace
SF
¶ Functions
-
void serialize (Archive &ar, hxcomm::vx::quiggeldy_interface_types::reinit_entry_type &qcr) SYMBOL_VISIBLE
-
void serialize (Archive &ar, hxcomm::vx::quiggeldy_interface_types::request_type &qcr) SYMBOL_VISIBLE
-
void serialize (Archive &ar, hxcomm::vx::quiggeldy_interface_types::response_type &qcr) SYMBOL_VISIBLE
-
-
namespace
std
STL namespace.
-
namespace
chrono_literals
¶
-
file
cerealization.h
- #include <cereal/cereal.hpp>#include <cereal/archives/binary.hpp>#include <cereal/archives/json.hpp>#include <cereal/archives/portable_binary.hpp>#include <cereal/archives/xml.hpp>#include “hate/visibility.h”
Defines
-
EXPLICIT_INSTANTIATE_CEREAL_SERIALIZE
(CLASS_NAME)¶
-
-
file
connect_to_remote_parameter_defs.h
- #include <string>
-
file
connection.h
- #include “hxcomm/common/target.h”#include “hxcomm/common/to_utmessage_variant.h”#include <memory>#include <type_traits>#include <variant>
-
file
connection_full_stream_interface_variant.h
- #include “hxcomm/common/stream.h”#include “hate/type_list.h”#include <variant>
-
file
connection_registry.h
- #include <mutex>#include <set>#include <thread>
-
file
connection_time_info.h
- #include “hate/visibility.h”#include <chrono>#include <iosfwd>
-
file
decoder.h
- #include “hxcomm/common/utmessage.h”#include <climits>#include <memory>#include <boost/fusion/tuple.hpp>#include “hxcomm/common/decoder.tcc”
-
file
encoder.h
- #include “hxcomm/common/utmessage.h”#include <climits>#include <memory>#include <stdint.h>#include “hxcomm/common/encoder.tcc”
-
file
execute_messages.h
- #include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/execute_messages_types.h”#include “hxcomm/common/logger.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/visit_connection.h”#include <memory>#include <utility>#include <variant>#include “hate/type_traits.h”
-
file
execute_messages_types.h
- #include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hate/type_traits.h”#include <type_traits>#include <vector>
-
file
fpga_ip_list.h
- #include “hate/visibility.h”#include <optional>#include <string>#include <vector>
-
file
get_repo_state.h
- #include “hate/visibility.h”#include <string>
-
file
largest_utmessage_size.h
- #include “hate/type_list.h”#include <algorithm>
-
file
listener_halt.h
- #include <atomic>
-
file
logger.h
- #include <log4cxx/logger.h>
-
file
loopbackconnection.h
- #include “hxcomm/common/decoder.h”#include “hxcomm/common/encoder.h”#include “hxcomm/common/utmessage.h”#include <atomic>#include <mutex>#include <queue>#include <stdint.h>#include <thread>#include <vector>#include “hxcomm/common/loopbackconnection.tcc”
-
file
payload.h
- #include “hate/bitset.h”#include “hate/type_index.h”#include <climits>#include <stddef.h>
-
file
quiggeldy_common.h
- #include “hate/visibility.h”#include <cstddef>
-
file
quiggeldy_future.h
- #include <chrono>#include “RCF/RCF.hpp”
-
file
reinit_stack.h
- #include “hxcomm/common/quiggeldy_interface_types.h”#include <memory>#include <thread>#include “hxcomm/common/reinit_stack.tcc”
-
file
sf_serialization.h
- #include <sstream>#include <string>#include “SF/Archive.hpp”#include “SF/string.hpp”#include “SF/vector.hpp”#include “cereal/archives/portable_binary.hpp”#include “hate/timer.h”#include “hxcomm/common/logger.h”
-
file
signal.h
- #include “hate/visibility.h”#include <csignal>
-
file
sim_parameters.h
- #include “hate/visibility.h”#include <cstdint>#include <string>#include <tuple>
-
file
stream.h
- #include “hate/type_list.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/execute_messages_types.h”#include <mutex>#include <type_traits>
-
file
stream_rc.h
- #include “hxcomm/common/connection.h”#include “hxcomm/common/execute_messages_types.h”#include <type_traits>#include <typeinfo>
-
file
to_utmessage_variant.h
- #include “hate/type_list.h”#include <variant>
-
file
utmessage_header_width.h
- #include “hate/math.h”#include “hate/type_list.h”
-
file
visit_connection.h
- #include <memory>#include <stdexcept>#include <type_traits>#include <variant>#include <hate/type_traits.h>
-
file
arqconnection.h
- #include “bss_hw_params/cube_ethernet/constants.h”#include “hate/visibility.h”#include “hxcomm/common/connect_to_remote_parameter_defs.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_registry.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/decoder.h”#include “hxcomm/common/encoder.h”#include “hxcomm/common/listener_halt.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/target.h”#include “hxcomm/common/utmessage.h”#include “sctrltp/ARQFrame.h”#include “sctrltp/ARQStream.h”#include <array>#include <atomic>#include <memory>#include <mutex>#include <optional>#include <thread>#include <tuple>#include <vector>#include “hxcomm/common/arqconnection.tcc”
-
file
arqconnection.h
- #include “hate/visibility.h”#include “hxcomm/common/arqconnection.h”#include “hxcomm/vx/connection_parameter.h”
-
file
connection_from_env.h
- #include “hate/visibility.h”#include “hxcomm/vx/connection_variant.h”#include <optional>#include <vector>
-
file
connection_parameter.h
- #include <stddef.h>
-
file
connection_parameter.h
- #include “hxcomm/common/connection_parameter.h”#include “hxcomm/vx/quiggeldy_schedule_out_to_in_transform.h”#include “hxcomm/vx/utmessage.h”
-
file
connection_variant.h
- #include “hxcomm/common/connection_full_stream_interface_variant.h”#include “hxcomm/vx/quiggeldy_connection.h”#include “hxcomm/vx/simconnection.h”#include “hxcomm/vx/zeromockconnection.h”#include <variant>
-
file
ensure_local_quiggeldy.h
- #include “hate/visibility.h”#include “hxcomm/common/connect_to_remote_parameter_defs.h”#include <unistd.h>
-
file
extollconnection.h
- #include “bss_hw_params/cube_extoll/constants.h”#include “hate/visibility.h”#include “hxcomm/common/connect_to_remote_parameter_defs.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_registry.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/decoder.h”#include “hxcomm/common/encoder.h”#include “hxcomm/common/listener_halt.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/target.h”#include “hxcomm/common/utmessage.h”#include “nhtl-extoll/connection.h”#include “nhtl-extoll/get_node_ids.h”#include <array>#include <atomic>#include <memory>#include <mutex>#include <optional>#include <queue>#include <thread>#include <tuple>#include <vector>#include “hxcomm/common/extollconnection.tcc”
-
file
extollconnection.h
- #include “hxcomm/common/extollconnection.h”#include “hxcomm/vx/connection_parameter.h”
-
file
event_constants.h
- #include <stddef.h>
-
file
event_from_fpga.h
- #include “hate/join.h”#include “hate/type_index.h”#include “hate/type_list.h”#include “hxcomm/common/payload.h”#include “hxcomm/vx/instruction/event_constants.h”#include <climits>
-
file
event_to_fpga.h
- #include “hate/join.h”#include “hate/type_index.h”#include “hate/type_list.h”#include “hxcomm/common/payload.h”#include “hxcomm/vx/instruction/event_constants.h”#include <climits>
-
file
from_fpga_system.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”#include <climits>
-
file
instruction.h
- #include “hxcomm/vx/instruction/event_from_fpga.h”#include “hxcomm/vx/instruction/event_to_fpga.h”#include “hxcomm/vx/instruction/from_fpga_system.h”#include “hxcomm/vx/instruction/jtag_from_hicann.h”#include “hxcomm/vx/instruction/omnibus_from_fpga.h”#include “hxcomm/vx/instruction/omnibus_to_fpga.h”#include “hxcomm/vx/instruction/system.h”#include “hxcomm/vx/instruction/timing.h”#include “hxcomm/vx/instruction/timing_from_fpga.h”#include “hxcomm/vx/instruction/to_fpga_jtag.h”
-
file
jtag_from_hicann.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”
-
file
omnibus_from_fpga.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”#include <climits>
-
file
omnibus_to_fpga.h
- #include “hate/type_index.h”#include “hate/type_list.h”#include “hxcomm/common/payload.h”#include <climits>
-
file
system.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”
-
file
timing.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”#include <climits>
-
file
timing_from_fpga.h
- #include “hate/type_list.h”#include “hxcomm/common/payload.h”#include <climits>
-
file
to_fpga_jtag.h
- #include “hate/math.h”#include “hate/type_index.h”#include “hate/type_list.h”#include “hxcomm/common/payload.h”#include “rant/int.h”#include <climits>
-
file
payload_random.h
- #include “hxcomm/common/payload.h”#include <random>
-
file
payload_random.h
- #include “hate/visibility.h”#include “hxcomm/common/payload_random.h”#include “hxcomm/vx/instruction/event_from_fpga.h”#include “hxcomm/vx/instruction/event_to_fpga.h”#include “hxcomm/vx/instruction/omnibus_to_fpga.h”#include “hxcomm/vx/instruction/to_fpga_jtag.h”
-
file
quiggeldy_connection.h
- #include “hate/visibility.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/execute_messages.h”#include “hxcomm/common/quiggeldy_future.h”#include “hxcomm/common/quiggeldy_interface_types.h”#include “hxcomm/common/reinit_stack.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/stream_rc.h”#include “hxcomm/common/target.h”#include “rcf-extensions/on-demand-upload.h”#include “rcf-extensions/sequence-number.h”#include “RCF/RCF.hpp”#include <chrono>#include <memory>#include <string>#include <vector>#include <boost/uuid/uuid.hpp>#include “hxcomm/common/quiggeldy_connection.tcc”
-
file
quiggeldy_connection.h
- #include “hxcomm/common/quiggeldy_connection.h”#include “hxcomm/vx/quiggeldy_rcf.h”
-
file
quiggeldy_interface_types.h
- #include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/execute_messages.h”#include <optional>#include <utility>#include <vector>
-
file
quiggeldy_interface_types.h
- #include “hxcomm/common/quiggeldy_interface_types.h”#include “hxcomm/vx/connection_parameter.h”
-
file
quiggeldy_rcf.h
- #include “cereal/types/utility.hpp”#include “cereal/types/variant.hpp”#include “cereal/types/vector.hpp”#include “cereal/types/hxcomm/common/quiggeldy_interface_types.h”#include “cereal/types/hxcomm/common/utmessage.h”#include “hate/visibility.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/sf_serialization.h”#include “hxcomm/vx/connection_parameter.h”#include “hxcomm/vx/quiggeldy_interface_types.h”#include “rcf-extensions/round-robin-reinit-scheduler.h”#include “rcf-extensions/sf/optional.h”#include <optional>#include <RCF/RCF.hpp>
-
file
quiggeldy_schedule_out_to_in_transform.h
- #include “hate/visibility.h”#include “hxcomm/vx/utmessage.h”#include <vector>
-
file
quiggeldy_server.h
- #include “hxcomm/common/quiggeldy_worker.h”#include “rcf-extensions/round-robin-reinit-scheduler.h”#include <memory>#include <optional>#include <string>#include <type_traits>
-
file
quiggeldy_server.h
- #include “hxcomm/common/quiggeldy_server.h”#include “hxcomm/vx/quiggeldy_rcf.h”
-
file
quiggeldy_utility.h
- #include “hate/visibility.h”#include <optional>#include <unistd.h>#include <arpa/inet.h>#include “hxcomm/common/connect_to_remote_parameter_defs.h”#include “hxcomm/common/logger.h”#include “hxcomm/common/quiggeldy_utility.tcc”
-
file
quiggeldy_utility.h
- #include “hate/visibility.h”#include “hxcomm/common/quiggeldy_utility.h”#include “hxcomm/vx/quiggeldy_server.h”#include “hxcomm/vx/quiggeldy_worker.h”#include “hxcomm/vx/simconnection.h”#include “rcf-extensions/round-robin-reinit-scheduler.h”
-
file
quiggeldy_worker.h
- #include “hxcomm/common/quiggeldy_interface_types.h”#include <boost/uuid/uuid.hpp>#include <boost/uuid/uuid_hash.hpp>#include <boost/uuid/uuid_io.hpp>#include <memory>#include <optional>#include <string>#include <type_traits>#include “hxcomm/common/quiggeldy_worker.tcc”
-
file
quiggeldy_worker.h
- #include “hxcomm/common/quiggeldy_worker.h”
-
file
reinit_stack_entry.h
- #include “hate/type_list.h”#include “hate/visibility.h”#include “hxcomm/common/logger.h”#include “hxcomm/common/quiggeldy_interface_types.h”#include “hxcomm/common/stream_rc.h”#include <functional>#include <memory>#include <optional>#include <type_traits>#include <variant>#include “hxcomm/common/reinit_stack_entry.tcc”
-
file
reinit_stack_entry.h
- #include “hxcomm/common/reinit_stack_entry.h”#include “hxcomm/vx/connection_variant.h”#include “hxcomm/vx/quiggeldy_connection.h”
-
file
simconnection.h
- #include “flange/simulator_client.h”#include “hate/visibility.h”#include “hxcomm/common/connect_to_remote_parameter_defs.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_registry.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/decoder.h”#include “hxcomm/common/encoder.h”#include “hxcomm/common/listener_halt.h”#include “hxcomm/common/signal.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/target.h”#include “hxcomm/common/utmessage.h”#include <atomic>#include <memory>#include <mutex>#include <optional>#include <queue>#include <stddef.h>#include <stdint.h>#include <thread>#include <type_traits>#include <unistd.h>#include <vector>#include “hxcomm/common/simconnection.tcc”
-
file
simconnection.h
- #include “hate/visibility.h”#include “hxcomm/common/simconnection.h”#include “hxcomm/vx/connection_parameter.h”
-
file
target.h
-
file
target.h
- #include “hxcomm/common/target.h”
-
file
utmessage.h
- #include “hate/bitset.h”#include “hate/math.h”#include “hate/type_list.h”#include “hate/visibility.h”#include “hxcomm/common/largest_utmessage_size.h”#include “hxcomm/common/to_utmessage_variant.h”#include “hxcomm/common/utmessage_header_width.h”#include “hxcomm/common/utmessage.tcc”
-
file
utmessage.h
- #include “hxcomm/common/utmessage.h”#include “hxcomm/vx/utmessage_fwd.h”
-
file
utmessage_fwd.h
- #include “hxcomm/common/to_utmessage_variant.h”#include “hxcomm/vx/instruction/instruction.h”
-
file
utmessage_random.h
- #include “hxcomm/common/payload_random.h”#include “hxcomm/common/utmessage.h”
-
file
utmessage_random.h
- #include “hxcomm/common/utmessage_random.h”#include “hxcomm/vx/payload_random.h”
-
file
zeromockconnection.h
- #include “hate/visibility.h”#include “hxcomm/common/connection.h”#include “hxcomm/common/connection_time_info.h”#include “hxcomm/common/stream.h”#include “hxcomm/common/target.h”#include “hxcomm/common/utmessage.h”#include <mutex>#include <optional>#include <vector>#include “hxcomm/common/zeromockconnection.tcc”
-
file
zeromockconnection.h
- #include “hate/visibility.h”#include “hxcomm/common/zeromockconnection.h”#include “hxcomm/vx/connection_parameter.h”
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm/include/hxcomm/common
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm/include/hxcomm
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm/include
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm/include/hxcomm/vx/instruction
-
dir
/jenkins/jenlib_workspaces_f9/doc_gerrit_documentation-brainscales2.ZG9jX2dlcnJpdF9kb2N1bWVudGF0aW9uLWJyYWluc2NhbGVzMiMzODM.x/hxcomm/include/hxcomm/vx