axi_tdl 0.1.0 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +7 -0
  3. data/lib/axi/AXI4/axi4_direct_A1.sv +1 -1
  4. data/lib/axi/AXI4/axi4_direct_verc.sv +54 -54
  5. data/lib/axi/AXI4/axi4_dpram_cache.rb +1 -0
  6. data/lib/axi/AXI4/axi4_dpram_cache.sv +10 -10
  7. data/lib/axi/AXI4/axi4_rd_burst_track.sv +2 -1
  8. data/lib/axi/AXI4/axi4_wr_burst_track.sv +2 -1
  9. data/lib/axi/AXI4/axis_to_axi4_wr.sv +9 -9
  10. data/lib/axi/AXI4/odata_pool_axi4_A3.sv +7 -0
  11. data/lib/axi/AXI4/packet_partition/axi4_partition_rd_verb.sv +5 -5
  12. data/lib/axi/AXI4/packet_partition/data_inf_partition.rb +8 -4
  13. data/lib/axi/AXI4/packet_partition/data_inf_partition.sv +6 -6
  14. data/lib/axi/AXI4/wide_axis_to_axi4_wr.sv +12 -12
  15. data/lib/axi/AXI_stream/axi_stream_split_channel.sv +154 -0
  16. data/lib/axi/AXI_stream/axis_head_cut_verc.sv +242 -0
  17. data/lib/axi/AXI_stream/axis_insert_copy.sv +79 -0
  18. data/lib/axi/AXI_stream/axis_pipe_sync_seam.sv +48 -0
  19. data/lib/axi/AXI_stream/axis_rom_contect_sim.sv +113 -0
  20. data/lib/axi/AXI_stream/axis_sim_master_model.rb +2 -0
  21. data/lib/axi/AXI_stream/axis_sim_master_model.sv +46 -0
  22. data/lib/axi/AXI_stream/axis_split_channel_verb.sv +62 -0
  23. data/lib/axi/AXI_stream/data_width/axis_width_convert_verb.sv +50 -0
  24. data/lib/axi/AXI_stream/packet_fifo/axi_stream_packet_long_fifo.sv +2 -0
  25. data/lib/axi/AXI_stream/parse_big_field_table_verb.sv +5 -3
  26. data/lib/axi/common/common_ram_sim_wrapper.sv +1 -1
  27. data/lib/axi/common/common_ram_wrapper.sv +1 -1
  28. data/lib/axi/common/test_write_mem.sv +1 -1
  29. data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.sv +13 -13
  30. data/lib/axi/data_interface/data_inf_c/data_c_sim_master_model.sv +14 -11
  31. data/lib/axi/platform_ip/fifo_36kb_long.sv +1 -1
  32. data/lib/axi/platform_ip/long_fifo_verb.sv +1 -1
  33. data/lib/axi/platform_ip/wide_fifo.sv +1 -1
  34. data/lib/axi/platform_ip/xilinx_fifo_verb.sv +1 -1
  35. data/lib/axi/platform_ip/xilinx_fifo_verc.sv +2 -1
  36. data/lib/axi/techbench/tb_axi_stream_split_channel.rb +2 -1
  37. data/lib/axi/techbench/tb_axi_stream_split_channel.sv +46 -45
  38. data/lib/axi_tdl.rb +31 -1
  39. data/lib/axi_tdl/version.rb +1 -1
  40. data/lib/public_atom_module/CheckPClock.sv +53 -0
  41. data/lib/public_atom_module/LICENSE.md +674 -0
  42. data/lib/public_atom_module/altera_xilinx_always_block_sw.rb +57 -0
  43. data/lib/public_atom_module/bits_decode.sv +71 -0
  44. data/lib/public_atom_module/bits_decode_verb.sv +71 -0
  45. data/lib/public_atom_module/bits_decode_verb_sdl.rb +24 -0
  46. data/lib/public_atom_module/broaden.v +43 -0
  47. data/lib/public_atom_module/broaden_and_cross_clk.v +47 -0
  48. data/lib/public_atom_module/ceiling.v +39 -0
  49. data/lib/public_atom_module/ceiling_A1.v +42 -0
  50. data/lib/public_atom_module/clock_rst.sv +64 -0
  51. data/lib/public_atom_module/cross_clk_sync.v +37 -0
  52. data/lib/public_atom_module/edge_generator.v +50 -0
  53. data/lib/public_atom_module/flooring.v +36 -0
  54. data/lib/public_atom_module/latch_data.v +30 -0
  55. data/lib/public_atom_module/latency.v +48 -0
  56. data/lib/public_atom_module/latency_dynamic.v +83 -0
  57. data/lib/public_atom_module/latency_long.v +84 -0
  58. data/lib/public_atom_module/latency_verb.v +52 -0
  59. data/lib/public_atom_module/once_event.sv +65 -0
  60. data/lib/public_atom_module/pipe_reg.v +93 -0
  61. data/lib/public_atom_module/pipe_reg_2write_ports.v +84 -0
  62. data/lib/public_atom_module/sim/clock_rst_verb.sv +54 -0
  63. data/lib/public_atom_module/sim/clock_rst_verc.sv +69 -0
  64. data/lib/public_atom_module/sim/latency_long_tb.sv +49 -0
  65. data/lib/public_atom_module/sim/latency_long_tb.sv.bak +49 -0
  66. data/lib/public_atom_module/sim_system_pkg.sv +4 -0
  67. data/lib/public_atom_module/synth_system_pkg.sv +4 -0
  68. data/lib/tdl/Logic/logic_edge.rb +1 -1
  69. data/lib/tdl/auto_script/autogensdl.rb +2 -3
  70. data/lib/tdl/auto_script/import_hdl.rb +40 -5
  71. data/lib/tdl/axi4/axi4_interconnect_verb.rb +47 -10
  72. data/lib/tdl/class_hdl/hdl_always_comb.rb +4 -1
  73. data/lib/tdl/class_hdl/hdl_always_ff.rb +3 -3
  74. data/lib/tdl/class_hdl/hdl_assign.rb +7 -1
  75. data/lib/tdl/class_hdl/hdl_block_ifelse.rb +7 -7
  76. data/lib/tdl/class_hdl/hdl_foreach.rb +2 -2
  77. data/lib/tdl/class_hdl/hdl_function.rb +4 -4
  78. data/lib/tdl/class_hdl/hdl_generate.rb +5 -2
  79. data/lib/tdl/class_hdl/hdl_initial.rb +25 -3
  80. data/lib/tdl/class_hdl/hdl_module_def.rb +9 -6
  81. data/lib/tdl/class_hdl/hdl_package.rb +45 -0
  82. data/lib/tdl/class_hdl/hdl_redefine_opertor.rb +99 -27
  83. data/lib/tdl/class_hdl/hdl_struct.rb +2 -2
  84. data/lib/tdl/elements/Reset.rb +5 -9
  85. data/lib/tdl/elements/clock.rb +5 -9
  86. data/lib/tdl/elements/data_inf.rb +0 -17
  87. data/lib/tdl/elements/logic.rb +9 -31
  88. data/lib/tdl/elements/mail_box.rb +6 -1
  89. data/lib/tdl/elements/originclass.rb +17 -47
  90. data/lib/tdl/elements/parameter.rb +5 -6
  91. data/lib/tdl/examples/11_test_unit/dve.tcl +6 -153
  92. data/lib/tdl/examples/11_test_unit/exp_test_unit.sv +2 -2
  93. data/lib/tdl/examples/11_test_unit/exp_test_unit_sim.sv +9 -0
  94. data/lib/tdl/examples/11_test_unit/modules/sub_md0.sv +2 -2
  95. data/lib/tdl/examples/11_test_unit/modules/sub_md1.sv +2 -2
  96. data/lib/tdl/examples/11_test_unit/tb_exp_test_unit.sv +1 -1
  97. data/lib/tdl/examples/11_test_unit/tb_exp_test_unit_sim.sv +41 -0
  98. data/lib/tdl/examples/11_test_unit/tu0.sv +2 -1
  99. data/lib/tdl/examples/1_define_module/exmple_md.sv +1 -1
  100. data/lib/tdl/examples/2_hdl_class/tmp/always_comb_test.sv +3 -3
  101. data/lib/tdl/examples/2_hdl_class/tmp/always_ff_test.sv +3 -3
  102. data/lib/tdl/examples/2_hdl_class/tmp/case_test.sv +3 -3
  103. data/lib/tdl/examples/2_hdl_class/tmp/module_instance_test.sv +1 -1
  104. data/lib/tdl/examples/2_hdl_class/tmp/simple_assign_test.sv +3 -3
  105. data/lib/tdl/examples/2_hdl_class/tmp/state_case_test.sv +3 -3
  106. data/lib/tdl/examples/2_hdl_class/tmp/test_inst_sugar.sv +1 -1
  107. data/lib/tdl/examples/2_hdl_class/tmp/test_module.sv +3 -3
  108. data/lib/tdl/examples/2_hdl_class/tmp/test_module_port.sv +2 -2
  109. data/lib/tdl/examples/2_hdl_class/tmp/test_module_var.sv +7 -7
  110. data/lib/tdl/examples/2_hdl_class/tmp/test_package.sv +4 -3
  111. data/lib/tdl/examples/2_hdl_class/tmp/test_vcs_string.sv +1 -1
  112. data/lib/tdl/examples/3_hdl_sdl_instance/main_md.sv +2 -2
  113. data/lib/tdl/examples/3_hdl_sdl_instance/sdl_md.sv +1 -1
  114. data/lib/tdl/examples/6_module_with_interface/example_interface.sv +8 -8
  115. data/lib/tdl/examples/6_module_with_interface/inf_collect.sv +9 -9
  116. data/lib/tdl/examples/7_module_with_package/body_package.sv +4 -3
  117. data/lib/tdl/examples/7_module_with_package/example_pkg.sv +1 -1
  118. data/lib/tdl/examples/7_module_with_package/head_package.sv +4 -3
  119. data/lib/tdl/examples/8_top_module/dve.tcl +6 -0
  120. data/lib/tdl/examples/8_top_module/tb_test_top.sv +1 -1
  121. data/lib/tdl/examples/8_top_module/tb_test_top_sim.sv +29 -0
  122. data/lib/tdl/examples/8_top_module/test_top.sv +1 -1
  123. data/lib/tdl/examples/8_top_module/test_top_sim.sv +9 -0
  124. data/lib/tdl/examples/9_itegration/clock_manage/test_clock_bb.sv +2 -1
  125. data/lib/tdl/examples/9_itegration/dve.tcl +155 -2
  126. data/lib/tdl/examples/9_itegration/tb_test_tttop.sv +1 -1
  127. data/lib/tdl/examples/9_itegration/tb_test_tttop_sim.sv +1 -1
  128. data/lib/tdl/examples/9_itegration/test_tttop.sv +7 -38
  129. data/lib/tdl/examples/9_itegration/test_tttop_sim.sv +38 -7
  130. data/lib/tdl/exlib/axis_verify.rb +4 -3
  131. data/lib/tdl/exlib/constraints_verb.rb +1 -0
  132. data/lib/tdl/exlib/itegration_verb.rb +47 -41
  133. data/lib/tdl/rebuild_ele/ele_base.rb +15 -10
  134. data/lib/tdl/sdlmodule/sdlmodule.rb +117 -51
  135. data/lib/tdl/sdlmodule/sdlmodule_arraychain.rb +1 -1
  136. data/lib/tdl/sdlmodule/sdlmodule_draw.rb +2 -2
  137. data/lib/tdl/sdlmodule/sdlmodule_instance.rb +3 -0
  138. data/lib/tdl/sdlmodule/sdlmodule_port_define.rb +6 -6
  139. data/lib/tdl/sdlmodule/sdlmodule_varible.rb +6 -6
  140. data/lib/tdl/sdlmodule/test_unit_module.rb +6 -0
  141. data/lib/tdl/sdlmodule/top_module.rb +4 -0
  142. data/lib/tdl/tdl.rb +1 -11
  143. data/lib/tdl/tdlerror/tdlerror.rb +1 -1
  144. metadata +43 -5
  145. data/CODE_OF_CONDUCT.md +0 -74
  146. data/lib/axi/AXI_stream/axis_length_split_writh_user.sv +0 -87
@@ -0,0 +1,154 @@
1
+ /**********************************************
2
+ _______________________________________
3
+ ___________ Cook Darwin __________
4
+ _______________________________________
5
+ descript:
6
+ author : Cook.Darwin
7
+ Version: VERA.0.0
8
+ creaded:
9
+ madified:
10
+ ***********************************************/
11
+ `timescale 1ns/1ps
12
+
13
+ module axi_stream_split_channel (
14
+ input [15:0] split_len,
15
+ axi_stream_inf.slaver origin_inf,
16
+ axi_stream_inf.master first_inf,
17
+ axi_stream_inf.master end_inf
18
+ );
19
+
20
+ //==========================================================================
21
+ //-------- define ----------------------------------------------------------
22
+ logic clock;
23
+ logic rst_n;
24
+ logic addr;
25
+ logic new_last;
26
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_add_last (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
27
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) sub_origin_inf [1:0] (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
28
+ //==========================================================================
29
+ //-------- instance --------------------------------------------------------
30
+ axi_stream_interconnect_S2M #(
31
+ .NUM (2 )
32
+ )axi_stream_interconnect_S2M_inst(
33
+ /* input */.addr (addr ),
34
+ /* axi_stream_inf.slaver */.s00 (origin_inf_add_last ),
35
+ /* axi_stream_inf.master */.m00 (sub_origin_inf )
36
+ );
37
+ //==========================================================================
38
+ //-------- expression ------------------------------------------------------
39
+
40
+ axi_stream_inf #(.DSIZE(first_inf.DSIZE)) sub_first_inf[1-1:0](.aclk(first_inf.aclk),.aresetn(first_inf.aresetn),.aclken(1'b1));
41
+
42
+
43
+ axis_direct axis_direct_first_inf_inst0 (
44
+ /* axi_stream_inf.slaver*/ .slaver (sub_origin_inf[0]),
45
+ /* axi_stream_inf.master*/ .master (sub_first_inf[0])
46
+ );
47
+
48
+
49
+ axi_stream_inf #(.DSIZE(end_inf.DSIZE)) sub_end_inf[1-1:0](.aclk(end_inf.aclk),.aresetn(end_inf.aresetn),.aclken(1'b1));
50
+
51
+
52
+ axis_direct axis_direct_end_inf_inst0 (
53
+ /* axi_stream_inf.slaver*/ .slaver (sub_origin_inf[1]),
54
+ /* axi_stream_inf.master*/ .master (sub_end_inf[0])
55
+ );
56
+ //-------- CLOCKs Total 3 ----------------------
57
+ //--->> CheckClock <<----------------
58
+ logic cc_done_6,cc_same_6;
59
+ integer cc_afreq_6,cc_bfreq_6;
60
+ ClockSameDomain CheckPClock_inst_6(
61
+ /* input */ .aclk (origin_inf.aclk ),
62
+ /* input */ .bclk (first_inf.aclk ),
63
+ /* output logic */ .done (cc_done_6),
64
+ /* output logic */ .same (cc_same_6),
65
+ /* output integer */ .aFreqK (cc_afreq_6),
66
+ /* output integer */ .bFreqK (cc_bfreq_6)
67
+ );
68
+
69
+ initial begin
70
+ wait(cc_done_6);
71
+ assert(cc_same_6)
72
+ else begin
73
+ $error("--- Error : `axi_stream_split_channel` clock is not same, origin_inf.aclk< %0f M> != first_inf.aclk<%0f M>",1000000.0/cc_afreq_6, 1000000.0/cc_bfreq_6);
74
+ repeat(10)begin
75
+ @(posedge origin_inf.aclk);
76
+ end
77
+ $stop;
78
+ end
79
+ end
80
+ //---<< CheckClock >>----------------
81
+
82
+ //--->> CheckClock <<----------------
83
+ logic cc_done_7,cc_same_7;
84
+ integer cc_afreq_7,cc_bfreq_7;
85
+ ClockSameDomain CheckPClock_inst_7(
86
+ /* input */ .aclk (origin_inf.aclk ),
87
+ /* input */ .bclk (end_inf.aclk ),
88
+ /* output logic */ .done (cc_done_7),
89
+ /* output logic */ .same (cc_same_7),
90
+ /* output integer */ .aFreqK (cc_afreq_7),
91
+ /* output integer */ .bFreqK (cc_bfreq_7)
92
+ );
93
+
94
+ initial begin
95
+ wait(cc_done_7);
96
+ assert(cc_same_7)
97
+ else begin
98
+ $error("--- Error : `axi_stream_split_channel` clock is not same, origin_inf.aclk< %0f M> != end_inf.aclk<%0f M>",1000000.0/cc_afreq_7, 1000000.0/cc_bfreq_7);
99
+ repeat(10)begin
100
+ @(posedge origin_inf.aclk);
101
+ end
102
+ $stop;
103
+ end
104
+ end
105
+ //---<< CheckClock >>----------------
106
+
107
+ //======== CLOCKs Total 3 ======================
108
+ assign clock = origin_inf.aclk;
109
+ assign rst_n = origin_inf.aresetn;
110
+
111
+ always_ff@(posedge clock,negedge rst_n) begin
112
+ if(~rst_n)begin
113
+ addr <= 1'b0;
114
+ new_last <= 1'b0;
115
+ end
116
+ else begin
117
+ if(origin_inf.axis_tvalid && origin_inf.axis_tready)begin
118
+ new_last <= origin_inf.axis_tcnt==(split_len-2);
119
+ end
120
+ else begin
121
+ new_last <= new_last;
122
+ end
123
+ if(origin_inf.axis_tvalid && origin_inf.axis_tready && origin_inf.axis_tlast)begin
124
+ addr <= 1'b0;
125
+ end
126
+ else if(origin_inf.axis_tcnt==(split_len-1)&&origin_inf.axis_tvalid && origin_inf.axis_tready)begin
127
+ addr <= 1'b1;
128
+ end
129
+ else begin
130
+ addr <= addr;
131
+ end
132
+ end
133
+ end
134
+
135
+ assign origin_inf_add_last.axis_tdata = origin_inf.axis_tdata;
136
+ assign origin_inf_add_last.axis_tvalid = origin_inf.axis_tvalid;
137
+ assign origin_inf_add_last.axis_tuser = origin_inf.axis_tuser;
138
+ assign origin_inf_add_last.axis_tkeep = origin_inf.axis_tkeep;
139
+ assign origin_inf_add_last.axis_tlast = origin_inf.axis_tlast|new_last;
140
+ assign origin_inf.axis_tready = origin_inf_add_last.axis_tready;
141
+
142
+
143
+ axis_direct axis_direct_first_inf_instMM (
144
+ /* axi_stream_inf.slaver*/ .slaver (sub_first_inf[0]),
145
+ /* axi_stream_inf.master*/ .master (first_inf)
146
+ );
147
+
148
+
149
+ axis_direct axis_direct_end_inf_instMM (
150
+ /* axi_stream_inf.slaver*/ .slaver (sub_end_inf[0]),
151
+ /* axi_stream_inf.master*/ .master (end_inf)
152
+ );
153
+
154
+ endmodule
@@ -0,0 +1,242 @@
1
+ /**********************************************
2
+ _______________________________________
3
+ ___________ Cook Darwin __________
4
+ _______________________________________
5
+ descript:
6
+ author : Cook.Darwin
7
+ Version: VERC.0.0
8
+ creaded:
9
+ madified:
10
+ ***********************************************/
11
+ `timescale 1ns/1ps
12
+
13
+ module axis_head_cut_verc #(
14
+ parameter BYTE_BITS = 8,
15
+ parameter DX = (origin_inf.DSIZE / BYTE_BITS)
16
+ )(
17
+ input [9:0] bytes,
18
+ axi_stream_inf.slaver origin_inf,
19
+ axi_stream_inf.master out_inf
20
+ );
21
+
22
+ //==========================================================================
23
+ //-------- define ----------------------------------------------------------
24
+ logic clock;
25
+ logic rst_n;
26
+ logic [18-1:0] origin_sync_info[3-1:0] ;
27
+ logic [18-1:0] origin_sync_info_out[3-1:0] ;
28
+ logic [10-1:0] bytes_Q ;
29
+ logic [10-1:0] bytes_QQ ;
30
+ logic [4-1:0] bytes_x ;
31
+ logic [4-1:0] bytes_x_Q ;
32
+ logic [4-1:0] bytes_x_tmp ;
33
+ logic [4-1:0] bytes_x_sub_nDx ;
34
+ logic [4-1:0] bytes_x_sub_nDx_tmp ;
35
+ logic [2-1:0] route_addr ;
36
+ logic [2-1:0] route_addr_tmp ;
37
+ logic fifo_wr_en;
38
+ logic [4-1:0] int_cut_len ;
39
+ logic [4-1:0] shift_sel_pre ;
40
+ logic fifo_wr_en_lat;
41
+ logic [4-1:0] shift_sel ;
42
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_post (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
43
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) sub_origin_inf [2:0] (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
44
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_ss (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
45
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_cut_mix (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
46
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_ss_E0 (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
47
+ axi_stream_inf #(.DSIZE(origin_inf.DSIZE),.FreqM(origin_inf.FreqM),.USIZE(1)) origin_inf_ss_E0_CH (.aclk(origin_inf.aclk),.aresetn(origin_inf.aresetn),.aclken(1'b1)) ;
48
+ axi_stream_inf #(.DSIZE(out_inf.DSIZE),.FreqM(out_inf.FreqM),.USIZE(1)) out_inf_branchR325 (.aclk(out_inf.aclk),.aresetn(out_inf.aresetn),.aclken(1'b1)) ;
49
+ //==========================================================================
50
+ //-------- instance --------------------------------------------------------
51
+ axis_pipe_sync_seam #(
52
+ .LAT (3 ),
53
+ .DSIZE (18 )
54
+ )axis_pipe_sync_seam_inst(
55
+ /* input */.in_datas (origin_sync_info ),
56
+ /* output */.out_datas (origin_sync_info_out ),
57
+ /* axi_stream_inf.slaver */.in_inf (origin_inf ),
58
+ /* axi_stream_inf.master */.out_inf (origin_inf_post )
59
+ );
60
+ axi_stream_interconnect_S2M #(
61
+ .NUM (3 )
62
+ )axi_stream_interconnect_S2M_inst(
63
+ /* input */.addr (route_addr ),
64
+ /* axi_stream_inf.slaver */.s00 (origin_inf_post ),
65
+ /* axi_stream_inf.master */.m00 (sub_origin_inf )
66
+ );
67
+ common_fifo #(
68
+ .DEPTH (4 ),
69
+ .DSIZE (4 )
70
+ )common_fifo_head_bytesx_inst(
71
+ /* input */.clock (clock ),
72
+ /* input */.rst_n (rst_n ),
73
+ /* input */.wdata (bytes_x ),
74
+ /* input */.wr_en (fifo_wr_en && (bytes_x!= '0) ),
75
+ /* output */.rdata (int_cut_len ),
76
+ /* input */.rd_en ((sub_origin_inf[1].axis_tvalid && sub_origin_inf[1].axis_tready && sub_origin_inf[1].axis_tlast) ),
77
+ /* output */.count (/*unused */ ),
78
+ /* output */.empty (/*unused */ ),
79
+ /* output */.full (/*unused */ )
80
+ );
81
+ axis_head_cut_verb axis_head_cut_verb_inst(
82
+ /* input */.length ({12'd0,int_cut_len} ),
83
+ /* axi_stream_inf.slaver */.axis_in (sub_origin_inf[1] ),
84
+ /* axi_stream_inf.master */.axis_out (origin_inf_ss )
85
+ );
86
+ axis_append_A1 #(
87
+ .MODE ("END" ),
88
+ .DSIZE (out_inf.DSIZE ),
89
+ .HEAD_FIELD_LEN (1 ),
90
+ .HEAD_FIELD_NAME ("HEAD Filed" ),
91
+ .END_FIELD_LEN (1 ),
92
+ .END_FIELD_NAME ("END Filed" )
93
+ )axis_append_A1_inst(
94
+ /* input */.enable (1'b1 ),
95
+ /* input */.head_value (/*unused */ ),
96
+ /* input */.end_value ('0 ),
97
+ /* axi_stream_inf.slaver */.origin_in (origin_inf_cut_mix ),
98
+ /* axi_stream_inf.master */.append_out (origin_inf_ss_E0 )
99
+ );
100
+ common_fifo #(
101
+ .DEPTH (4 ),
102
+ .DSIZE (4 )
103
+ )common_fifo_head_nDx_inst(
104
+ /* input */.clock (clock ),
105
+ /* input */.rst_n (rst_n ),
106
+ /* input */.wdata (shift_sel_pre ),
107
+ /* input */.wr_en (fifo_wr_en_lat ),
108
+ /* output */.rdata (shift_sel ),
109
+ /* input */.rd_en (origin_inf_ss_E0.axis_tvalid && origin_inf_ss_E0.axis_tready && origin_inf_ss_E0.axis_tlast ),
110
+ /* output */.count (/*unused */ ),
111
+ /* output */.empty (/*unused */ ),
112
+ /* output */.full (/*unused */ )
113
+ );
114
+ axis_connect_pipe_right_shift_verb #(
115
+ .SHIFT_BYTE_BIT (BYTE_BITS ),
116
+ .SNUM (DX )
117
+ )axis_connect_pipe_right_shift_verb_inst(
118
+ /* input */.shift_sel (shift_sel ),
119
+ /* axi_stream_inf.slaver */.axis_in (origin_inf_ss_E0 ),
120
+ /* axi_stream_inf.master */.axis_out (origin_inf_ss_E0_CH )
121
+ );
122
+ axis_head_cut_verb last_cut_inst(
123
+ /* input */.length (16'd1 ),
124
+ /* axi_stream_inf.slaver */.axis_in (origin_inf_ss_E0_CH ),
125
+ /* axi_stream_inf.master */.axis_out (out_inf_branchR325 )
126
+ );
127
+ //==========================================================================
128
+ //-------- expression ------------------------------------------------------
129
+
130
+ axi_stream_inf #(.DSIZE(out_inf.DSIZE)) sub_out_inf[2-1:0](.aclk(out_inf.aclk),.aresetn(out_inf.aresetn),.aclken(1'b1));
131
+
132
+
133
+ axis_direct axis_direct_out_inf_inst0 (
134
+ /* axi_stream_inf.slaver*/ .slaver (sub_origin_inf[0]),
135
+ /* axi_stream_inf.master*/ .master (sub_out_inf[0])
136
+ );
137
+
138
+ axis_direct axis_direct_out_inf_inst1 (
139
+ /* axi_stream_inf.slaver*/ .slaver (out_inf_branchR325),
140
+ /* axi_stream_inf.master*/ .master (sub_out_inf[1])
141
+ );
142
+
143
+
144
+ axi_stream_inf #(.DSIZE(origin_inf_cut_mix.DSIZE)) sub_origin_inf_cut_mix[2-1:0](.aclk(origin_inf_cut_mix.aclk),.aresetn(origin_inf_cut_mix.aresetn),.aclken(1'b1));
145
+
146
+
147
+ axis_direct axis_direct_origin_inf_cut_mix_inst0 (
148
+ /* axi_stream_inf.slaver*/ .slaver (origin_inf_ss),
149
+ /* axi_stream_inf.master*/ .master (sub_origin_inf_cut_mix[0])
150
+ );
151
+
152
+ axis_direct axis_direct_origin_inf_cut_mix_inst1 (
153
+ /* axi_stream_inf.slaver*/ .slaver (sub_origin_inf[2]),
154
+ /* axi_stream_inf.master*/ .master (sub_origin_inf_cut_mix[1])
155
+ );
156
+ initial begin
157
+ assert(DX<17)else begin
158
+ $error("param.DX<%0d> !< 17",DX);
159
+ $stop;
160
+ end
161
+ end
162
+
163
+ assign clock = origin_inf.aclk;
164
+ assign rst_n = origin_inf.aresetn;
165
+
166
+ always_comb begin
167
+ bytes_x_tmp = '0;
168
+ for(integer gvar_cc_1=0;gvar_cc_1<10;gvar_cc_1=gvar_cc_1+1)begin
169
+ if(bytes<DX*(10-gvar_cc_1))begin
170
+ bytes_x_tmp = (10-1)-gvar_cc_1;
171
+ end
172
+ end
173
+ end
174
+
175
+ assign origin_sync_info[0] = {bytes_x_tmp,bytes_x_tmp,bytes};
176
+ assign {bytes_x,bytes_Q} = {origin_sync_info_out[0][13:10],origin_sync_info_out[0][9:0]};
177
+ assign bytes_x_sub_nDx_tmp = bytes_Q-(bytes_x*DX);
178
+ assign origin_sync_info[1] = {bytes_x_sub_nDx_tmp,bytes_x,bytes_Q};
179
+ assign {bytes_x_sub_nDx,bytes_x_Q,bytes_QQ} = {origin_sync_info_out[1][17:14],origin_sync_info_out[1][13:10],origin_sync_info_out[1][9:0]};
180
+ assign origin_sync_info[2] = {10'd0,route_addr_tmp};
181
+ assign route_addr = origin_sync_info_out[2][1:0];
182
+
183
+ always_comb begin
184
+ if(bytes_QQ=='0)begin
185
+ route_addr_tmp = 2'd0;
186
+ end
187
+ else if(bytes_x_Q=='0)begin
188
+ route_addr_tmp = 2'd2;
189
+ end
190
+ else if(bytes_x_sub_nDx=='0)begin
191
+ route_addr_tmp = 2'd1;
192
+ end
193
+ else begin
194
+ route_addr_tmp = 2'd1;
195
+ end
196
+ end
197
+
198
+ always_ff@(posedge clock,negedge rst_n) begin
199
+ if(~rst_n)begin
200
+ fifo_wr_en <= 1'b0;
201
+ end
202
+ else begin
203
+ fifo_wr_en <= (origin_inf.axis_tcnt=='0&&origin_inf.axis_tvalid && origin_inf.axis_tready);
204
+ end
205
+ end
206
+
207
+ assign shift_sel_pre = DX-bytes_x_sub_nDx;
208
+
209
+
210
+ //----->> fifo_wr_en LAST DELAY <<------------------
211
+ latency #(
212
+ .LAT (2),
213
+ .DSIZE (1)
214
+ )fifo_wr_en_lat2_inst(
215
+ clock,
216
+ rst_n,
217
+ fifo_wr_en,
218
+ fifo_wr_en_lat
219
+ );
220
+ //-----<< fifo_wr_en LAST DELAY >>------------------
221
+
222
+
223
+ axi_stream_interconnect_M2S_A1 #(
224
+ //axi_stream_interconnect_M2S_noaddr #(
225
+ .NUM (2)
226
+ // .DSIZE (out_inf.DSIZE)
227
+ )out_inf_M2S_noaddr_inst(
228
+ /* axi_stream_inf.slaver */ .s00 (sub_out_inf ), //[NUM-1:0],
229
+ /* axi_stream_inf.master */ .m00 (out_inf) //
230
+ );
231
+
232
+
233
+ axi_stream_interconnect_M2S_A1 #(
234
+ //axi_stream_interconnect_M2S_noaddr #(
235
+ .NUM (2)
236
+ // .DSIZE (origin_inf.DSIZE)
237
+ )origin_inf_cut_mix_M2S_noaddr_inst(
238
+ /* axi_stream_inf.slaver */ .s00 (sub_origin_inf_cut_mix ), //[NUM-1:0],
239
+ /* axi_stream_inf.master */ .m00 (origin_inf_cut_mix) //
240
+ );
241
+
242
+ endmodule
@@ -0,0 +1,79 @@
1
+ /**********************************************
2
+ _______________________________________
3
+ ___________ Cook Darwin __________
4
+ _______________________________________
5
+ descript:
6
+ author : Cook.Darwin
7
+ Version: VERA.0.0
8
+ created: 2021-04-16 17:01:06 +0800
9
+ madified:
10
+ ***********************************************/
11
+ `timescale 1ns/1ps
12
+
13
+ module axis_insert_copy (
14
+ input [15:0] insert_seed,
15
+ input [7:0] insert_len,
16
+ axi_stream_inf.slaver in_inf,
17
+ axi_stream_inf.master out_inf
18
+ );
19
+
20
+ //==========================================================================
21
+ //-------- define ----------------------------------------------------------
22
+ logic clock;
23
+ logic rst_n;
24
+ logic insert_tri;
25
+ axi_stream_inf #(.DSIZE(in_inf.DSIZE),.FreqM(in_inf.FreqM),.USIZE(1)) in_inf_valve (.aclk(in_inf.aclk),.aresetn(in_inf.aresetn),.aclken(1'b1)) ;
26
+ //==========================================================================
27
+ //-------- instance --------------------------------------------------------
28
+ axis_connect_pipe axis_connect_pipe_inst(
29
+ /* axi_stream_inf.slaver */.axis_in (in_inf_valve ),
30
+ /* axi_stream_inf.master */.axis_out (out_inf )
31
+ );
32
+ //==========================================================================
33
+ //-------- expression ------------------------------------------------------
34
+ assign clock = in_inf.aclk;
35
+ assign rst_n = in_inf.aresetn;
36
+
37
+ assign in_inf_valve.axis_tdata = in_inf.axis_tdata;
38
+ assign in_inf_valve.axis_tvalid = in_inf.axis_tvalid|insert_tri;
39
+ assign in_inf_valve.axis_tuser = in_inf.axis_tuser;
40
+ assign in_inf_valve.axis_tkeep = in_inf.axis_tkeep;
41
+ assign in_inf.axis_tready = in_inf_valve.axis_tready&~insert_tri;
42
+ assign in_inf_valve.axis_tlast = in_inf.axis_tlast&~insert_tri;
43
+
44
+ always_ff@(posedge clock,negedge rst_n) begin
45
+ if(~rst_n)begin
46
+ insert_tri <= 1'b0;
47
+ end
48
+ else begin
49
+ if(insert_seed=='0)begin
50
+ if(in_inf.axis_tvalid && in_inf.axis_tready && in_inf.axis_tlast)begin
51
+ insert_tri <= 1'b1;
52
+ end
53
+ else if(in_inf_valve.axis_tvalid && in_inf_valve.axis_tready)begin
54
+ insert_tri <= (in_inf_valve.axis_tcnt<(insert_len-1'b1));
55
+ end
56
+ else if(in_inf_valve.axis_tcnt=='0&&~(in_inf.axis_tvalid && in_inf.axis_tready))begin
57
+ insert_tri <= 1'b1;
58
+ end
59
+ else begin
60
+ insert_tri <= insert_tri;
61
+ end
62
+ end
63
+ else begin
64
+ if(in_inf_valve.axis_tvalid && in_inf_valve.axis_tready)begin
65
+ if(in_inf_valve.axis_tcnt>=(insert_seed-1'b1) &&(in_inf_valve.axis_tcnt<((insert_seed+insert_len)-1'b1))&&~in_inf.axis_tlast)begin
66
+ insert_tri <= 1'b1;
67
+ end
68
+ else begin
69
+ insert_tri <= 1'b0;
70
+ end
71
+ end
72
+ else begin
73
+ insert_tri <= insert_tri;
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ endmodule