Entity: prim_sync_reqack_data

Diagram

int unsigned Width bit DataSrc2Dst bit DataReg clk_src_i rst_src_ni clk_dst_i rst_dst_ni req_chk_i src_req_i dst_ack_i [Width-1:0] data_i src_ack_o dst_req_o [Width-1:0] data_o

Description

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

REQ/ACK synchronizer with associated data.

This module synchronizes a REQ/ACK handshake with associated data across a clock domain crossing (CDC). Both domains will see a handshake with the duration of one clock cycle. By default, the data itself is not registered. The main purpose of feeding the data through this module to have an anchor point for waiving CDC violations. If the data is configured to flow from the destination (DST) to the source (SRC) domain, an additional register stage can be inserted for data buffering.

Under the hood, this module uses a prim_sync_reqack primitive for synchronizing the REQ/ACK handshake. See prim_sync_reqack.sv for more details.

Generics

Generic name Type Value Description
Width int unsigned 1
DataSrc2Dst bit 1'b1 Direction of data flow: 1'b1 = SRC to DST,
DataReg bit 1'b0 Enable optional register stage for data,

Ports

Port name Direction Type Description
clk_src_i input REQ side, SRC domain
rst_src_ni input REQ side, SRC domain
clk_dst_i input ACK side, DST domain
rst_dst_ni input ACK side, DST domain
req_chk_i input Used for gating assertions. Drive to 1 during normal operation.
src_req_i input REQ side, SRC domain
src_ack_o output REQ side, SRC domain
dst_req_o output ACK side, DST domain
dst_ack_i input ACK side, DST domain
data_i input [Width-1:0]
data_o output [Width-1:0]

Instantiations

Description
//////////////////////////////////
REQ/ACK synchronizer primitive //
//////////////////////////////////