From: hadeshyp Date: Fri, 2 Mar 2007 13:44:24 +0000 (+0000) Subject: added lvds test bench, Ingo X-Git-Tag: oldGBE~751 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=5b270a4d88eb81c05ad33b2694d3eefe7b52635c;p=trbnet.git added lvds test bench, Ingo --- diff --git a/testbench/lvds_chain_testsim.tcl b/testbench/lvds_chain_testsim.tcl new file mode 100644 index 0000000..d81c1e5 --- /dev/null +++ b/testbench/lvds_chain_testsim.tcl @@ -0,0 +1,17 @@ +vcd dumpfile vcdfile.vcd +vcd dumpvars lvds +vcd dumpvars -m /APL1/ +vcd dumpvars -m /API1/MPLEX/ +vcd dumpvars -m /API1/ACTIVE_API/ +vcd dumpvars -m /API1/ACTIVE_API/INIT_SBUF/ +vcd dumpvars -m /API1/ACTIVE_API/FIFO_TO_INT/ +vcd dumpvars -m /API1/IOBUF/ +vcd dumpvars -m /API1/IOBUF/INITOBUF/ +vcd dumpvars -m /API1/IOBUF/REPLYIBUF/ +vcd dumpvars -m /API2/IOBUF/INITIBUF/ +vcd dumpvars -m /API2/IOBUF/INITOBUF/ +vcd dumpvars -m /API2/ACTIVE_API/ +vcd dumpvars -m /LVDS1/ +vcd dumpvars -m /LVDS2/ +run 10000 ns +quit \ No newline at end of file diff --git a/testbench/settings_lvds_chain.sav b/testbench/settings_lvds_chain.sav new file mode 100644 index 0000000..12ced52 --- /dev/null +++ b/testbench/settings_lvds_chain.sav @@ -0,0 +1,98 @@ +[size] 1272 936 +[pos] -1 -1 +*-29.799541 160100000 -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 +trb_net_lvds_chain_testbench.APL1.apl_write_out +trb_net_lvds_chain_testbench.APL1.apl_fifo_full_in +@22 +#apl_data_out[47:0] trb_net_lvds_chain_testbench.APL1.apl_data_out[47] trb_net_lvds_chain_testbench.APL1.apl_data_out[46] trb_net_lvds_chain_testbench.APL1.apl_data_out[45] trb_net_lvds_chain_testbench.APL1.apl_data_out[44] trb_net_lvds_chain_testbench.APL1.apl_data_out[43] trb_net_lvds_chain_testbench.APL1.apl_data_out[42] trb_net_lvds_chain_testbench.APL1.apl_data_out[41] trb_net_lvds_chain_testbench.APL1.apl_data_out[40] trb_net_lvds_chain_testbench.APL1.apl_data_out[39] trb_net_lvds_chain_testbench.APL1.apl_data_out[38] trb_net_lvds_chain_testbench.APL1.apl_data_out[37] trb_net_lvds_chain_testbench.APL1.apl_data_out[36] trb_net_lvds_chain_testbench.APL1.apl_data_out[35] trb_net_lvds_chain_testbench.APL1.apl_data_out[34] trb_net_lvds_chain_testbench.APL1.apl_data_out[33] trb_net_lvds_chain_testbench.APL1.apl_data_out[32] trb_net_lvds_chain_testbench.APL1.apl_data_out[31] trb_net_lvds_chain_testbench.APL1.apl_data_out[30] trb_net_lvds_chain_testbench.APL1.apl_data_out[29] trb_net_lvds_chain_testbench.APL1.apl_data_out[28] trb_net_lvds_chain_testbench.APL1.apl_data_out[27] trb_net_lvds_chain_testbench.APL1.apl_data_out[26] trb_net_lvds_chain_testbench.APL1.apl_data_out[25] trb_net_lvds_chain_testbench.APL1.apl_data_out[24] trb_net_lvds_chain_testbench.APL1.apl_data_out[23] trb_net_lvds_chain_testbench.APL1.apl_data_out[22] trb_net_lvds_chain_testbench.APL1.apl_data_out[21] trb_net_lvds_chain_testbench.APL1.apl_data_out[20] trb_net_lvds_chain_testbench.APL1.apl_data_out[19] trb_net_lvds_chain_testbench.APL1.apl_data_out[18] trb_net_lvds_chain_testbench.APL1.apl_data_out[17] trb_net_lvds_chain_testbench.APL1.apl_data_out[16] trb_net_lvds_chain_testbench.APL1.apl_data_out[15] trb_net_lvds_chain_testbench.APL1.apl_data_out[14] trb_net_lvds_chain_testbench.APL1.apl_data_out[13] trb_net_lvds_chain_testbench.APL1.apl_data_out[12] trb_net_lvds_chain_testbench.APL1.apl_data_out[11] trb_net_lvds_chain_testbench.APL1.apl_data_out[10] trb_net_lvds_chain_testbench.APL1.apl_data_out[9] trb_net_lvds_chain_testbench.APL1.apl_data_out[8] trb_net_lvds_chain_testbench.APL1.apl_data_out[7] trb_net_lvds_chain_testbench.APL1.apl_data_out[6] trb_net_lvds_chain_testbench.APL1.apl_data_out[5] trb_net_lvds_chain_testbench.APL1.apl_data_out[4] trb_net_lvds_chain_testbench.APL1.apl_data_out[3] trb_net_lvds_chain_testbench.APL1.apl_data_out[2] trb_net_lvds_chain_testbench.APL1.apl_data_out[1] trb_net_lvds_chain_testbench.APL1.apl_data_out[0] +@28 +trb_net_lvds_chain_testbench.APL1.apl_send_out +@22 +#apl_data_in[47:0] trb_net_lvds_chain_testbench.APL1.apl_data_in[47] trb_net_lvds_chain_testbench.APL1.apl_data_in[46] trb_net_lvds_chain_testbench.APL1.apl_data_in[45] trb_net_lvds_chain_testbench.APL1.apl_data_in[44] trb_net_lvds_chain_testbench.APL1.apl_data_in[43] trb_net_lvds_chain_testbench.APL1.apl_data_in[42] trb_net_lvds_chain_testbench.APL1.apl_data_in[41] trb_net_lvds_chain_testbench.APL1.apl_data_in[40] trb_net_lvds_chain_testbench.APL1.apl_data_in[39] trb_net_lvds_chain_testbench.APL1.apl_data_in[38] trb_net_lvds_chain_testbench.APL1.apl_data_in[37] trb_net_lvds_chain_testbench.APL1.apl_data_in[36] trb_net_lvds_chain_testbench.APL1.apl_data_in[35] trb_net_lvds_chain_testbench.APL1.apl_data_in[34] trb_net_lvds_chain_testbench.APL1.apl_data_in[33] trb_net_lvds_chain_testbench.APL1.apl_data_in[32] trb_net_lvds_chain_testbench.APL1.apl_data_in[31] trb_net_lvds_chain_testbench.APL1.apl_data_in[30] trb_net_lvds_chain_testbench.APL1.apl_data_in[29] trb_net_lvds_chain_testbench.APL1.apl_data_in[28] trb_net_lvds_chain_testbench.APL1.apl_data_in[27] trb_net_lvds_chain_testbench.APL1.apl_data_in[26] trb_net_lvds_chain_testbench.APL1.apl_data_in[25] trb_net_lvds_chain_testbench.APL1.apl_data_in[24] trb_net_lvds_chain_testbench.APL1.apl_data_in[23] trb_net_lvds_chain_testbench.APL1.apl_data_in[22] trb_net_lvds_chain_testbench.APL1.apl_data_in[21] trb_net_lvds_chain_testbench.APL1.apl_data_in[20] trb_net_lvds_chain_testbench.APL1.apl_data_in[19] trb_net_lvds_chain_testbench.APL1.apl_data_in[18] trb_net_lvds_chain_testbench.APL1.apl_data_in[17] trb_net_lvds_chain_testbench.APL1.apl_data_in[16] trb_net_lvds_chain_testbench.APL1.apl_data_in[15] trb_net_lvds_chain_testbench.APL1.apl_data_in[14] trb_net_lvds_chain_testbench.APL1.apl_data_in[13] trb_net_lvds_chain_testbench.APL1.apl_data_in[12] trb_net_lvds_chain_testbench.APL1.apl_data_in[11] trb_net_lvds_chain_testbench.APL1.apl_data_in[10] trb_net_lvds_chain_testbench.APL1.apl_data_in[9] trb_net_lvds_chain_testbench.APL1.apl_data_in[8] trb_net_lvds_chain_testbench.APL1.apl_data_in[7] trb_net_lvds_chain_testbench.APL1.apl_data_in[6] trb_net_lvds_chain_testbench.APL1.apl_data_in[5] trb_net_lvds_chain_testbench.APL1.apl_data_in[4] trb_net_lvds_chain_testbench.APL1.apl_data_in[3] trb_net_lvds_chain_testbench.APL1.apl_data_in[2] trb_net_lvds_chain_testbench.APL1.apl_data_in[1] trb_net_lvds_chain_testbench.APL1.apl_data_in[0] +@28 +#apl_typ_in[2:0] trb_net_lvds_chain_testbench.APL1.apl_typ_in[2] trb_net_lvds_chain_testbench.APL1.apl_typ_in[1] trb_net_lvds_chain_testbench.APL1.apl_typ_in[0] +trb_net_lvds_chain_testbench.APL1.apl_dataready_in +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] +@200 +-API +@28 +trb_net_lvds_chain_testbench.API1.ACTIVE_API.int_init_dataready_out +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] +@28 +trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_read +@22 +#fifo_to_int_data_out[47:0] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[47] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[46] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[45] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[44] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[43] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[42] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[41] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[40] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[39] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[38] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[37] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[36] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[35] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[34] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[33] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[32] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[31] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[30] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[29] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[28] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[27] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[26] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[25] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[24] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[23] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[22] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[21] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[20] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[19] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[18] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[17] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[16] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[15] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[14] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[13] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[12] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[11] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[10] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[9] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[8] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[7] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[6] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[5] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[4] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[3] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[2] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_data_out[1] trb_net_lvds_chain_testbench.API1.ACTIVE_API.fifo_to_int_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] +@200 +-OBUF +@28 +trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_dataready_out +@22 +#med_data_out[50:0] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[50] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[49] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[48] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[47] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[46] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[45] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[44] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[43] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[42] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[41] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[40] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[39] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[38] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[37] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[36] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[35] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[34] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[33] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[32] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[31] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[30] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[29] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[28] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[27] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[26] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[25] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[24] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[23] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[22] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[21] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[20] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[19] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[18] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[17] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[16] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[15] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[14] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[13] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[12] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[11] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[10] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[9] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[8] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[7] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[6] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[5] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[4] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[3] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[2] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[1] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.med_data_out[0] +@28 +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] +@22 +#stat_locked[15:0] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[15] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[14] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[13] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[12] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[11] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[10] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[9] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[8] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[7] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[6] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[5] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[4] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[3] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[2] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[1] trb_net_lvds_chain_testbench.API1.IOBUF.INITOBUF.stat_locked[0] +@200 +- +-LVDS +@22 +#int_data_in[55:0] trb_net_lvds_chain_testbench.LVDS1.int_data_in[55] trb_net_lvds_chain_testbench.LVDS1.int_data_in[54] trb_net_lvds_chain_testbench.LVDS1.int_data_in[53] trb_net_lvds_chain_testbench.LVDS1.int_data_in[52] trb_net_lvds_chain_testbench.LVDS1.int_data_in[51] trb_net_lvds_chain_testbench.LVDS1.int_data_in[50] trb_net_lvds_chain_testbench.LVDS1.int_data_in[49] trb_net_lvds_chain_testbench.LVDS1.int_data_in[48] trb_net_lvds_chain_testbench.LVDS1.int_data_in[47] trb_net_lvds_chain_testbench.LVDS1.int_data_in[46] trb_net_lvds_chain_testbench.LVDS1.int_data_in[45] trb_net_lvds_chain_testbench.LVDS1.int_data_in[44] trb_net_lvds_chain_testbench.LVDS1.int_data_in[43] trb_net_lvds_chain_testbench.LVDS1.int_data_in[42] trb_net_lvds_chain_testbench.LVDS1.int_data_in[41] trb_net_lvds_chain_testbench.LVDS1.int_data_in[40] trb_net_lvds_chain_testbench.LVDS1.int_data_in[39] trb_net_lvds_chain_testbench.LVDS1.int_data_in[38] trb_net_lvds_chain_testbench.LVDS1.int_data_in[37] trb_net_lvds_chain_testbench.LVDS1.int_data_in[36] trb_net_lvds_chain_testbench.LVDS1.int_data_in[35] trb_net_lvds_chain_testbench.LVDS1.int_data_in[34] trb_net_lvds_chain_testbench.LVDS1.int_data_in[33] trb_net_lvds_chain_testbench.LVDS1.int_data_in[32] trb_net_lvds_chain_testbench.LVDS1.int_data_in[31] trb_net_lvds_chain_testbench.LVDS1.int_data_in[30] trb_net_lvds_chain_testbench.LVDS1.int_data_in[29] trb_net_lvds_chain_testbench.LVDS1.int_data_in[28] trb_net_lvds_chain_testbench.LVDS1.int_data_in[27] trb_net_lvds_chain_testbench.LVDS1.int_data_in[26] trb_net_lvds_chain_testbench.LVDS1.int_data_in[25] trb_net_lvds_chain_testbench.LVDS1.int_data_in[24] trb_net_lvds_chain_testbench.LVDS1.int_data_in[23] trb_net_lvds_chain_testbench.LVDS1.int_data_in[22] trb_net_lvds_chain_testbench.LVDS1.int_data_in[21] trb_net_lvds_chain_testbench.LVDS1.int_data_in[20] trb_net_lvds_chain_testbench.LVDS1.int_data_in[19] trb_net_lvds_chain_testbench.LVDS1.int_data_in[18] trb_net_lvds_chain_testbench.LVDS1.int_data_in[17] trb_net_lvds_chain_testbench.LVDS1.int_data_in[16] trb_net_lvds_chain_testbench.LVDS1.int_data_in[15] trb_net_lvds_chain_testbench.LVDS1.int_data_in[14] trb_net_lvds_chain_testbench.LVDS1.int_data_in[13] trb_net_lvds_chain_testbench.LVDS1.int_data_in[12] trb_net_lvds_chain_testbench.LVDS1.int_data_in[11] trb_net_lvds_chain_testbench.LVDS1.int_data_in[10] trb_net_lvds_chain_testbench.LVDS1.int_data_in[9] trb_net_lvds_chain_testbench.LVDS1.int_data_in[8] trb_net_lvds_chain_testbench.LVDS1.int_data_in[7] trb_net_lvds_chain_testbench.LVDS1.int_data_in[6] trb_net_lvds_chain_testbench.LVDS1.int_data_in[5] trb_net_lvds_chain_testbench.LVDS1.int_data_in[4] trb_net_lvds_chain_testbench.LVDS1.int_data_in[3] trb_net_lvds_chain_testbench.LVDS1.int_data_in[2] trb_net_lvds_chain_testbench.LVDS1.int_data_in[1] trb_net_lvds_chain_testbench.LVDS1.int_data_in[0] +@28 +trb_net_lvds_chain_testbench.LVDS1.int_read_out +trb_net_lvds_chain_testbench.LVDS1.int_dataready_in +#med_data_out[12:0] trb_net_lvds_chain_testbench.LVDS1.med_data_out[12] trb_net_lvds_chain_testbench.LVDS1.med_data_out[11] trb_net_lvds_chain_testbench.LVDS1.med_data_out[10] trb_net_lvds_chain_testbench.LVDS1.med_data_out[9] trb_net_lvds_chain_testbench.LVDS1.med_data_out[8] trb_net_lvds_chain_testbench.LVDS1.med_data_out[7] trb_net_lvds_chain_testbench.LVDS1.med_data_out[6] trb_net_lvds_chain_testbench.LVDS1.med_data_out[5] trb_net_lvds_chain_testbench.LVDS1.med_data_out[4] trb_net_lvds_chain_testbench.LVDS1.med_data_out[3] trb_net_lvds_chain_testbench.LVDS1.med_data_out[2] trb_net_lvds_chain_testbench.LVDS1.med_data_out[1] trb_net_lvds_chain_testbench.LVDS1.med_data_out[0] +trb_net_lvds_chain_testbench.LVDS1.med_transmission_clk_out +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] +@29 +trb_net_lvds_chain_testbench.LVDS2.int_read_in +@28 +trb_net_lvds_chain_testbench.LVDS2.int_dataready_out +@200 +- +-IBUF (Rec) +@22 +#stat_locked[15:0] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[15] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[14] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[13] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[12] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[11] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[10] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[9] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[8] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[7] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[6] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[5] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[4] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[3] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[2] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[1] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_locked[0] +@28 +trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_read_in +@22 +#fifo_data_out[50:0] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[50] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[49] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[48] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[47] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[46] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[45] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[44] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[43] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[42] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[41] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[40] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[39] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[38] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[37] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[36] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[35] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[34] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[33] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[32] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[31] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[30] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[29] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[28] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[27] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[26] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[25] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[24] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[23] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[22] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[21] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[20] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[19] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[18] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[17] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[16] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[15] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[14] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[13] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[12] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[11] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[10] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[9] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[8] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[7] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[6] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[5] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[4] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[3] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[2] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[1] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.fifo_data_out[0] +#int_data_out[50:0] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[50] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[49] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[48] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[47] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[46] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[45] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[44] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[43] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[42] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[41] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[40] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[39] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[38] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[37] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[36] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[35] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[34] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[33] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[32] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[31] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[30] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[29] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[28] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[27] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[26] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[25] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[24] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[23] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[22] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[21] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[20] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[19] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[18] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[17] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[16] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[15] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[14] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[13] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[12] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[11] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[10] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[9] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[8] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[7] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[6] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[5] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[4] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[3] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[2] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[1] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.int_data_out[0] +@28 +trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.reg_eob_out +@22 +#stat_buffer[31:0] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[31] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[30] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[29] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[28] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[27] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[26] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[25] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[24] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[23] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[22] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[21] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[20] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[19] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[18] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[17] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[16] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[15] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[14] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[13] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[12] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[11] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[10] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[9] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[8] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[7] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[6] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[5] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[4] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[3] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[2] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[1] trb_net_lvds_chain_testbench.API2.IOBUF.INITIBUF.stat_buffer[0] +@200 +-API (bounce) +@28 +trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_dataready_out +trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_read_in +@22 +#int_reply_data_out[50:0] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[50] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[49] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[48] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[47] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[46] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[45] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[44] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[43] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[42] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[41] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[40] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[39] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[38] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[37] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[36] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[35] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[34] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[33] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[32] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[31] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[30] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[29] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[28] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[27] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[26] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[25] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[24] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[23] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[22] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[21] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[20] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[19] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[18] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[17] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[16] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[15] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[14] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[13] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[12] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[11] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[10] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[9] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[8] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[7] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[6] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[5] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[4] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[3] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[2] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[1] trb_net_lvds_chain_testbench.API2.ACTIVE_API.int_reply_data_out[0] +@28 +trb_net_lvds_chain_testbench.API1.ACTIVE_API.INIT_SBUF.next_got_overflow diff --git a/testbench/trb_net_active_api_testbench_beh.prj b/testbench/trb_net_active_api_testbench_beh.prj new file mode 100644 index 0000000..5b8c3b6 --- /dev/null +++ b/testbench/trb_net_active_api_testbench_beh.prj @@ -0,0 +1,6 @@ +vhdl work "../trb_net_std.vhd" +vhdl work "../trb_net_fifo.vhd" +vhdl work "../xilinx/trb_net_fifo_arch.vhd" +vhdl work "../xilinx/shift_lut_x16.vhd" +vhdl work "../trb_net_active_api.vhd" +vhdl work "trb_net_active_api_testbench.vhd" diff --git a/testbench/trb_net_lvds_chain_testbench.vhd b/testbench/trb_net_lvds_chain_testbench.vhd new file mode 100644 index 0000000..60b8046 --- /dev/null +++ b/testbench/trb_net_lvds_chain_testbench.vhd @@ -0,0 +1,521 @@ +library ieee; + +use ieee.std_logic_1164.all; +USE ieee.std_logic_signed.ALL; +USE ieee.std_logic_arith.ALL; + +USE std.textio.ALL; +USE ieee.std_logic_textio.ALL; + +entity trb_net_lvds_chain_testbench is + +end trb_net_lvds_chain_testbench; + +architecture trb_net_lvds_chain_testbench_arch of trb_net_lvds_chain_testbench is + + signal clk : std_logic := '0'; + signal reset : std_logic := '1'; + +component trb_net_med_13bit_slow is +generic( + TRANSMISSION_CLOCK_DIVIDER: integer := 1 + ); + + + port( + -- Misc + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + -- Internal direction port (MII) + -- do not change this interface!!! + -- 1st part: from the medium to the internal logic (trbnet) + INT_DATAREADY_OUT: out STD_LOGIC; --Data word is reconstructed from media + --and ready to be read out (the IOBUF MUST read) + INT_DATA_OUT: out STD_LOGIC_VECTOR (55 downto 0); -- Data word + INT_READ_IN: in STD_LOGIC; + INT_ERROR_OUT: out STD_LOGIC_VECTOR (2 downto 0); -- Status bits + -- 2nd part: from the internal logic (trbnet) to the medium + INT_DATAREADY_IN: in STD_LOGIC; -- Data word is offered for the Media + INT_DATA_IN: in STD_LOGIC_VECTOR (55 downto 0); -- Data word + INT_READ_OUT: out STD_LOGIC; -- offered word is read + INT_ERROR_IN: in STD_LOGIC_VECTOR (2 downto 0); -- Status bits + -- (end do not change this interface!!!) + + + -- Media direction port + -- in this case for the cable => 32 lines in total + MED_DATA_OUT: out STD_LOGIC_VECTOR (12 downto 0); -- Data word + --(incl. debugging errorbits) + MED_TRANSMISSION_CLK_OUT: out STD_LOGIC; + MED_CARRIER_OUT: out STD_LOGIC; + MED_PARITY_OUT: out STD_LOGIC; + MED_DATA_IN: in STD_LOGIC_VECTOR (12 downto 0); -- Data word + MED_TRANSMISSION_CLK_IN: in STD_LOGIC; + MED_CARRIER_IN: in STD_LOGIC; + MED_PARITY_IN: in STD_LOGIC; + + -- Status and control port => this never can hurt + STAT: out STD_LOGIC_VECTOR (31 downto 0); + --STAT(0): Busy reading from media + --STAT(1): Busy writing to media + --STAT(31 downto 24): Datain(63 downto 56 + CTRL: in STD_LOGIC_VECTOR (31 downto 0) + --CTRL(24..31) -> lvds-data(63 downto 56) via lvds + --once for each packet + --CTRL(16..18) -> debugbits updated every CLK + --lvds(12 downto 10)(10bit-version only) + --CTRL(0..5) -> lvds-data(69 downto 64) (10bit-version only) + ); +end component; + +component trb_net_active_apimbuf is + + generic (INIT_DEPTH : integer := 3; -- Depth of the FIFO, 2^(n+1), if + -- the initibuf + REPLY_DEPTH : integer := 3; -- or the replyibuf + FIFO_TO_INT_DEPTH : integer := 3; -- Depth of the FIFO, 2^(n+1), + -- for the direction to + -- internal world + FIFO_TO_APL_DEPTH : integer := 3; -- direction to application + FIFO_TERM_BUFFER_DEPTH : integer := 0 -- fifo for auto-answering of + -- the master path, if set to 0 + -- no buffer is used at all + ); + + port( + -- Misc + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + -- Media direction port + MED_DATAREADY_OUT: out STD_LOGIC; --Data word ready to be read out + --by the media (via the TrbNetIOMultiplexer) + MED_DATA_OUT: out STD_LOGIC_VECTOR (51 downto 0); -- Data word + MED_READ_IN: in STD_LOGIC; -- Media is reading + + MED_DATAREADY_IN: in STD_LOGIC; -- Data word is offered by the Media + -- (the IOBUF MUST read) + MED_DATA_IN: in STD_LOGIC_VECTOR (51 downto 0); -- Data word + MED_READ_OUT: out STD_LOGIC; -- buffer reads a word from media + MED_ERROR_IN: in STD_LOGIC_VECTOR (2 downto 0); -- Status bits + + -- APL Transmitter port + APL_DATA_IN: in STD_LOGIC_VECTOR (47 downto 0); -- Data word "application to network" + APL_WRITE_IN: in STD_LOGIC; -- Data word is valid and should be transmitted + APL_FIFO_FULL_OUT: out STD_LOGIC; -- Stop transfer, the fifo is full + APL_SHORT_TRANSFER_IN: in STD_LOGIC; -- + APL_DTYPE_IN: in STD_LOGIC_VECTOR (3 downto 0); -- see NewTriggerBusNetworkDescr + APL_ERROR_PATTERN_IN: in STD_LOGIC_VECTOR (31 downto 0); -- see NewTriggerBusNetworkDescr + APL_SEND_IN: in STD_LOGIC; -- Release sending of the data + APL_TARGET_ADDRESS_IN: in STD_LOGIC_VECTOR (15 downto 0); -- Address of + -- the target (only for active APIs) + + -- Receiver port + APL_DATA_OUT: out STD_LOGIC_VECTOR (47 downto 0); -- Data word "network to application" + APL_TYP_OUT: out STD_LOGIC_VECTOR (2 downto 0); -- Which kind of data word: DAT, HDR or TRM + APL_DATAREADY_OUT: out STD_LOGIC; -- Data word is valid and might be read out + APL_READ_IN: in STD_LOGIC; -- Read data word + + -- APL Control port + APL_RUN_OUT: out STD_LOGIC; -- Data transfer is running + APL_MY_ADDRESS_IN: in STD_LOGIC_VECTOR (15 downto 0); -- My own address (temporary solution!!!) + APL_SEQNR_OUT: out STD_LOGIC_VECTOR (7 downto 0); + + -- Status and control port => just coming from the iobuf for debugging + STAT_GEN: out STD_LOGIC_VECTOR (31 downto 0); -- General Status + STAT_LOCKED: out STD_LOGIC_VECTOR (31 downto 0); -- Status of the handshake and buffer control + STAT_INIT_BUFFER: out STD_LOGIC_VECTOR (31 downto 0); -- Status of the handshake and buffer control + STAT_REPLY_BUFFER: out STD_LOGIC_VECTOR (31 downto 0); -- General Status + CTRL_GEN: in STD_LOGIC_VECTOR (31 downto 0); + CTRL_LOCKED: in STD_LOGIC_VECTOR (31 downto 0); + STAT_CTRL_INIT_BUFFER: in STD_LOGIC_VECTOR (31 downto 0); + STAT_CTRL_REPLY_BUFFER: in STD_LOGIC_VECTOR (31 downto 0); + MPLEX_CTRL: in STD_LOGIC_VECTOR (31 downto 0) + ); +END component; + + +component trb_net_dummy_apl + generic (TARGET_ADDRESS : STD_LOGIC_VECTOR (15 downto 0) := x"ffff"; + PREFILL_LENGTH : integer := 3; + TRANSFER_LENGTH : integer := 6); -- length of dummy data + + port( + -- Misc + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + -- APL Transmitter port + APL_DATA_OUT: out STD_LOGIC_VECTOR (47 downto 0); -- Data word "application to network" + APL_WRITE_OUT: out STD_LOGIC; -- Data word is valid and should be transmitted + APL_FIFO_FULL_IN: in STD_LOGIC; -- Stop transfer, the fifo is full + APL_SHORT_TRANSFER_OUT: out STD_LOGIC; -- + APL_DTYPE_OUT: out STD_LOGIC_VECTOR (3 downto 0); -- see NewTriggerBusNetworkDescr + APL_ERROR_PATTERN_OUT: out STD_LOGIC_VECTOR (31 downto 0); -- see NewTriggerBusNetworkDescr + APL_SEND_OUT: out STD_LOGIC; -- Release sending of the data + APL_TARGET_ADDRESS_OUT: out STD_LOGIC_VECTOR (15 downto 0); -- Address of + -- the target (only for active APIs) + + -- Receiver port + APL_DATA_IN: in STD_LOGIC_VECTOR (47 downto 0); -- Data word "network to application" + APL_TYP_IN: in STD_LOGIC_VECTOR (2 downto 0); -- Which kind of data word: DAT, HDR or TRM + APL_DATAREADY_IN: in STD_LOGIC; -- Data word is valid and might be read out + APL_READ_OUT: out STD_LOGIC; -- Read data word + + -- APL Control port + APL_RUN_IN: in STD_LOGIC; -- Data transfer is running + APL_SEQNR_IN: in STD_LOGIC_VECTOR (7 downto 0) + ); +END component; + + +signal apl_data_out_apl1: STD_LOGIC_VECTOR (47 downto 0); +signal apl_write_apl1: STD_LOGIC; +signal apl_fifo_full_apl1: STD_LOGIC; +signal apl_short_transfer_apl1: STD_LOGIC; +signal apl_dtype_apl1: STD_LOGIC_VECTOR (3 downto 0); +signal apl_error_pattern_apl1: STD_LOGIC_VECTOR (31 downto 0); +signal apl_send_apl1: STD_LOGIC; +signal apl_target_adress_apl1: STD_LOGIC_VECTOR (15 downto 0); +signal apl_data_in_apl1: STD_LOGIC_VECTOR (47 downto 0); +signal apl_typ_apl1: STD_LOGIC_VECTOR (2 downto 0); +signal apl_dataready_apl1: STD_LOGIC; +signal apl_read_apl1: STD_LOGIC; +signal apl_run_apl1: STD_LOGIC; +signal apl_seqnr_apl1: STD_LOGIC_VECTOR (7 downto 0); + +signal apl_data_out_apl2: STD_LOGIC_VECTOR (47 downto 0); +signal apl_write_apl2: STD_LOGIC; +signal apl_fifo_full_apl2: STD_LOGIC; +signal apl_short_transfer_apl2: STD_LOGIC; +signal apl_dtype_apl2: STD_LOGIC_VECTOR (3 downto 0); +signal apl_error_pattern_apl2: STD_LOGIC_VECTOR (31 downto 0); +signal apl_send_apl2: STD_LOGIC; +signal apl_target_adress_apl2: STD_LOGIC_VECTOR (15 downto 0); +signal apl_data_in_apl2: STD_LOGIC_VECTOR (47 downto 0); +signal apl_typ_apl2: STD_LOGIC_VECTOR (2 downto 0); +signal apl_dataready_apl2: STD_LOGIC; +signal apl_read_apl2: STD_LOGIC; +signal apl_run_apl2: STD_LOGIC; +signal apl_seqnr_apl2: STD_LOGIC_VECTOR (7 downto 0); + + +signal MED_DATAREADY_1_to_2_api1: STD_LOGIC; +signal MED_DATAREADY_1_to_2_api2: STD_LOGIC; +signal MED_DATA_1_to_2_api1: STD_LOGIC_VECTOR (51 downto 0); +signal MED_DATA_1_to_2_api1_m: STD_LOGIC_VECTOR (55 downto 0); +signal MED_DATA_1_to_2_api2: STD_LOGIC_VECTOR (51 downto 0); +signal MED_DATA_1_to_2_api2_m: STD_LOGIC_VECTOR (55 downto 0); +signal MED_READ_1_to_2_api1: STD_LOGIC; +signal MED_READ_1_to_2_api2: STD_LOGIC; +signal MED_DATAREADY_2_to_1_api1: STD_LOGIC; +signal MED_DATAREADY_2_to_1_api2: STD_LOGIC; +signal MED_DATA_2_to_1_api1: STD_LOGIC_VECTOR (51 downto 0); +signal MED_DATA_2_to_1_api1_m: STD_LOGIC_VECTOR (55 downto 0); +signal MED_DATA_2_to_1_api2: STD_LOGIC_VECTOR (51 downto 0); +signal MED_DATA_2_to_1_api2_m: STD_LOGIC_VECTOR (55 downto 0); +signal MED_READ_2_to_1_api1: STD_LOGIC; +signal MED_READ_2_to_1_api2: STD_LOGIC; + +signal lvds: std_logic_vector(31 downto 0) := (others => '0'); + +signal ctrl: std_logic_vector(31 downto 0) := (others => '0'); + +begin + + + clk <= not clk after 5ns; + + MED_DATA_1_to_2_api1_m(51 downto 0) <= MED_DATA_1_to_2_api1; + MED_DATA_1_to_2_api1_m(55 downto 52) <= "0000"; --set CID to 0 + MED_DATA_2_to_1_api1 <= MED_DATA_2_to_1_api1_m(51 downto 0); + + MED_DATA_2_to_1_api2_m(51 downto 0) <= MED_DATA_2_to_1_api2; + MED_DATA_1_to_2_api2 <= MED_DATA_1_to_2_api2_m(51 downto 0); + MED_DATA_2_to_1_api2_m(55 downto 52) <= "0000"; --set CID to 0 + + + DO_RESET : process + begin + reset <= '1'; + wait for 30ns; + reset <= '0'; + ctrl(8 downto 0) <= "100000000"; --only fixed +-- ctrl(8 downto 0) <= "111111111"; --only rr +-- ctrl(8 downto 0) <= "101010101"; --mixed + wait for 20ns; + ctrl(8 downto 0) <= "000000000"; + wait; + end process DO_RESET; + +------------------------------------------------------------------------------- +-- the 2 APLs +------------------------------------------------------------------------------- + +APL1: trb_net_dummy_apl + generic map ( + TARGET_ADDRESS => x"0002", +-- TARGET_ADDRESS => x"000f", + PREFILL_LENGTH => 0, +-- TRANSFER_LENGTH => 4) + TRANSFER_LENGTH => 16) + port map ( + CLK => clk, + RESET => reset, + CLK_EN => '1', + + -- APL Transmitter port + APL_DATA_OUT => apl_data_out_apl1, + APL_WRITE_OUT => apl_write_apl1, + APL_FIFO_FULL_IN => apl_fifo_full_apl1, + APL_SHORT_TRANSFER_OUT => apl_short_transfer_apl1, + APL_DTYPE_OUT => apl_dtype_apl1, + APL_ERROR_PATTERN_OUT => apl_error_pattern_apl1, + APL_SEND_OUT => apl_send_apl1, + APL_TARGET_ADDRESS_OUT => apl_target_adress_apl1, + + -- Receiver port + APL_DATA_IN => apl_data_in_apl1, + APL_TYP_IN => apl_typ_apl1, + APL_DATAREADY_IN => apl_dataready_apl1, + APL_READ_OUT => apl_read_apl1, + + -- APL Control port + APL_RUN_IN => apl_run_apl1, + APL_SEQNR_IN => apl_seqnr_apl1 + ); + +APL2: trb_net_dummy_apl + generic map ( + TARGET_ADDRESS => x"0001", + PREFILL_LENGTH => 0, +-- TRANSFER_LENGTH => 2) + TRANSFER_LENGTH => 8) + port map ( + CLK => clk, + RESET => reset, + CLK_EN => '1', + + -- APL Transmitter port + APL_DATA_OUT => apl_data_out_apl2, + APL_WRITE_OUT => apl_write_apl2, + APL_FIFO_FULL_IN => apl_fifo_full_apl2, + APL_SHORT_TRANSFER_OUT => apl_short_transfer_apl2, + APL_DTYPE_OUT => apl_dtype_apl2, + APL_ERROR_PATTERN_OUT => apl_error_pattern_apl2, + APL_SEND_OUT => apl_send_apl2, + APL_TARGET_ADDRESS_OUT => apl_target_adress_apl2, + + -- Receiver port + APL_DATA_IN => apl_data_in_apl2, + APL_TYP_IN => apl_typ_apl2, + APL_DATAREADY_IN => apl_dataready_apl2, + APL_READ_OUT => apl_read_apl2, + + -- APL Control port + APL_RUN_IN => apl_run_apl2, + APL_SEQNR_IN => apl_seqnr_apl2 + ); + +------------------------------------------------------------------------------- +-- the 2 APIs +------------------------------------------------------------------------------- + +API1: trb_net_active_apimbuf + generic map ( + FIFO_TERM_BUFFER_DEPTH => 3) + port map ( + CLK => clk, + RESET => reset, + CLK_EN => '1', + + -- APL Transmitter port + APL_DATA_IN => apl_data_out_apl1, + APL_WRITE_IN => apl_write_apl1, + APL_FIFO_FULL_OUT => apl_fifo_full_apl1, + APL_SHORT_TRANSFER_IN => apl_short_transfer_apl1, + APL_DTYPE_IN => apl_dtype_apl1, + APL_ERROR_PATTERN_IN => apl_error_pattern_apl1, + APL_SEND_IN => apl_send_apl1, + APL_TARGET_ADDRESS_IN => apl_target_adress_apl1, + + -- Receiver port + APL_DATA_OUT => apl_data_in_apl1, + APL_TYP_OUT => apl_typ_apl1, + APL_DATAREADY_OUT => apl_dataready_apl1, + APL_READ_IN => apl_read_apl1, + + -- APL Control port + APL_RUN_OUT => apl_run_apl1, + APL_SEQNR_OUT => apl_seqnr_apl1, + APL_MY_ADDRESS_IN => x"0001", + + MED_DATAREADY_OUT => MED_DATAREADY_1_to_2_api1, + MED_DATA_OUT => MED_DATA_1_to_2_api1, + MED_READ_IN => MED_READ_1_to_2_api1, + MED_ERROR_IN => (others => '0'), + MED_DATAREADY_IN => MED_DATAREADY_2_to_1_api1, + MED_DATA_IN => MED_DATA_2_to_1_api1, + MED_READ_OUT => MED_READ_2_to_1_api1, + + CTRL_LOCKED => (others => '0'), + CTRL_GEN => (others => '0'), + + STAT_CTRL_INIT_BUFFER => (others => '0'), + STAT_CTRL_REPLY_BUFFER => (others => '0'), + MPLEX_CTRL => ctrl + ); + +API2: trb_net_active_apimbuf + generic map ( + FIFO_TERM_BUFFER_DEPTH => 3) + port map ( + CLK => clk, + RESET => reset, + CLK_EN => '1', + + -- APL Transmitter port + APL_DATA_IN => apl_data_out_apl2, + APL_WRITE_IN => apl_write_apl2, + APL_FIFO_FULL_OUT => apl_fifo_full_apl2, + APL_SHORT_TRANSFER_IN => apl_short_transfer_apl2, + APL_DTYPE_IN => apl_dtype_apl2, + APL_ERROR_PATTERN_IN => apl_error_pattern_apl2, + APL_SEND_IN => apl_send_apl2, + APL_TARGET_ADDRESS_IN => apl_target_adress_apl2, + + -- Receiver port + APL_DATA_OUT => apl_data_in_apl2, + APL_TYP_OUT => apl_typ_apl2, + APL_DATAREADY_OUT => apl_dataready_apl2, + APL_READ_IN => apl_read_apl2, + + -- APL Control port + APL_RUN_OUT => apl_run_apl2, + APL_SEQNR_OUT => apl_seqnr_apl2, + APL_MY_ADDRESS_IN => x"0002", + + MED_DATAREADY_OUT => MED_DATAREADY_2_to_1_api2, + MED_DATA_OUT => MED_DATA_2_to_1_api2, + MED_READ_IN => MED_READ_2_to_1_api2, + MED_ERROR_IN => (others => '0'), + MED_DATAREADY_IN => MED_DATAREADY_1_to_2_api2, + MED_DATA_IN => MED_DATA_1_to_2_api2, + MED_READ_OUT => MED_READ_1_to_2_api2, + + + CTRL_LOCKED => (others => '0'), + CTRL_GEN => (others => '0'), + + STAT_CTRL_INIT_BUFFER => (others => '0'), + STAT_CTRL_REPLY_BUFFER => (others => '0'), + MPLEX_CTRL => ctrl + ); + +------------------------------------------------------------------------------- +-- 2 LVDS slow media +------------------------------------------------------------------------------- + +LVDS1: trb_net_med_13bit_slow + generic map( + TRANSMISSION_CLOCK_DIVIDER => 4 + ) + port map( + -- Misc + CLK => clk, + RESET => reset, + CLK_EN => '1', + + INT_DATAREADY_OUT => MED_DATAREADY_2_to_1_api1, + INT_DATA_OUT => MED_DATA_2_to_1_api1_m, + INT_READ_IN => MED_READ_2_to_1_api1, +-- INT_ERROR_OUT + + INT_DATAREADY_IN => MED_DATAREADY_1_to_2_api1, + INT_DATA_IN => MED_DATA_1_to_2_api1_m, + INT_READ_OUT => MED_READ_1_to_2_api1, + INT_ERROR_IN => "000", + + -- Media direction port + -- in this case for the cable => 32 lines in total + MED_DATA_OUT => lvds(12 downto 0), + MED_TRANSMISSION_CLK_OUT => lvds(13), + MED_CARRIER_OUT => lvds(14), + MED_PARITY_OUT => lvds(15), + MED_DATA_IN => lvds(28 downto 16), + MED_TRANSMISSION_CLK_IN => lvds(29), + MED_CARRIER_IN => lvds(30), + MED_PARITY_IN => lvds(31), + + -- Status and control port => this never can hurt +-- STAT + --STAT(0): Busy reading from media + --STAT(1): Busy writing to media + --STAT(31 downto 24): Datain(63 downto 56 + CTRL => x"00000000" + --CTRL(24..31) -> lvds-data(63 downto 56) via lvds + --once for each packet + --CTRL(16..18) -> debugbits updated every CLK + --lvds(12 downto 10)(10bit-version only) + --CTRL(0..5) -> lvds-data(69 downto 64) (10bit-version only) + ); + +LVDS2: trb_net_med_13bit_slow + generic map( + TRANSMISSION_CLOCK_DIVIDER => 4 + ) + port map( + -- Misc + CLK => clk, + RESET => reset, + CLK_EN => '1', + + INT_DATAREADY_OUT => MED_DATAREADY_1_to_2_api2, + INT_DATA_OUT => MED_DATA_1_to_2_api2_m, + INT_READ_IN => MED_READ_1_to_2_api2, +-- INT_ERROR_OUT + + INT_DATAREADY_IN => MED_DATAREADY_2_to_1_api2, + INT_DATA_IN => MED_DATA_2_to_1_api2_m, + INT_READ_OUT => MED_READ_2_to_1_api2, + INT_ERROR_IN => "000", + + -- Media direction port + -- in this case for the cable => 32 lines in total + MED_DATA_OUT => lvds(28 downto 16), + MED_TRANSMISSION_CLK_OUT => lvds(29), + MED_CARRIER_OUT => lvds(30), + MED_PARITY_OUT => lvds(31), + MED_DATA_IN => lvds(12 downto 0), + MED_TRANSMISSION_CLK_IN => lvds(13), + MED_CARRIER_IN => lvds(14), + MED_PARITY_IN => lvds(15), + + -- Status and control port => this never can hurt +-- STAT + --STAT(0): Busy reading from media + --STAT(1): Busy writing to media + --STAT(31 downto 24): Datain(63 downto 56 + CTRL => x"00000000" + --CTRL(24..31) -> lvds-data(63 downto 56) via lvds + --once for each packet + --CTRL(16..18) -> debugbits updated every CLK + --lvds(12 downto 10)(10bit-version only) + --CTRL(0..5) -> lvds-data(69 downto 64) (10bit-version only) + ); + +end trb_net_lvds_chain_testbench_arch; + +-- fuse -prj trb_net_lvds_chain_testbench_beh.prj -top trb_net_lvds_chain_testbench -o trb_net_lvds_chain_testbench + +-- trb_net_lvds_chain_testbench -tclbatch lvds_chain_testsim.tcl + +-- ntrace select -o on -m / -l this +-- ntrace start +-- run 1000 ns +-- quit + +-- isimwave isimwavedata.xwv +-- gtkwave vcdfile.vcd settings_lvds_chain.sav & diff --git a/testbench/trb_net_lvds_chain_testbench_beh.prj b/testbench/trb_net_lvds_chain_testbench_beh.prj new file mode 100644 index 0000000..b120cda --- /dev/null +++ b/testbench/trb_net_lvds_chain_testbench_beh.prj @@ -0,0 +1,14 @@ +vhdl work "../trb_net_std.vhd" +vhdl work "../trb_net_fifo.vhd" +vhdl work "../xilinx/trb_net_fifo_arch.vhd" +vhdl work "../xilinx/shift_lut_x16.vhd" +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_active_api.vhd" +vhdl work "../trb_net_active_apibuf.vhd" +vhdl work "../trb_net_active_apimbuf.vhd" +vhdl work "../trb_net_med_13bit_slow.vhd" +vhdl work "trb_net_dummy_apl.vhd" +vhdl work "trb_net_lvds_chain_testbench.vhd" diff --git a/trb_net_med_13bit_slow.vhd b/trb_net_med_13bit_slow.vhd index 94ca17d..bab65a7 100755 --- a/trb_net_med_13bit_slow.vhd +++ b/trb_net_med_13bit_slow.vhd @@ -65,9 +65,9 @@ generic( --lvds(12 downto 10)(10bit-version only) --CTRL(0..5) -> lvds-data(69 downto 64) (10bit-version only) ); -end lvdshadcom; +end trb_net_med_13bit_slow; -architecture Behavioral of trb_net_med_13bit_slow is +architecture trb_net_med_13bit_slow_arch of trb_net_med_13bit_slow is signal INT2MED_state, next_INT2MED_state : std_logic_vector (3 downto 0); signal MED2INT_state, next_MED2INT_state: std_logic_vector(3 downto 0); @@ -531,5 +531,5 @@ MED2INT_fsm_reg: process(CLK,RESET) end process; -end Behavioral; +end trb_net_med_13bit_slow_arch;