From 7c9e54420ae7bea5fa97f2bd4e5c960d35058728 Mon Sep 17 00:00:00 2001 From: hadaq Date: Tue, 27 Mar 2007 13:32:45 +0000 Subject: [PATCH] lvds chain working again, Ingo --- testbench/lvds_chain_testsim.tcl | 2 +- testbench/settings_lvds_chain.sav | 48 ++++++++++++++--- testbench/trb_net_ibuf_testbench.vhd | 4 +- .../trb_net_lvds_chain_testbench_beh.prj | 4 ++ testbench/trb_net_obuf_testbench.vhd | 11 ++-- trb_net_active_api.vhd | 53 +++++++++++-------- trb_net_endpoint_3ch.vhd | 1 + trb_net_ibuf.vhd | 7 +-- trb_net_io_multiplexer.vhd | 18 ++++++- trb_net_iobuf.vhd | 7 ++- trb_net_obuf.vhd | 24 +++++---- trb_net_sbuf.vhd | 26 ++++++++- xilinx/trb_net_fifo_arch.vhd | 3 +- 13 files changed, 151 insertions(+), 57 deletions(-) diff --git a/testbench/lvds_chain_testsim.tcl b/testbench/lvds_chain_testsim.tcl index 7e4bd37..f4fdf47 100644 --- a/testbench/lvds_chain_testsim.tcl +++ b/testbench/lvds_chain_testsim.tcl @@ -1,5 +1,5 @@ vcd dumpfile vcdfile.vcd -vcd dumpvars lvds +#vcd dumpvars lvds vcd dumpvars -m /APL1/ vcd dumpvars -m /API1/MPLEX/ vcd dumpvars -m /API1/ACTIVE_API/ diff --git a/testbench/settings_lvds_chain.sav b/testbench/settings_lvds_chain.sav index b145492..9ca7525 100644 --- a/testbench/settings_lvds_chain.sav +++ b/testbench/settings_lvds_chain.sav @@ -1,6 +1,6 @@ [size] 1272 936 [pos] -1 -1 -*-30.799541 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +*-25.799541 915000000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 @200 -DUMMY_APL @28 @@ -16,6 +16,8 @@ trb_net_lvds_chain_testbench.APL1.apl_send_out trb_net_lvds_chain_testbench.API1.ACTIVE_API.apl_dataready_out @22 #apl_seqnr_in[7:0] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[7] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[6] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[5] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[4] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[3] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[2] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[1] trb_net_lvds_chain_testbench.APL1.apl_seqnr_in[0] +@28 +trb_net_lvds_chain_testbench.APL1.apl_fifo_full_in @200 -API @28 @@ -24,6 +26,18 @@ trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_read_in @22 #int_init_data_out[50:0] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[50] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[49] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[48] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[47] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[46] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[45] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[44] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[43] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[42] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[41] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[40] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[39] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[38] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[37] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[36] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[35] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[34] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[33] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[32] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[31] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[30] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[29] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[28] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[27] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[26] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[25] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[24] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[23] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[22] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[21] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[20] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[19] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[18] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[17] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[16] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[15] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[14] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[13] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[12] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[11] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[10] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[9] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[8] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[7] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[6] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[5] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[4] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[3] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[2] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[1] trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_data_out[0] @200 +-INITSBUF +@28 +trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_dataready_in +trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_read_in +@22 +#comb_data_in[50:0] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[50] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[49] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[48] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[47] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[46] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[45] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[44] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[43] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[42] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[41] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[40] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[39] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[38] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[37] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[36] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[35] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[34] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[33] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[32] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[31] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[30] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[29] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[28] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[27] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[26] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[25] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[24] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[23] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[22] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[21] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[20] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[19] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[18] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[17] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[16] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[15] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[14] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[13] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[12] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[11] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[10] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[9] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[8] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[7] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[6] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[5] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[4] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[3] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[2] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[1] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.comb_data_in[0] +@28 +trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.move_b2_buffer +trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.move_b1_buffer +@22 +#syn_data_out[50:0] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[50] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[49] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[48] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[47] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[46] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[45] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[44] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[43] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[42] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[41] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[40] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[39] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[38] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[37] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[36] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[35] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[34] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[33] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[32] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[31] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[30] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[29] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[28] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[27] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[26] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[25] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[24] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[23] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[22] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[21] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[20] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[19] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[18] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[17] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[16] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[15] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[14] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[13] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[12] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[11] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[10] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[9] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[8] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[7] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[6] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[5] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[4] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[3] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[2] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[1] trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.syn_data_out[0] +@200 -IOBUF @22 #stat_locked[31:0] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[31] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[30] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[29] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[28] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[27] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[26] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[25] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[24] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[23] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[22] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[21] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[20] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[19] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[18] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[17] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[16] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[15] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[14] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[13] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[12] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[11] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[10] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[9] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[8] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[7] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[6] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[5] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[4] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[3] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[2] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[1] trb_net_lvds_chain_testbench.API1.IOBUF.stat_locked[0] @@ -37,6 +51,29 @@ trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_dataready_out trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_read_in @22 #ctrl_buffer[31:0] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[31] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[30] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[29] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[28] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[27] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[26] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[25] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[24] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[23] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[22] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[21] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[20] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[19] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[18] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[17] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[16] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[15] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[14] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[13] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[12] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[11] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[10] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[9] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[8] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[7] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[6] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[5] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[4] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[3] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[2] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[1] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.ctrl_buffer[0] +@28 +#transmitted_buffers[1:0] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.transmitted_buffers[1] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.transmitted_buffers[0] +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.sent_eob +@29 +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.sent_ack +@28 +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.send_ack_in +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.reg_send_ack_in +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.sbuf_free +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.int_read_out +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.int_dataready_in +@22 +#current_output_buffer[50:0] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[50] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[49] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[48] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[47] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[46] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[45] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[44] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[43] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[42] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[41] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[40] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[39] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[38] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[37] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[36] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[35] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[34] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[33] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[32] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[31] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[30] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[29] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[28] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[27] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[26] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[25] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[24] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[23] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[22] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[21] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[20] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[19] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[18] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[17] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[16] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[15] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[14] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[13] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[12] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[11] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[10] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[9] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[8] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[7] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[6] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[5] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[4] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[3] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[2] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[1] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.current_output_buffer[0] +@200 +-MPLEX +@22 +#med_data_out[51:0] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[51] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[50] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[49] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[48] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[47] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[46] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[45] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[44] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[43] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[42] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[41] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[40] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[39] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[38] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[37] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[36] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[35] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[34] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[33] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[32] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[31] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[30] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[29] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[28] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[27] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[26] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[25] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[24] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[23] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[22] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[21] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[20] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[19] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[18] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[17] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[16] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[15] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[14] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[13] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[12] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[11] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[10] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[9] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[8] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[7] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[6] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[5] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[4] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[3] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[2] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[1] trb_net_lvds_chain_testbench.API1.MPLEX.med_data_out[0] +@28 +trb_net_lvds_chain_testbench.API1.MPLEX.mux_read +trb_net_lvds_chain_testbench.API1.MPLEX.mux_next_read +trb_net_lvds_chain_testbench.API1.MPLEX.mux_enable +@22 +#current_mux_buffer[51:0] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[51] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[50] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[49] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[48] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[47] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[46] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[45] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[44] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[43] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[42] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[41] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[40] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[39] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[38] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[37] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[36] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[35] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[34] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[33] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[32] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[31] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[30] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[29] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[28] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[27] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[26] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[25] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[24] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[23] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[22] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[21] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[20] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[19] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[18] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[17] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[16] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[15] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[14] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[13] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[12] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[11] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[10] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[9] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[8] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[7] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[6] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[5] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[4] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[3] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[2] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[1] trb_net_lvds_chain_testbench.API1.MPLEX.current_mux_buffer[0] @200 -LVDS @22 @@ -50,16 +87,11 @@ trb_net_lvds_chain_testbench.LVDS1.med_carrier_out @200 - -LVDS (rec) -@22 -#med_data_in[12:0] trb_net_lvds_chain_testbench.LVDS2.med_data_in[12] trb_net_lvds_chain_testbench.LVDS2.med_data_in[11] trb_net_lvds_chain_testbench.LVDS2.med_data_in[10] trb_net_lvds_chain_testbench.LVDS2.med_data_in[9] trb_net_lvds_chain_testbench.LVDS2.med_data_in[8] trb_net_lvds_chain_testbench.LVDS2.med_data_in[7] trb_net_lvds_chain_testbench.LVDS2.med_data_in[6] trb_net_lvds_chain_testbench.LVDS2.med_data_in[5] trb_net_lvds_chain_testbench.LVDS2.med_data_in[4] trb_net_lvds_chain_testbench.LVDS2.med_data_in[3] trb_net_lvds_chain_testbench.LVDS2.med_data_in[2] trb_net_lvds_chain_testbench.LVDS2.med_data_in[1] trb_net_lvds_chain_testbench.LVDS2.med_data_in[0] -@28 -trb_net_lvds_chain_testbench.LVDS2.med_transmission_clk_in -trb_net_lvds_chain_testbench.LVDS2.med_carrier_in -@22 -#int_data_out[55:0] trb_net_lvds_chain_testbench.LVDS2.int_data_out[55] trb_net_lvds_chain_testbench.LVDS2.int_data_out[54] trb_net_lvds_chain_testbench.LVDS2.int_data_out[53] trb_net_lvds_chain_testbench.LVDS2.int_data_out[52] trb_net_lvds_chain_testbench.LVDS2.int_data_out[51] trb_net_lvds_chain_testbench.LVDS2.int_data_out[50] trb_net_lvds_chain_testbench.LVDS2.int_data_out[49] trb_net_lvds_chain_testbench.LVDS2.int_data_out[48] trb_net_lvds_chain_testbench.LVDS2.int_data_out[47] trb_net_lvds_chain_testbench.LVDS2.int_data_out[46] trb_net_lvds_chain_testbench.LVDS2.int_data_out[45] trb_net_lvds_chain_testbench.LVDS2.int_data_out[44] trb_net_lvds_chain_testbench.LVDS2.int_data_out[43] trb_net_lvds_chain_testbench.LVDS2.int_data_out[42] trb_net_lvds_chain_testbench.LVDS2.int_data_out[41] trb_net_lvds_chain_testbench.LVDS2.int_data_out[40] trb_net_lvds_chain_testbench.LVDS2.int_data_out[39] trb_net_lvds_chain_testbench.LVDS2.int_data_out[38] trb_net_lvds_chain_testbench.LVDS2.int_data_out[37] trb_net_lvds_chain_testbench.LVDS2.int_data_out[36] trb_net_lvds_chain_testbench.LVDS2.int_data_out[35] trb_net_lvds_chain_testbench.LVDS2.int_data_out[34] trb_net_lvds_chain_testbench.LVDS2.int_data_out[33] trb_net_lvds_chain_testbench.LVDS2.int_data_out[32] trb_net_lvds_chain_testbench.LVDS2.int_data_out[31] trb_net_lvds_chain_testbench.LVDS2.int_data_out[30] trb_net_lvds_chain_testbench.LVDS2.int_data_out[29] trb_net_lvds_chain_testbench.LVDS2.int_data_out[28] trb_net_lvds_chain_testbench.LVDS2.int_data_out[27] trb_net_lvds_chain_testbench.LVDS2.int_data_out[26] trb_net_lvds_chain_testbench.LVDS2.int_data_out[25] trb_net_lvds_chain_testbench.LVDS2.int_data_out[24] trb_net_lvds_chain_testbench.LVDS2.int_data_out[23] trb_net_lvds_chain_testbench.LVDS2.int_data_out[22] trb_net_lvds_chain_testbench.LVDS2.int_data_out[21] trb_net_lvds_chain_testbench.LVDS2.int_data_out[20] trb_net_lvds_chain_testbench.LVDS2.int_data_out[19] trb_net_lvds_chain_testbench.LVDS2.int_data_out[18] trb_net_lvds_chain_testbench.LVDS2.int_data_out[17] trb_net_lvds_chain_testbench.LVDS2.int_data_out[16] trb_net_lvds_chain_testbench.LVDS2.int_data_out[15] trb_net_lvds_chain_testbench.LVDS2.int_data_out[14] trb_net_lvds_chain_testbench.LVDS2.int_data_out[13] trb_net_lvds_chain_testbench.LVDS2.int_data_out[12] trb_net_lvds_chain_testbench.LVDS2.int_data_out[11] trb_net_lvds_chain_testbench.LVDS2.int_data_out[10] trb_net_lvds_chain_testbench.LVDS2.int_data_out[9] trb_net_lvds_chain_testbench.LVDS2.int_data_out[8] trb_net_lvds_chain_testbench.LVDS2.int_data_out[7] trb_net_lvds_chain_testbench.LVDS2.int_data_out[6] trb_net_lvds_chain_testbench.LVDS2.int_data_out[5] trb_net_lvds_chain_testbench.LVDS2.int_data_out[4] trb_net_lvds_chain_testbench.LVDS2.int_data_out[3] trb_net_lvds_chain_testbench.LVDS2.int_data_out[2] trb_net_lvds_chain_testbench.LVDS2.int_data_out[1] trb_net_lvds_chain_testbench.LVDS2.int_data_out[0] @28 trb_net_lvds_chain_testbench.LVDS2.int_read_in trb_net_lvds_chain_testbench.LVDS2.int_dataready_out +@22 +#int_data_out[55:0] trb_net_lvds_chain_testbench.LVDS2.int_data_out[55] trb_net_lvds_chain_testbench.LVDS2.int_data_out[54] trb_net_lvds_chain_testbench.LVDS2.int_data_out[53] trb_net_lvds_chain_testbench.LVDS2.int_data_out[52] trb_net_lvds_chain_testbench.LVDS2.int_data_out[51] trb_net_lvds_chain_testbench.LVDS2.int_data_out[50] trb_net_lvds_chain_testbench.LVDS2.int_data_out[49] trb_net_lvds_chain_testbench.LVDS2.int_data_out[48] trb_net_lvds_chain_testbench.LVDS2.int_data_out[47] trb_net_lvds_chain_testbench.LVDS2.int_data_out[46] trb_net_lvds_chain_testbench.LVDS2.int_data_out[45] trb_net_lvds_chain_testbench.LVDS2.int_data_out[44] trb_net_lvds_chain_testbench.LVDS2.int_data_out[43] trb_net_lvds_chain_testbench.LVDS2.int_data_out[42] trb_net_lvds_chain_testbench.LVDS2.int_data_out[41] trb_net_lvds_chain_testbench.LVDS2.int_data_out[40] trb_net_lvds_chain_testbench.LVDS2.int_data_out[39] trb_net_lvds_chain_testbench.LVDS2.int_data_out[38] trb_net_lvds_chain_testbench.LVDS2.int_data_out[37] trb_net_lvds_chain_testbench.LVDS2.int_data_out[36] trb_net_lvds_chain_testbench.LVDS2.int_data_out[35] trb_net_lvds_chain_testbench.LVDS2.int_data_out[34] trb_net_lvds_chain_testbench.LVDS2.int_data_out[33] trb_net_lvds_chain_testbench.LVDS2.int_data_out[32] trb_net_lvds_chain_testbench.LVDS2.int_data_out[31] trb_net_lvds_chain_testbench.LVDS2.int_data_out[30] trb_net_lvds_chain_testbench.LVDS2.int_data_out[29] trb_net_lvds_chain_testbench.LVDS2.int_data_out[28] trb_net_lvds_chain_testbench.LVDS2.int_data_out[27] trb_net_lvds_chain_testbench.LVDS2.int_data_out[26] trb_net_lvds_chain_testbench.LVDS2.int_data_out[25] trb_net_lvds_chain_testbench.LVDS2.int_data_out[24] trb_net_lvds_chain_testbench.LVDS2.int_data_out[23] trb_net_lvds_chain_testbench.LVDS2.int_data_out[22] trb_net_lvds_chain_testbench.LVDS2.int_data_out[21] trb_net_lvds_chain_testbench.LVDS2.int_data_out[20] trb_net_lvds_chain_testbench.LVDS2.int_data_out[19] trb_net_lvds_chain_testbench.LVDS2.int_data_out[18] trb_net_lvds_chain_testbench.LVDS2.int_data_out[17] trb_net_lvds_chain_testbench.LVDS2.int_data_out[16] trb_net_lvds_chain_testbench.LVDS2.int_data_out[15] trb_net_lvds_chain_testbench.LVDS2.int_data_out[14] trb_net_lvds_chain_testbench.LVDS2.int_data_out[13] trb_net_lvds_chain_testbench.LVDS2.int_data_out[12] trb_net_lvds_chain_testbench.LVDS2.int_data_out[11] trb_net_lvds_chain_testbench.LVDS2.int_data_out[10] trb_net_lvds_chain_testbench.LVDS2.int_data_out[9] trb_net_lvds_chain_testbench.LVDS2.int_data_out[8] trb_net_lvds_chain_testbench.LVDS2.int_data_out[7] trb_net_lvds_chain_testbench.LVDS2.int_data_out[6] trb_net_lvds_chain_testbench.LVDS2.int_data_out[5] trb_net_lvds_chain_testbench.LVDS2.int_data_out[4] trb_net_lvds_chain_testbench.LVDS2.int_data_out[3] trb_net_lvds_chain_testbench.LVDS2.int_data_out[2] trb_net_lvds_chain_testbench.LVDS2.int_data_out[1] trb_net_lvds_chain_testbench.LVDS2.int_data_out[0] @200 -API (bounce) @28 diff --git a/testbench/trb_net_ibuf_testbench.vhd b/testbench/trb_net_ibuf_testbench.vhd index 8cd1f34..0080c2e 100644 --- a/testbench/trb_net_ibuf_testbench.vhd +++ b/testbench/trb_net_ibuf_testbench.vhd @@ -199,7 +199,7 @@ READ_BUF: process end trb_net_ibuf_testbench_arch; --- fuse -prj trb_net_fifo_testbench_beh.prj -top trb_net_fifo_testbench -o trb_net_fifo_testbench +-- fuse -prj trb_net_ibuf_testbench_beh.prj -top trb_net_ibuf_testbench -o trb_net_ibuf_testbench -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_std.vhd" -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_fifo.vhd" @@ -208,7 +208,7 @@ end trb_net_ibuf_testbench_arch; -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/xilinx/generic_shift.vhd" -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_fifo_testbench.vhd" --- trb_net_fifo_testbench -tclbatch testsim.tcl +-- trb_net_ibuf_testbench -tclbatch testsim.tcl -- ntrace select -o on -m / -l this -- ntrace start diff --git a/testbench/trb_net_lvds_chain_testbench_beh.prj b/testbench/trb_net_lvds_chain_testbench_beh.prj index b120cda..fa937d6 100644 --- a/testbench/trb_net_lvds_chain_testbench_beh.prj +++ b/testbench/trb_net_lvds_chain_testbench_beh.prj @@ -6,6 +6,10 @@ vhdl work "../trb_net_sbuf.vhd" vhdl work "../trb_net_ibuf.vhd" vhdl work "../trb_net_obuf.vhd" vhdl work "../trb_net_iobuf.vhd" +vhdl work "../trb_net_priority_encoder.vhd" +vhdl work "../trb_net_priority_arbiter.vhd" +vhdl work "../trb_net_pattern_gen.vhd" +vhdl work "../trb_net_io_multiplexer.vhd" vhdl work "../trb_net_active_api.vhd" vhdl work "../trb_net_active_apibuf.vhd" vhdl work "../trb_net_active_apimbuf.vhd" diff --git a/testbench/trb_net_obuf_testbench.vhd b/testbench/trb_net_obuf_testbench.vhd index b16b190..d765396 100644 --- a/testbench/trb_net_obuf_testbench.vhd +++ b/testbench/trb_net_obuf_testbench.vhd @@ -41,8 +41,6 @@ architecture trb_net_obuf_testbench_arch of trb_net_obuf_testbench is component trb_net_obuf - generic (DEPTH : integer := 3); -- Depth of the FIFO, 2^(n+1) - port( -- Misc CLK : in std_logic; @@ -52,12 +50,12 @@ architecture trb_net_obuf_testbench_arch of trb_net_obuf_testbench is MED_DATAREADY_OUT: out STD_LOGIC; MED_DATA_OUT: out STD_LOGIC_VECTOR (50 downto 0); -- Data word MED_READ_IN: in STD_LOGIC; - MED_ERROR_OUT: out STD_LOGIC_VECTOR (2 downto 0); -- Status bits + -- Internal direction port INT_DATAREADY_IN: in STD_LOGIC; INT_DATA_IN: in STD_LOGIC_VECTOR (50 downto 0); -- Data word INT_READ_OUT: out STD_LOGIC; - INT_ERROR_IN: in STD_LOGIC_VECTOR (2 downto 0); -- Status bits + -- Status and control port STAT_LOCKED: out STD_LOGIC_VECTOR (15 downto 0); CTRL_LOCKED: in STD_LOGIC_VECTOR (15 downto 0); @@ -77,7 +75,6 @@ begin INT_DATAREADY_IN => int_dataready_in, INT_DATA_IN => int_data_in, INT_READ_OUT => int_read_out, - INT_ERROR_IN => (others => '0'), MED_DATAREADY_OUT =>med_dataready_out, MED_DATA_OUT => med_data_out, MED_READ_IN => med_read_in, @@ -227,7 +224,7 @@ READ_BUF: process end trb_net_obuf_testbench_arch; --- fuse -prj trb_net_fifo_testbench_beh.prj -top trb_net_fifo_testbench -o trb_net_fifo_testbench +-- fuse -prj trb_net_obuf_testbench_beh.prj -top trb_net_obuf_testbench -o trb_net_obuf_testbench -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_std.vhd" -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_fifo.vhd" @@ -236,7 +233,7 @@ end trb_net_obuf_testbench_arch; -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/xilinx/generic_shift.vhd" -- vhdl work "/home/hadaq/acromag/design/DX2002test/trbnet/trb_net_fifo_testbench.vhd" --- trb_net_fifo_testbench -tclbatch testsim.tcl +-- trb_net_obuf_testbench -tclbatch testsim.tcl -- ntrace select -o on -m / -l this -- ntrace start diff --git a/trb_net_active_api.vhd b/trb_net_active_api.vhd index 1c45c8d..4f9296f 100644 --- a/trb_net_active_api.vhd +++ b/trb_net_active_api.vhd @@ -119,7 +119,8 @@ component trb_net_dummy_fifo is component trb_net_sbuf is - generic (DATA_WIDTH : integer := 56); + generic (DATA_WIDTH : integer := 56; + VERSION: integer := 1); port( -- Misc @@ -186,7 +187,7 @@ signal next_APL_DATAREADY_OUT, reg_APL_DATAREADY_OUT: std_logic; signal next_APL_DATA_OUT, reg_APL_DATA_OUT: std_logic_vector(47 downto 0); signal next_APL_TYP_OUT, reg_APL_TYP_OUT: std_logic_vector(2 downto 0); -type OUTPUT_SELECT is (HDR, DAT, TRM); +type OUTPUT_SELECT is (HDR, DAT, TRM, TRM_COMB); signal out_select:OUTPUT_SELECT; begin @@ -289,7 +290,7 @@ end generate CHECK_BUFFER2; INT_INIT_DATAREADY_IN, tb_next_registered_trailer, tb_registered_trailer, fifo_term_buffer_empty, fifo_term_buffer_data_out, - INT_REPLY_READ_IN, tb_registered_target) + INT_REPLY_READ_IN, tb_registered_target, APL_MY_ADDRESS_IN) begin -- process INT_INIT_READ_OUT <= '0'; fifo_term_buffer_data_in(TYPE_POSITION) <= TYPE_ILLEGAL; @@ -365,7 +366,8 @@ end generate CHECK_BUFFER2; INIT_SBUF: trb_net_sbuf - generic map (DATA_WIDTH => 51) + generic map (DATA_WIDTH => 51, + VERSION => 1) port map ( CLK => CLK, RESET => RESET, @@ -379,37 +381,45 @@ INIT_SBUF: trb_net_sbuf SYN_READ_IN => INT_INIT_READ_IN ); -sbuf_free <= sbuf_next_READ or INT_INIT_READ_IN; --sbuf killed in next cycle +--sbuf_free <= sbuf_next_READ or INT_INIT_READ_IN; --sbuf killed in next cycle +sbuf_free <= sbuf_next_READ; next_registered_trailer <= combined_trailer; --next_registered_header <= combined_header; next_APL_DATA_OUT <= fifo_to_apl_data_out(DWORD_POSITION); next_APL_TYP_OUT <= fifo_to_apl_data_out(TYPE_POSITION); - process (out_select, combined_header, registered_trailer) - begin - if out_select = HDR then + process (out_select, combined_header, registered_trailer, + fifo_to_int_data_out) + begin + if out_select = HDR then next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_HDR; next_INT_INIT_DATA_OUT(DWORD_POSITION) <= combined_header; - elsif out_select = TRM then + elsif out_select = TRM then next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_TRM; next_INT_INIT_DATA_OUT(DWORD_POSITION) <= registered_trailer; - else + elsif out_select = TRM_COMB then + next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_TRM; + next_INT_INIT_DATA_OUT(DWORD_POSITION) <= combined_trailer; + else next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_DAT; next_INT_INIT_DATA_OUT(DWORD_POSITION) <= fifo_to_int_data_out; - end if; - end process; + end if; + end process; + -- combinatorial part of state machine - STATE_COMB : process(current_state, APL_SEND_IN, combined_header, INT_INIT_READ_IN, - APL_WRITE_IN, fifo_to_int_empty, + STATE_COMB : process(current_state, APL_SEND_IN, combined_header, + INT_INIT_READ_IN, APL_WRITE_IN, fifo_to_int_empty, fifo_to_int_data_out, combined_trailer, - next_registered_trailer, fifo_to_int_data_out, fifo_to_apl_empty, - INT_REPLY_DATAREADY_IN, reg_INT_REPLY_READ_OUT,fifo_to_apl_read, - reg_APL_DATAREADY_OUT, fifo_to_apl_data_out, reg_APL_DATAREADY_OUT, - APL_READ_IN, sbuf_free, reg_APL_TYP_OUT) + next_registered_trailer, fifo_to_int_data_out, + fifo_to_apl_empty, INT_REPLY_DATAREADY_IN, + reg_INT_REPLY_READ_OUT,fifo_to_apl_read, + reg_APL_DATAREADY_OUT, fifo_to_apl_data_out, + reg_APL_DATAREADY_OUT, APL_READ_IN, sbuf_free, + reg_APL_TYP_OUT, APL_SHORT_TRANSFER_IN, fifo_to_apl_full) begin -- process next_state <= MY_ERROR; --- next_registered_header <= registered_header; --- update_registered_header <= '0'; +-- next_registered_header <= registered_header; update_registered_header +-- <= '0'; next_INT_INIT_DATAREADY_OUT <= '0'; out_select <= DAT; -- next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_ILLEGAL; @@ -495,7 +505,7 @@ next_APL_TYP_OUT <= fifo_to_apl_data_out(TYPE_POSITION); update_registered_trailer <= '1'; --next_registered_trailer <= combined_trailer; next_INT_INIT_DATAREADY_OUT <= '1'; - out_select <= TRM; + out_select <= TRM_COMB; -- next_INT_INIT_DATA_OUT(TYPE_POSITION) <= TYPE_TRM; -- next_INT_INIT_DATA_OUT(DWORD_POSITION) <= combined_trailer; else @@ -548,6 +558,7 @@ next_APL_TYP_OUT <= fifo_to_apl_data_out(TYPE_POSITION); elsif current_state = SEND_TRAILER then if sbuf_free = '1' then -- kill current trailer next_state <= WAITING; + out_select <= TRM; next_INT_INIT_DATAREADY_OUT <= '0'; else next_state <= SEND_TRAILER; diff --git a/trb_net_endpoint_3ch.vhd b/trb_net_endpoint_3ch.vhd index 86bd1f2..da6f3ae 100644 --- a/trb_net_endpoint_3ch.vhd +++ b/trb_net_endpoint_3ch.vhd @@ -389,6 +389,7 @@ begin CTRL_LOCKED => (others => '0'), STAT_CTRL_INIT_BUFFER => (others => '0'), STAT_CTRL_REPLY_BUFFER=> (others => '0'), + MPLEX_CTRL => APL_MPLEX_CTRL ); end generate; end generate; diff --git a/trb_net_ibuf.vhd b/trb_net_ibuf.vhd index c81ff40..b635a0b 100644 --- a/trb_net_ibuf.vhd +++ b/trb_net_ibuf.vhd @@ -60,7 +60,8 @@ end component; component trb_net_sbuf is - generic (DATA_WIDTH : integer := 56); + generic (DATA_WIDTH : integer := 56; + VERSION: integer := 1); port( -- Misc @@ -128,7 +129,7 @@ signal next_rec_buffer_size_out, current_rec_buffer_size_out -- this process controls the writing of the media into the fifo FILTER_DATAREADY_IN : process(MED_DATA_IN, MED_DATAREADY_IN, MED_ERROR_IN, fifo_full, is_locked, current_rec_buffer_size_out, - current_error_state) + current_error_state, reg_read_out) begin -- process got_ack_internal <= '0'; next_read_out <= '0'; @@ -203,7 +204,7 @@ reg_buffer: process(CLK) -- this process controls what will be forwarded to the internal point DATA_OUT : process (INT_HEADER_IN, fifo_data_out, - current_last_header, tmp_INT_DATAREADY_OUT, INT_READ_IN, + current_last_header, INT_READ_IN, release_locked, is_locked, sbuf_free, fifo_empty) begin -- tmp_INT_DATA_OUT <= (others => '1'); diff --git a/trb_net_io_multiplexer.vhd b/trb_net_io_multiplexer.vhd index 6187223..1e5b56d 100644 --- a/trb_net_io_multiplexer.vhd +++ b/trb_net_io_multiplexer.vhd @@ -60,7 +60,8 @@ architecture trb_net_io_multiplexer_arch of trb_net_io_multiplexer is component trb_net_sbuf is - generic (DATA_WIDTH : integer := 56); + generic (DATA_WIDTH : integer := 56; + VERSION: integer := 1); port( -- Misc @@ -111,6 +112,7 @@ architecture trb_net_io_multiplexer_arch of trb_net_io_multiplexer is -- signal sbuf_stat: STD_LOGIC_VECTOR (2*(2**MULT_WIDTH)-1 downto 0); signal tmp_INT_READ_OUT: STD_LOGIC_VECTOR ((2**MULT_WIDTH)-1 downto 0); + signal tmp_tmp_INT_READ_OUT: STD_LOGIC_VECTOR ((2**MULT_WIDTH)-1 downto 0); signal mux_read, mux_enable, mux_next_READ: STD_LOGIC; signal current_mux_buffer: STD_LOGIC_VECTOR (BUS_WIDTH-1 downto 0); @@ -194,12 +196,24 @@ ARBITER: trb_net_priority_arbiter CLK_EN => CLK_EN, INPUT_IN => INT_DATAREADY_IN, RESULT_OUT => tmp_INT_READ_OUT, - ENABLE => mux_enable, + ENABLE => mux_enable, CTRL => CTRL ); +-- process (tmp_tmp_INT_READ_OUT, mux_enable) +-- begin +-- if mux_enable = '1' then +-- tmp_INT_READ_OUT <= tmp_tmp_INT_READ_OUT; +-- else +-- tmp_INT_READ_OUT <= (others => '0'); +-- end if; +-- end process; + +-- <= so I have to gate it once more INT_READ_OUT <= tmp_INT_READ_OUT; + + MUX_SBUF: trb_net_sbuf generic map (DATA_WIDTH => BUS_WIDTH) port map ( diff --git a/trb_net_iobuf.vhd b/trb_net_iobuf.vhd index 61c48c4..c90ea91 100644 --- a/trb_net_iobuf.vhd +++ b/trb_net_iobuf.vhd @@ -134,7 +134,8 @@ architecture trb_net_iobuf_arch of trb_net_iobuf is END component; component trb_net_obuf is - + generic ( + DATA_COUNT_WIDTH : integer := 4); port( -- Misc CLK : in std_logic; @@ -269,6 +270,8 @@ architecture trb_net_iobuf_arch of trb_net_iobuf is end generate; INITOBUF : trb_net_obuf + generic map ( + DATA_COUNT_WIDTH => 16) port map ( CLK => CLK, RESET => RESET, @@ -286,6 +289,8 @@ architecture trb_net_iobuf_arch of trb_net_iobuf is ); REPLYOBUF : trb_net_obuf + generic map ( + DATA_COUNT_WIDTH => 16) port map ( CLK => CLK, RESET => RESET, diff --git a/trb_net_obuf.vhd b/trb_net_obuf.vhd index 0fb9814..e5042b7 100644 --- a/trb_net_obuf.vhd +++ b/trb_net_obuf.vhd @@ -105,7 +105,8 @@ architecture trb_net_obuf_arch of trb_net_obuf is decrease_TRANSMITTED_BUFFERS <= GOT_ACK_IN; comb_read <= '1'; INT_READ_OUT <= reg_INT_READ_OUT; - sbuf_free <= comb_next_read or MED_READ_IN; --sbuf killed +-- sbuf_free <= comb_next_read or MED_READ_IN; --sbuf killed + sbuf_free <= comb_next_read; COMB_NEXT_TRANSFER : process(current_NOP_word, MED_READ_IN, comb_next_read, CURRENT_DATA_COUNT,reg_SEND_ACK_IN,reg_INT_READ_OUT, @@ -130,25 +131,30 @@ architecture trb_net_obuf_arch of trb_net_obuf is else next_DATA_COUNT <= CURRENT_DATA_COUNT +1; end if; +-- If we are not able to fill ACK or EOB now, we have to stop activity + if (sent_ACK = '1' or sent_EOB = '1' ) then + next_INT_READ_OUT <= '0'; + if sent_ACK = '1' then --BUGBUG: next_SEND_ACK_IN should be a + --counter (2 may arrive) + next_SEND_ACK_IN <= '1'; + end if; + end if; -- Otherwise we fill the gap elsif sent_ACK = '1' and sbuf_free = '1' then current_output_buffer <= current_ACK_word; next_SEND_ACK_IN <= '0'; comb_dataready <= '1'; + next_INT_READ_OUT <= '0'; --stop activity to be on the save side + elsif sent_ACK = '1' and sbuf_free = '0' then + next_SEND_ACK_IN <= '1'; elsif sent_EOB = '1' and sbuf_free = '1' then current_output_buffer <= current_EOB_word; next_DATA_COUNT <= (others => '0'); increase_TRANSMITTED_BUFFERS <= '1'; comb_dataready <= '1'; + next_INT_READ_OUT <= '0'; --stop activity to be on the save side end if; --- If we are not able to fill ACK or EOB now, we have to stop activity - if (reg_INT_READ_OUT = '1' and INT_DATAREADY_IN = '1' - and (sent_ACK = '1' or sent_EOB = '1' )) then - next_INT_READ_OUT <= '0'; - if sent_ACK = '1' then - next_SEND_ACK_IN <= '1'; - end if; - end if; + --finally, block data read if the rec buffer is full if sent_data = '0' or (next_DATA_COUNT(DATA_COUNT_WIDTH-1 downto 0) = max_DATA_COUNT_minus_one(DATA_COUNT_WIDTH-1 downto 0)) or diff --git a/trb_net_sbuf.vhd b/trb_net_sbuf.vhd index ac38dff..8639b16 100644 --- a/trb_net_sbuf.vhd +++ b/trb_net_sbuf.vhd @@ -68,6 +68,9 @@ architecture trb_net_sbuf_arch of trb_net_sbuf is begin COMB_next_READ_OUT <= current_next_READ_OUT; + + + SYN_DATA_OUT <= current_b2_buffer; SYN_DATAREADY_OUT <= current_SYN_DATAREADY_OUT; @@ -76,7 +79,8 @@ architecture trb_net_sbuf_arch of trb_net_sbuf is combined_COMB_DATAREADY_IN <= (COMB_DATAREADY_IN and COMB_READ_IN); GEN1: if VERSION = 0 generate - MUX: process (use_current_b1_buffer) + MUX: process (use_current_b1_buffer, + COMB_DATA_IN, current_b1_buffer) begin -- simple MUX if use_current_b1_buffer = '1' then next_b2_buffer <= current_b1_buffer; @@ -92,7 +96,8 @@ architecture trb_net_sbuf_arch of trb_net_sbuf is COMB: process (current_buffer_state, COMB_DATAREADY_IN, COMB_READ_IN, SYN_READ_IN, COMB_DATA_IN, current_b1_buffer, current_b2_buffer, - current_SYN_DATAREADY_OUT, current_got_overflow) + current_SYN_DATAREADY_OUT, current_got_overflow, + combined_COMB_DATAREADY_IN, current_next_READ_OUT) begin -- process COMB next_buffer_state <= current_buffer_state; next_next_READ_OUT <= '1'; @@ -163,6 +168,9 @@ begin -- process COMB next_SYN_DATAREADY_OUT <= '1'; elsif SYN_READ_IN = '1' then next_buffer_state <= BUFFER_B2_FULL; + use_current_b1_buffer <= '1'; + move_b1_buffer <= '1'; + move_b2_buffer <= '1'; next_next_READ_OUT <= '0'; next_SYN_DATAREADY_OUT <= '1'; else @@ -171,6 +179,20 @@ begin -- process COMB next_SYN_DATAREADY_OUT <= '1'; end if; end if; + + -- for version1 it is more complicated: we have to gate + -- the signal: when somebody is writing, we have to stop + -- all the activity. I do this in the following way: If I + -- promised to take the data, I stop the data taking in the + -- following cycle. This reduces the bandwidth by a factor of + -- 2 + + if VERSION = 1 then + if current_next_READ_OUT = '1' then + next_next_READ_OUT <= '0'; + end if; + end if; + end process COMB; diff --git a/xilinx/trb_net_fifo_arch.vhd b/xilinx/trb_net_fifo_arch.vhd index f768a65..c4af78f 100644 --- a/xilinx/trb_net_fifo_arch.vhd +++ b/xilinx/trb_net_fifo_arch.vhd @@ -72,7 +72,8 @@ begin end process; -- adress logic - comb_counter: process(WRITE_ENABLE_IN, READ_ENABLE_IN, current_ADDRESS_SRL) + comb_counter: process(WRITE_ENABLE_IN, READ_ENABLE_IN, current_ADDRESS_SRL, + current_EMPTY, current_FULL) begin -- no activity if WRITE_ENABLE_IN = '0' and READ_ENABLE_IN = '0' then -- 2.43.0