Entity: prim_esc_sender

Diagram

clk_i rst_ni ping_req_i esc_req_i esc_rx_t esc_rx_i ping_ok_o integ_fail_o esc_tx_t esc_tx_o

Description

Copyright lowRISC contributors. Licensed under the Apache License, Version 2.0, see LICENSE for details. SPDX-License-Identifier: Apache-2.0

This module differentially encodes an escalation enable pulse of arbitrary width.

The module supports in-band ping testing of the escalation wires. This is accomplished by sending out a single, differentially encoded pulse on esc_p/n which will be interpreted as a ping request by the escalation receiver. Note that ping_req_i shall be held high until either ping_ok_o or integ_fail_o is asserted.

Native escalation enable pulses are differentiated from ping requests by making sure that these pulses are always longer than 1 cycle.

If there is a differential encoding error, integ_fail_o will be asserted.

See also: prim_esc_receiver, prim_diff_decode, alert_handler

Ports

Port name Direction Type Description
clk_i input
rst_ni input
ping_req_i input this triggers a ping test. keep asserted until ping_ok_o is pulsed high.
ping_ok_o output
integ_fail_o output asserted if signal integrity issue detected
esc_req_i input escalation request signal
esc_rx_i input esc_rx_t escalation / ping response
esc_tx_o output esc_tx_t escalation output diff pair

Signals

Name Type Description
resp logic /////////////////////////////// decode differential signals // ///////////////////////////////
resp_n logic /////////////////////////////// decode differential signals // ///////////////////////////////
resp_p logic /////////////////////////////// decode differential signals // ///////////////////////////////
sigint_detected logic /////////////////////////////// decode differential signals // ///////////////////////////////
ping_req_d logic //////////// TX Logic // ////////////
ping_req_q logic //////////// TX Logic // ////////////
esc_req_d logic
esc_req_q logic
esc_req_q1 logic
esc_p logic ping enable is 1 cycle pulse escalation pulse is always longer than 2 cycles
state_d fsm_e
state_q fsm_e
integ_fail_o state_q
clk_i state_q
!rs state_q

Types

Name Type Description
fsm_e enum logic [2:0] {
Idle,
CheckEscRespLo,
CheckEscRespHi,
CheckPingResp0,
CheckPingResp1,
CheckPingResp2,
CheckPingResp3}
//////////// RX Logic // ////////////

Processes

Type: always_comb

Type: always_ff

Description
///////////// Registers // /////////////

Instantiations

Description
This prevents further tool optimizations of the differential signal.

Description
This prevents further tool optimizations of the differential signal.