Radical Computer Technologies
DSP / entity

raddsp_axis_matrix_dot

Documentation version: 0.2.0 / Subpackage: dsp_matrix / Source package: raddsp

AXI-stream matrix/vector dot-product accelerator. Consumes fixed-point matrix and vector lanes and emits accumulated dot products for linear algebra DSP blocks.

Use Cases

Block Diagram

raddsp_axis_matrix_dot radhdl entity s0_axis_tvalid s0_axis_tdata s0_axis_tlast s1_axis_tvalid s1_axis_tdata s1_axis_tlast clk rst clear_i s0_axis_tready s1_axis_tready M_AXIS sample_count_o
VHDL Include And Instantiation Template

File Header

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

library radhdl;
-- Direct entity instantiation below does not require importing the entity name.
use radhdl.dsp.all;
-- Narrower alternative: use radhdl.dsp_matrix.all;

Component Declaration

component raddsp_axis_matrix_dot is
  generic (
    VENDOR : string := "xilinx";
    DEVICE_FAMILY : string := "generic";
    DATA_WIDTH : positive := 16;
    ACC_WIDTH : positive := 48;
    COEFF_FRAC_BITS : natural := 15
  );
  port (
    s0_axis_tvalid : in std_logic;
    s0_axis_tready : out std_logic;
    s0_axis_tdata : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    s0_axis_tlast : in std_logic;
    s1_axis_tvalid : in std_logic;
    s1_axis_tready : out std_logic;
    s1_axis_tdata : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    s1_axis_tlast : in std_logic;
    m_axis_tvalid : out std_logic;
    m_axis_tready : in std_logic;
    m_axis_tdata : out std_logic_vector(ACC_WIDTH - 1 downto 0);
    m_axis_tlast : out std_logic;
    clk : in std_logic;
    rst : in std_logic;
    clear_i : in std_logic;
    sample_count_o : out std_logic_vector(31 downto 0)
  );
end component;

Direct Entity Instantiation

u_raddsp_axis_matrix_dot : entity radhdl.raddsp_axis_matrix_dot
  generic map (
    VENDOR          => "xilinx",
    DEVICE_FAMILY   => "generic",
    DATA_WIDTH      => 16,
    ACC_WIDTH       => 48,
    COEFF_FRAC_BITS => 15
  )
  port map (
    s0_axis_tvalid => <s0_axis_tvalid_signal>,
    s0_axis_tready => <s0_axis_tready_signal>,
    s0_axis_tdata  => <s0_axis_tdata_signal>,
    s0_axis_tlast  => <s0_axis_tlast_signal>,
    s1_axis_tvalid => <s1_axis_tvalid_signal>,
    s1_axis_tready => <s1_axis_tready_signal>,
    s1_axis_tdata  => <s1_axis_tdata_signal>,
    s1_axis_tlast  => <s1_axis_tlast_signal>,
    m_axis_tvalid  => <m_axis_tvalid_signal>,
    m_axis_tready  => <m_axis_tready_signal>,
    m_axis_tdata   => <m_axis_tdata_signal>,
    m_axis_tlast   => <m_axis_tlast_signal>,
    clk            => <clk_signal>,
    rst            => <rst_signal>,
    clear_i        => <clear_i_signal>,
    sample_count_o => <sample_count_o_signal>
  );

Generics

NameTypeDefaultDescription
VENDORstring"xilinx"Selects the vendor-specific implementation path, usually XILINX for DSP48/XPM-backed builds or generic for portable RTL.
DEVICE_FAMILYstring"generic"Identifies the target FPGA family so wrappers can choose the correct primitive or conservative portable behavior.
DATA_WIDTHpositive16Sets the bit width for DATA WIDTH values carried by this module.
ACC_WIDTHpositive48Sets the bit width for ACC WIDTH values carried by this module.
COEFF_FRAC_BITSnatural15Sets coefficient precision or coefficient count for the fixed-point DSP operation.

Ports

NameDirectionTypeDescription
s0_axis_tvalidinstd_logicS0 axis tvalid interface signal.
s0_axis_treadyoutstd_logicS0 axis tready interface signal.
s0_axis_tdatainstd_logic_vector(DATA_WIDTH - 1 downto 0)S0 axis tdata interface signal.
s0_axis_tlastinstd_logicS0 axis tlast interface signal.
s1_axis_tvalidinstd_logicS1 axis tvalid interface signal.
s1_axis_treadyoutstd_logicS1 axis tready interface signal.
s1_axis_tdatainstd_logic_vector(DATA_WIDTH - 1 downto 0)S1 axis tdata interface signal.
s1_axis_tlastinstd_logicS1 axis tlast interface signal.
m_axis_tvalidoutstd_logicOutput AXI-stream valid qualifier for the current result beat.
m_axis_treadyinstd_logicOutput AXI-stream ready input from the downstream block.
m_axis_tdataoutstd_logic_vector(ACC_WIDTH - 1 downto 0)Output AXI-stream payload containing packed processed result lanes.
m_axis_tlastoutstd_logicOutput AXI-stream frame marker aligned with the processed result beat.
clkinstd_logicClock for the associated synchronous logic and handshake domain.
rstinstd_logicActive-high synchronous reset for this clock domain.
clear_iinstd_logicInput clear i signal for this module.
sample_count_ooutstd_logic_vector(31 downto 0)Output sample vector or current sample status from the datapath.

Measured Implementation Metrics

Metrics are generated by RadBuild from real Vivado synthesis reports for representative device targets. Raw report paths are preserved in the checked summary JSON.

PartClock nsMHzLUTsFFsBRAM tilesDSPsSetup WNS nsHold WHS nsGenericsSummary
xc7a35tcsg324-110.0100.0103168016.4610.129-projects/synth_reports/raddsp_axis_matrix_dot/xc7a35tcsg324-1/synth_summary.json
xc7a35tcsg324-210.0100.0103168017.0360.118-projects/synth_reports/raddsp_axis_matrix_dot/xc7a35tcsg324-2/synth_summary.json
xc7z020clg400-110.0100.0----6.4390.152-projects/synth_reports/raddsp_axis_matrix_dot/xc7z020clg400-1/synth_summary.json
xc7z020clg400-210.0100.0103168017.0190.138-projects/synth_reports/raddsp_axis_matrix_dot/xc7z020clg400-2/synth_summary.json
xc7z020clg400-310.0100.0----7.3090.138-projects/synth_reports/raddsp_axis_matrix_dot/xc7z020clg400-3/synth_summary.json
xczu3eg-sfvc784-1-e6.667149.993103168015.155-0.07DEVICE_FAMILY=ultrascaleplusprojects/synth_reports/raddsp_axis_matrix_dot/xczu3eg-sfvc784-1-e/synth_summary.json
xczu3eg-sfvc784-2-e6.667149.993----5.407-0.071DEVICE_FAMILY=ultrascaleplusprojects/synth_reports/raddsp_axis_matrix_dot/xczu3eg-sfvc784-2-e/synth_summary.json

Register Interfaces

No fixed register map was found; this section documents the exposed register/control interface ports.

InterfaceDirectionsSignalsRepresentative ports
M_AXISin, out4m_axis_tvalid, m_axis_tready, m_axis_tdata, m_axis_tlast

Testbenches

tb_raddsp_axis_smoke reference plots

Source: dsp/hdl/testbenches/tb_raddsp_axis_smoke.vhd

Self-checking or stimulus-focused testbench for axis smoke. Exercises representative handshakes, reset behavior, frame boundaries, and numeric corner cases for regression runs.

Interface Timing Diagram

Source: dsp/hdl/testbenches/tb_raddsp_axis_smoke.vhd

clk
rst
s0_axis_tlast
s0_axis_tready
s0_axis_tvalid
s1_axis_tlast
s1_axis_tready
s1_axis_tvalid
s0_axis_tdata
s1_axis_tdata
sample_count_o
clear_i
M_AXIS
M_AXIS interface signals

M_AXIS Interface Waveform

Source: dsp/hdl/testbenches/tb_raddsp_axis_smoke.vhd

m_axis_tlast
m_axis_tready
m_axis_tvalid
m_axis_tdata

Sources