From 2f08816af3c2ca9c4f89760ee2a8ad71c0fbd2bc Mon Sep 17 00:00:00 2001 From: David Monk <dmonk@cern.ch> Date: Thu, 31 Oct 2024 11:49:12 +0100 Subject: [PATCH] Finished stub path of LinkInterfaceInternal --- .../firmware/hdl/TestBench.vhd | 94 +++++++++++++------ 1 file changed, 66 insertions(+), 28 deletions(-) diff --git a/dtc-fe/testbenches/LinkInterfaceInternal/firmware/hdl/TestBench.vhd b/dtc-fe/testbenches/LinkInterfaceInternal/firmware/hdl/TestBench.vhd index 5c0433ae..26d56ce2 100644 --- a/dtc-fe/testbenches/LinkInterfaceInternal/firmware/hdl/TestBench.vhd +++ b/dtc-fe/testbenches/LinkInterfaceInternal/firmware/hdl/TestBench.vhd @@ -19,9 +19,8 @@ architecture Behavioral of testbench is signal boxcar_counter : integer := 0; -- I/O streams - signal stream_in : lword := LWORD_NULL; - signal filtered_stream : lword := LWORD_NULL; - signal stubs : lword := LWORD_NULL; + signal stubs : ldata(1 downto 0) := (others => LWORD_NULL); + signal interleaved_stubs : lword := LWORD_NULL; -- Link Interface signal aligner_reset : std_logic := '0'; @@ -58,31 +57,70 @@ begin end if; end process pReset; - -- I/O --==============================-- - TestBenchIOInstance : entity work.TestBenchIO + CicInterface: for i in 0 to 2 - 1 generate --==============================-- - generic map ( - input_filename => "stub_extractor_output.txt", - output_filename => "result.txt", - input_line_width => 64 - ) - port map ( - clk => clk_p, - data_out => stream_in, - data_in => stubs - ); - pAddMetadata : process(clk_p) + + signal stream_in : lword := LWORD_NULL; + signal stream_in_aligned : lword := LWORD_NULL; + + signal aligner_state : std_logic_vector(3 downto 0) := (others => '0'); + begin - if rising_edge(clk_p) then - filtered_stream <= LWORD_NULL; - if stream_in.data /= x"0000000000000000" then - filtered_stream.valid <= '1'; - filtered_stream.strobe <= '1'; - filtered_stream.data <= stream_in.data; - end if; - end if; - end process pAddMetadata; + + -- I/O + --==============================-- + TestBenchIOInstance : entity work.TestBenchIO + --==============================-- + generic map ( + input_filename => "framed_stream.txt", + output_filename => "result" & integer'image(i) & ".txt", + input_line_width => 16 + ) + port map ( + clk => clk_p, + data_out => stream_in, + data_in => stubs(i) + ); + + --==============================-- + HeaderAligner: entity work.HeaderAligner + --==============================-- + generic map ( + module_type => "2S", + bandwidth => 5 + ) + port map( + --- Input Ports --- + clk => clk_p, + data_in => stream_in, + reset => aligner_reset, + --- Output Ports --- + header_start => header_start_array(i), + state => aligner_state + -- sync_loss => sync_loss(i) + ); + + --==============================-- + StubExtractor: entity work.StubExtractor + --==============================-- + generic map( + cic_index => i, + module_type => "2S", + bandwidth => 5 + ) + port map( + --- Input Ports --- + clk => clk_p, + data_in => stream_in, + header_start => header_start_array(i), + aligner_state => aligner_state, + --- Output Ports --- + stub_out => stubs(i), + header_out => header_array(i) + ); + + end generate CicInterface; --==============================-- StubInterleaver: entity work.StubInterleaver @@ -90,10 +128,10 @@ begin port map( --- Input Ports --- clk => clk_p, - stub_in_0 => filtered_stream, - stub_in_1 => filtered_stream, + stub_in_0 => stubs(0), + stub_in_1 => stubs(1), --- Output Ports --- - stub_out => stubs + stub_out => interleaved_stubs ); end Behavioral; -- GitLab