RTL Studio Open IDE

Clock-Domain Crossing

Pulse-Ack Round-Trip Across 2 Clocks

Implements a pulse-acknowledgment round-trip mechanism across two asynchronous clock domains to ensure reliable single-cycle pulse transmission and acknowledgment.

About this block

Simulate it in the Verilog IDE

Mediumverilogsimsyn

Pulse-Ack Round-Trip Across 2 Clocks is a Verilog reference block in the Clock-Domain Crossing catalog. Clock-domain crossing FIFOs, synchronizers, and handshake bridges. Marked Medium: more state or a wider datapath, still one workspace in the IDE.

This IP implements a robust pulse-acknowledgment round-trip mechanism for crossing single-cycle pulses between two asynchronous clock domains. It ensures reliable data transmission by using double-flop synchronizers on both the forward (source to destination) and reverse (acknowledgment) paths, effectively mitigating metastability risks.

This module provides a simple, low-latency handshake protocol for asynchronous clock domains. It is ideal for applications requiring simple event signaling without the overhead of complex protocols like AXI or Wishbone. Key benefits include:

  • Metastability Protection: Uses standard double-flop synchronizers.
  • Back-to-Back Pulse Handling: Correctly handles consecutive pulses without loss or spurious detection.
  • Minimal Overhead: Small area footprint and low latency.
  1. Choose Open in IDE. RTL Studio loads the packaged workspace for Pulse-Ack Round-Trip Across 2 Clocks.
  2. Read the Verilog module in the editor. The catalog line for this block: Implements a pulse-acknowledgment round-trip mechanism across two asynchronous clock domains to ensure reliable single-cycle pulse transmission and acknowledgment.
  3. Run the packaged testbench with the in-browser Verilator simulator, then open the VCD in the waveform viewer.
  4. Run Yosys in the same IDE for a generic netlist. Sky130 liberty mapping is a separate Pro library option.

RTL Studio is the Verilog simulator and IDE around this block: Slang lint, Verilator, VCD waveforms, and Yosys, in the browser. Simulation guide · Yosys guide.

Features

  • Supports single-cycle pulse transmission from source to destination.
  • Provides an acknowledgment pulse back to the source domain upon successful reception.
  • Handles back-to-back pulses without loss or spurious detection.
  • Includes reset synchronization for both clock domains.

Ports

Port NameDirectionWidthDescription
src_clkInput1Source clock domain
dst_clkInput1Destination clock domain
src_rst_nInput1Active-low reset for source domain
dst_rst_nInput1Active-low reset for destination domain
src_pulse_inInput1Input pulse from source domain (must be synchronized)
dst_pulse_outOutput1Output pulse in destination domain
dst_ack_outOutput1Acknowledgment pulse back to source domain

Verification

The testbench verifies the following scenarios:

Test CaseDescriptionResult
TC1Single pulse transmission and acknowledgmentPASS
TC2Back-to-back pulses handlingPASS
TC3No spurious pulses after settlingPASS

All tests passed successfully in simulation.

More in Clock-Domain Crossing

All Clock-Domain Crossing blocks