axi_tdl 0.1.20 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/axi/AXI4/axi4_direct_algin_addr_step.sv +223 -0
  3. data/lib/axi/AXI4/axi4_direct_verc.sv +54 -5
  4. data/lib/axi/AXI4/axi4_long_to_axi4_wide_B1.sv +146 -0
  5. data/lib/axi/AXI4/packet_fifo/axi4_packet_fifo_verb.sv +62 -0
  6. data/lib/axi/AXI4/packet_fifo/axi4_wr_packet_fifo.sv +4 -3
  7. data/lib/axi/AXI4/wide_axis_to_axi4_wr.sv +1 -1
  8. data/lib/axi/AXI4/width_convert/axi4_data_convert_verb.sv +280 -0
  9. data/lib/axi/AXI_stream/axi_stream_interconnect_M2S_cpVCS.sv +80 -0
  10. data/lib/axi/AXI_stream/axi_stream_split_channel.sv +20 -20
  11. data/lib/axi/AXI_stream/axis_append_A1.sv +15 -2
  12. data/lib/axi/AXI_stream/axis_uncompress_verb.sv +9 -9
  13. data/lib/axi/AXI_stream/parse_big_field_table_verb.sv +3 -2
  14. data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.sv +10 -10
  15. data/lib/axi/data_interface/data_inf_c/data_c_scaler_A1.sv +2 -1
  16. data/lib/axi/interface_define/axi_inf.sv +1 -1
  17. data/lib/axi/macro/RTL/define_macro.sv +210 -0
  18. data/lib/axi/macro/SIM/define_macro.sv +194 -0
  19. data/lib/axi_tdl/version.rb +1 -1
  20. data/lib/tdl/auto_script/import_sdl.rb +3 -0
  21. data/lib/tdl/axi4/axi4_interconnect_verb.rb +76 -10
  22. data/lib/tdl/examples/11_test_unit/exp_test_unit.sv +7 -33
  23. data/lib/tdl/examples/11_test_unit/tb_exp_test_unit.sv +1 -1
  24. data/lib/tdl/examples/11_test_unit/tb_exp_test_unit_sim.sv +3 -14
  25. data/lib/tdl/examples/11_test_unit/tu0.sv +1 -1
  26. data/lib/tdl/examples/2_hdl_class/tmp/test_module_var.sv +2 -2
  27. data/lib/tdl/examples/2_hdl_class/tmp/test_vcs_string.sv +1 -1
  28. data/lib/tdl/examples/8_top_module/dve.tcl +0 -6
  29. data/lib/tdl/examples/8_top_module/test_top.sv +1 -1
  30. data/lib/tdl/examples/9_itegration/clock_manage/tu_ClockManage_test_clock_bb.sv +35 -0
  31. data/lib/tdl/examples/9_itegration/tb_test_tttop_sim.sv +2 -2
  32. data/lib/tdl/examples/9_itegration/test_tttop.sv +38 -7
  33. data/lib/tdl/examples/9_itegration/test_tttop_sim.sv +7 -38
  34. data/lib/tdl/examples/9_itegration/top.rb +1 -1
  35. data/lib/tdl/exlib/itegration_test_unit.rb +13 -0
  36. data/lib/tdl/exlib/itegration_verb.rb +22 -17
  37. data/lib/tdl/rebuild_ele/ele_base.rb +15 -3
  38. data/lib/tdl/sdlmodule/sdlmodule_arraychain.rb +1 -0
  39. data/lib/tdl/sdlmodule/sdlmodule_instance.rb +1 -1
  40. data/lib/tdl/sdlmodule/test_unit_module.rb +12 -16
  41. data/lib/tdl/tdl.rb +1 -0
  42. metadata +11 -2
@@ -0,0 +1,210 @@
1
+
2
+ `define CheckParamPair(X,Y)\
3
+ initial begin\
4
+ Check_Param_Pair(X,Y,`__FILE__,`__LINE__,`"X != Y`");\
5
+ end
6
+ //---- TAP FLAG -----------------------------------
7
+ // `define
8
+
9
+ `define VIVADO_ENV
10
+
11
+ `define parameter_string parameter
12
+ `define parameter_longstring(num=63) parameter
13
+
14
+ // VCS AXI4 comptable macro
15
+
16
+ // `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport,flag)\
17
+ // axi_inf #(\
18
+ // .IDSIZE (origin_axi4.IDSIZE),\
19
+ // .ASIZE (origin_axi4.ASIZE ),\
20
+ // .LSIZE (origin_axi4.LSIZE ),\
21
+ // .DSIZE (origin_axi4.DSIZE ),\
22
+ // .MODE (origin_axi4.MODE ),\
23
+ // .ADDR_STEP (origin_axi4.ADDR_STEP),\
24
+ // .FreqM (origin_axi4.FreqM )\
25
+ // )origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``(\
26
+ // /* input bit */ .axi_aclk (origin_axi4.axi_aclk ),\
27
+ // /* input bit */ .axi_aresetn (origin_axi4.axi_aresetn )\
28
+ // );\
29
+ // vcs_axi4_comptable #(\
30
+ // .ORIGIN (`"origin_modport`"),\
31
+ // .TO (`"to_modport`")\
32
+ // )origin_axi4``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
33
+ // /* axi_inf */ .origin (origin_axi4 ),\
34
+ // /* axi_inf */ .to (origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``)\
35
+ // );\
36
+ // `define origin_axi4``_vcs_cpt``flag origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``
37
+
38
+ `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport,flag)\
39
+ `define origin_axi4``_vcs_cpt``flag origin_axi4
40
+
41
+ // VCS AXI STREAM comptable macro
42
+ // `define VCS_AXIS_CPT(origin_axis,origin_modport,to_modport,flag)\
43
+ // axi_stream_inf #(\
44
+ // .DSIZE (origin_axis.DSIZE),\
45
+ // .FreqM (origin_axis.FreqM),\
46
+ // .KSIZE (origin_axis.KSIZE),\
47
+ // .CSIZE (origin_axis.CSIZE)\
48
+ // )origin_axis``_vcs_cpt_``origin_modport``_``to_modport``(\
49
+ // /* input bit */ .aclk (origin_axis.aclk ),\
50
+ // /* input bit */ .aresetn (origin_axis.aresetn ),\
51
+ // /* input bit */ .aclken (origin_axis.aclken )\
52
+ // );\
53
+ // vcs_axis_comptable #(\
54
+ // .ORIGIN (`"origin_modport`"),\
55
+ // .TO (`"to_modport`")\
56
+ // )origin_axis``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
57
+ // /* axi_inf */ .origin (origin_axis ),\
58
+ // /* axi_inf */ .to (origin_axis``_vcs_cpt_``origin_modport``_``to_modport`` )\
59
+ // );\
60
+ // `define origin_axis``_vcs_cpt``flag origin_axis``_vcs_cpt_``origin_modport``_``to_modport``
61
+ `define VCS_AXIS_CPT(origin_axis,origin_modport,to_modport,flag)\
62
+ `define origin_axis``_vcs_cpt``flag origin_axis
63
+
64
+ // VCS DATA_C comptable macro
65
+ // `define VCS_DATAC_CPT(origin_inf,origin_modport,to_modport,flag)\
66
+ // data_inf_c #(\
67
+ // .DSIZE (origin_inf.DSIZE),\
68
+ // .FreqM (origin_inf.FreqM)\
69
+ // )origin_inf``_vcs_cpt_``origin_modport``_``to_modport``(\
70
+ // /* input bit */ .clock (origin_inf.clock ),\
71
+ // /* input bit */ .rst_n (origin_inf.rst_n )\
72
+ // );\
73
+ // vcs_data_c_comptable #(\
74
+ // .ORIGIN (`"origin_modport`"),\
75
+ // .TO (`"to_modport`")\
76
+ // )origin_inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
77
+ // /* data_inf_c */ .origin (origin_inf ),\
78
+ // /* data_inf_c */ .to (origin_inf``_vcs_cpt_``origin_modport``_``to_modport`` )\
79
+ // );\
80
+ // `define origin_inf``_vcs_cpt``flag origin_inf``_vcs_cpt_``origin_modport``_``to_modport``
81
+ `define VCS_DATAC_CPT(origin_inf,origin_modport,to_modport,flag)\
82
+ `define origin_inf``_vcs_cpt``flag origin_inf
83
+
84
+ // VCS AXI4 comptable macro
85
+ // Lock TO
86
+ // `define VCS_AXI4_CPT_LT(inf,origin_modport,to_modport,flag)\
87
+ // axi_inf #(\
88
+ // .IDSIZE (inf.IDSIZE),\
89
+ // .ASIZE (inf.ASIZE ),\
90
+ // .LSIZE (inf.LSIZE ),\
91
+ // .DSIZE (inf.DSIZE ),\
92
+ // .MODE (inf.MODE ),\
93
+ // .ADDR_STEP (inf.ADDR_STEP),\
94
+ // .FreqM (inf.FreqM )\
95
+ // )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
96
+ // /* input bit */ .axi_aclk (inf.axi_aclk ),\
97
+ // /* input bit */ .axi_aresetn (inf.axi_aresetn )\
98
+ // );\
99
+ // vcs_axi4_comptable #(\
100
+ // .ORIGIN (`"origin_modport`"),\
101
+ // .TO (`"to_modport`")\
102
+ // )inf``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
103
+ // /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport``),\
104
+ // /* axi_inf */ .to (inf)\
105
+ // );\
106
+ // `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
107
+ `define VCS_AXI4_CPT_LT(inf,origin_modport,to_modport,flag)\
108
+ `define inf``_vcs_cpt``flag inf
109
+
110
+ // `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport)\
111
+ // `define origin_axi4``_vcs_cpt origin_axi4
112
+
113
+ // VCS AXI STREAM comptable macro
114
+ // Lock to
115
+ // `define VCS_AXIS_CPT_LT(inf,origin_modport,to_modport,flag)\
116
+ // axi_stream_inf #(\
117
+ // .DSIZE (inf.DSIZE),\
118
+ // .FreqM (inf.FreqM),\
119
+ // .KSIZE (inf.KSIZE),\
120
+ // .CSIZE (inf.CSIZE)\
121
+ // )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
122
+ // /* input bit */ .aclk (inf.aclk ),\
123
+ // /* input bit */ .aresetn (inf.aresetn ),\
124
+ // /* input bit */ .aclken (inf.aclken )\
125
+ // );\
126
+ // vcs_axis_comptable #(\
127
+ // .ORIGIN (`"origin_modport`"),\
128
+ // .TO (`"to_modport`")\
129
+ // )inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
130
+ // /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport`` ),\
131
+ // /* axi_inf */ .to (inf )\
132
+ // );\
133
+ // `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
134
+ `define VCS_AXIS_CPT_LT(inf,origin_modport,to_modport,flag)\
135
+ `define inf``_vcs_cpt``flag inf
136
+
137
+
138
+ // VCS DATA_C comptable macro
139
+ // Lock to
140
+ // `define VCS_DATAC_CPT_LT(inf,origin_modport,to_modport,flag)\
141
+ // data_inf_c #(\
142
+ // .DSIZE (inf.DSIZE),\
143
+ // .FreqM (inf.FreqM)\
144
+ // )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
145
+ // /* input bit */ .clock (inf.clock ),\
146
+ // /* input bit */ .rst_n (inf.rst_n )\
147
+ // );\
148
+ // vcs_data_c_comptable #(\
149
+ // .ORIGIN (`"origin_modport`"),\
150
+ // .TO (`"to_modport`")\
151
+ // )inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
152
+ // /* data_inf_c */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport`` ),\
153
+ // /* data_inf_c */ .to (inf )\
154
+ // );\
155
+ // `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
156
+ `define VCS_DATAC_CPT_LT(inf,origin_modport,to_modport,flag)\
157
+ `define inf``_vcs_cpt``flag inf
158
+
159
+ // VCS AXI4 comptable macro
160
+
161
+ // `define VCS_AXI4_ARRAY_CPT(num,origin_axi4,origin_modport,to_modport,flag)\
162
+ // axi_inf #(\
163
+ // .IDSIZE (origin_axi4[0].IDSIZE),\
164
+ // .ASIZE (origin_axi4[0].ASIZE ),\
165
+ // .LSIZE (origin_axi4[0].LSIZE ),\
166
+ // .DSIZE (origin_axi4[0].DSIZE ),\
167
+ // .MODE (origin_axi4[0].MODE ),\
168
+ // .ADDR_STEP (origin_axi4[0].ADDR_STEP),\
169
+ // .FreqM (origin_axi4[0].FreqM )\
170
+ // )origin_axi4``_vcs_cpt_``origin_modport``_``to_modport`` [num-1:0](\
171
+ // /* input bit */ .axi_aclk (origin_axi4[0].axi_aclk ),\
172
+ // /* input bit */ .axi_aresetn (origin_axi4[0].axi_aresetn )\
173
+ // );\
174
+ // vcs_axi4_array_comptable #(\
175
+ // .NUM (num ),\
176
+ // .ORIGIN (`"origin_modport`"),\
177
+ // .TO (`"to_modport`")\
178
+ // )origin_axi4``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
179
+ // /* axi_inf */ .origin (origin_axi4 ),\
180
+ // /* axi_inf */ .to (origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``)\
181
+ // );\
182
+ // `define origin_axi4``_vcs_cpt``flag origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``
183
+ `define VCS_AXI4_ARRAY_CPT(num,origin_axi4,origin_modport,to_modport,flag)\
184
+ `define origin_axi4``_vcs_cpt``flag origin_axi4
185
+
186
+
187
+ // `define VCS_AXI4_ARRAY_CPT_LT(num,inf,origin_modport,to_modport,flag)\
188
+ // axi_inf #(\
189
+ // .IDSIZE (inf[0].IDSIZE),\
190
+ // .ASIZE (inf[0].ASIZE ),\
191
+ // .LSIZE (inf[0].LSIZE ),\
192
+ // .DSIZE (inf[0].DSIZE ),\
193
+ // .MODE (inf[0].MODE ),\
194
+ // .ADDR_STEP (inf[0].ADDR_STEP),\
195
+ // .FreqM (inf[0].FreqM )\
196
+ // )inf``_vcs_cpt_``origin_modport``_``to_modport`` [num-1:0](\
197
+ // /* input bit */ .axi_aclk (inf[0].axi_aclk ),\
198
+ // /* input bit */ .axi_aresetn (inf[0].axi_aresetn )\
199
+ // );\
200
+ // vcs_axi4_array_comptable #(\
201
+ // .NUM (num ),\
202
+ // .ORIGIN (`"origin_modport`"),\
203
+ // .TO (`"to_modport`")\
204
+ // )inf``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
205
+ // /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport``),\
206
+ // /* axi_inf */ .to (inf)\
207
+ // );\
208
+ // `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
209
+ `define VCS_AXI4_ARRAY_CPT_LT(num,inf,origin_modport,to_modport,flag)\
210
+ `define inf``_vcs_cpt``flag inf
@@ -0,0 +1,194 @@
1
+
2
+ `define CheckParamPair(X,Y)\
3
+ initial begin\
4
+ Check_Param_Pair(X,Y,`__FILE__,`__LINE__,`"X != Y`");\
5
+ end
6
+ //---- TAP FLAG -----------------------------------
7
+
8
+ `define VCS_ENV
9
+
10
+ `define parameter_string parameter [8*32-1:0]
11
+ `define parameter_longstring(num=128) parameter [num*32-1:0]
12
+ // VCS AXI4 comptable macro
13
+
14
+ `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport,flag)\
15
+ axi_inf #(\
16
+ .IDSIZE (origin_axi4.IDSIZE),\
17
+ .ASIZE (origin_axi4.ASIZE ),\
18
+ .LSIZE (origin_axi4.LSIZE ),\
19
+ .DSIZE (origin_axi4.DSIZE ),\
20
+ .MODE (`"BOTH`" ),\
21
+ .ADDR_STEP (origin_axi4.ADDR_STEP),\
22
+ .FreqM (origin_axi4.FreqM )\
23
+ )origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``(\
24
+ /* input bit */ .axi_aclk (origin_axi4.axi_aclk ),\
25
+ /* input bit */ .axi_aresetn (origin_axi4.axi_aresetn )\
26
+ );\
27
+ vcs_axi4_comptable #(\
28
+ .ORIGIN (`"origin_modport`"),\
29
+ .TO (`"to_modport`")\
30
+ )origin_axi4``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
31
+ /* axi_inf */ .origin (origin_axi4 ),\
32
+ /* axi_inf */ .to (origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``)\
33
+ );\
34
+ `define origin_axi4``_vcs_cpt``flag origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``
35
+
36
+ // `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport)\
37
+ // `define origin_axi4``_vcs_cpt origin_axi4
38
+
39
+ // VCS AXI STREAM comptable macro
40
+ `define VCS_AXIS_CPT(origin_axis,origin_modport,to_modport,flag)\
41
+ axi_stream_inf #(\
42
+ .DSIZE (origin_axis.DSIZE),\
43
+ .FreqM (origin_axis.FreqM),\
44
+ .KSIZE (origin_axis.KSIZE),\
45
+ .CSIZE (origin_axis.CSIZE)\
46
+ )origin_axis``_vcs_cpt_``origin_modport``_``to_modport``(\
47
+ /* input bit */ .aclk (origin_axis.aclk ),\
48
+ /* input bit */ .aresetn (origin_axis.aresetn ),\
49
+ /* input bit */ .aclken (origin_axis.aclken )\
50
+ );\
51
+ vcs_axis_comptable #(\
52
+ .ORIGIN (`"origin_modport`"),\
53
+ .TO (`"to_modport`")\
54
+ )origin_axis``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
55
+ /* axi_inf */ .origin (origin_axis ),\
56
+ /* axi_inf */ .to (origin_axis``_vcs_cpt_``origin_modport``_``to_modport`` )\
57
+ );\
58
+ `define origin_axis``_vcs_cpt``flag origin_axis``_vcs_cpt_``origin_modport``_``to_modport``
59
+
60
+ // VCS DATA_C comptable macro
61
+ `define VCS_DATAC_CPT(origin_inf,origin_modport,to_modport,flag)\
62
+ data_inf_c #(\
63
+ .DSIZE (origin_inf.DSIZE),\
64
+ .FreqM (origin_inf.FreqM)\
65
+ )origin_inf``_vcs_cpt_``origin_modport``_``to_modport``(\
66
+ /* input bit */ .clock (origin_inf.clock ),\
67
+ /* input bit */ .rst_n (origin_inf.rst_n )\
68
+ );\
69
+ vcs_data_c_comptable #(\
70
+ .ORIGIN (`"origin_modport`"),\
71
+ .TO (`"to_modport`")\
72
+ )origin_inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
73
+ /* data_inf_c */ .origin (origin_inf ),\
74
+ /* data_inf_c */ .to (origin_inf``_vcs_cpt_``origin_modport``_``to_modport`` )\
75
+ );\
76
+ `define origin_inf``_vcs_cpt``flag origin_inf``_vcs_cpt_``origin_modport``_``to_modport``
77
+
78
+
79
+ // VCS AXI4 comptable macro
80
+ // Lock TO
81
+ `define VCS_AXI4_CPT_LT(inf,origin_modport,to_modport,flag)\
82
+ axi_inf #(\
83
+ .IDSIZE (inf.IDSIZE),\
84
+ .ASIZE (inf.ASIZE ),\
85
+ .LSIZE (inf.LSIZE ),\
86
+ .DSIZE (inf.DSIZE ),\
87
+ .MODE (`"BOTH`" ),\
88
+ .ADDR_STEP (inf.ADDR_STEP),\
89
+ .FreqM (inf.FreqM )\
90
+ )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
91
+ /* input bit */ .axi_aclk (inf.axi_aclk ),\
92
+ /* input bit */ .axi_aresetn (inf.axi_aresetn )\
93
+ );\
94
+ vcs_axi4_comptable #(\
95
+ .ORIGIN (`"origin_modport`"),\
96
+ .TO (`"to_modport`")\
97
+ )inf``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
98
+ /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport``),\
99
+ /* axi_inf */ .to (inf)\
100
+ );\
101
+ `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
102
+
103
+ // `define VCS_AXI4_CPT(origin_axi4,origin_modport,to_modport)\
104
+ // `define origin_axi4``_vcs_cpt origin_axi4
105
+
106
+ // VCS AXI STREAM comptable macro
107
+ // Lock to
108
+ `define VCS_AXIS_CPT_LT(inf,origin_modport,to_modport,flag)\
109
+ axi_stream_inf #(\
110
+ .DSIZE (inf.DSIZE),\
111
+ .FreqM (inf.FreqM),\
112
+ .KSIZE (inf.KSIZE),\
113
+ .CSIZE (inf.CSIZE)\
114
+ )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
115
+ /* input bit */ .aclk (inf.aclk ),\
116
+ /* input bit */ .aresetn (inf.aresetn ),\
117
+ /* input bit */ .aclken (inf.aclken )\
118
+ );\
119
+ vcs_axis_comptable #(\
120
+ .ORIGIN (`"origin_modport`"),\
121
+ .TO (`"to_modport`")\
122
+ )inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
123
+ /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport`` ),\
124
+ /* axi_inf */ .to (inf )\
125
+ );\
126
+ `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
127
+
128
+ // VCS DATA_C comptable macro
129
+ // Lock to
130
+ `define VCS_DATAC_CPT_LT(inf,origin_modport,to_modport,flag)\
131
+ data_inf_c #(\
132
+ .DSIZE (inf.DSIZE),\
133
+ .FreqM (inf.FreqM)\
134
+ )inf``_vcs_cpt_``origin_modport``_``to_modport``(\
135
+ /* input bit */ .clock (inf.clock ),\
136
+ /* input bit */ .rst_n (inf.rst_n )\
137
+ );\
138
+ vcs_data_c_comptable #(\
139
+ .ORIGIN (`"origin_modport`"),\
140
+ .TO (`"to_modport`")\
141
+ )inf``_vcs_axis_comptable_``origin_modport``_``to_modport``_inst(\
142
+ /* data_inf_c */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport`` ),\
143
+ /* data_inf_c */ .to (inf )\
144
+ );\
145
+ `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
146
+
147
+ // VCS AXI4 comptable macro
148
+
149
+ `define VCS_AXI4_ARRAY_CPT(num,origin_axi4,origin_modport,to_modport,flag)\
150
+ axi_inf #(\
151
+ .IDSIZE (origin_axi4[0].IDSIZE),\
152
+ .ASIZE (origin_axi4[0].ASIZE ),\
153
+ .LSIZE (origin_axi4[0].LSIZE ),\
154
+ .DSIZE (origin_axi4[0].DSIZE ),\
155
+ .MODE (`"BOTH`" ),\
156
+ .ADDR_STEP (origin_axi4[0].ADDR_STEP),\
157
+ .FreqM (origin_axi4[0].FreqM )\
158
+ )origin_axi4``_vcs_cpt_``origin_modport``_``to_modport`` [num-1:0](\
159
+ /* input bit */ .axi_aclk (origin_axi4[0].axi_aclk ),\
160
+ /* input bit */ .axi_aresetn (origin_axi4[0].axi_aresetn )\
161
+ );\
162
+ vcs_axi4_array_comptable #(\
163
+ .NUM (num ),\
164
+ .ORIGIN (`"origin_modport`"),\
165
+ .TO (`"to_modport`")\
166
+ )origin_axi4``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
167
+ /* axi_inf */ .origin (origin_axi4 ),\
168
+ /* axi_inf */ .to (origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``)\
169
+ );\
170
+ `define origin_axi4``_vcs_cpt``flag origin_axi4``_vcs_cpt_``origin_modport``_``to_modport``
171
+
172
+
173
+ `define VCS_AXI4_ARRAY_CPT_LT(num,inf,origin_modport,to_modport,flag)\
174
+ axi_inf #(\
175
+ .IDSIZE (inf[0].IDSIZE),\
176
+ .ASIZE (inf[0].ASIZE ),\
177
+ .LSIZE (inf[0].LSIZE ),\
178
+ .DSIZE (inf[0].DSIZE ),\
179
+ .MODE (`"BOTH`" ),\
180
+ .ADDR_STEP (inf[0].ADDR_STEP),\
181
+ .FreqM (inf[0].FreqM )\
182
+ )inf``_vcs_cpt_``origin_modport``_``to_modport`` [num-1:0](\
183
+ /* input bit */ .axi_aclk (inf[0].axi_aclk ),\
184
+ /* input bit */ .axi_aresetn (inf[0].axi_aresetn )\
185
+ );\
186
+ vcs_axi4_array_comptable #(\
187
+ .NUM (num ),\
188
+ .ORIGIN (`"origin_modport`"),\
189
+ .TO (`"to_modport`")\
190
+ )inf``_vcs_axi4_comptable_``origin_modport``_``to_modport``_inst(\
191
+ /* axi_inf */ .origin (inf``_vcs_cpt_``origin_modport``_``to_modport``),\
192
+ /* axi_inf */ .to (inf)\
193
+ );\
194
+ `define inf``_vcs_cpt``flag inf``_vcs_cpt_``origin_modport``_``to_modport``
@@ -1,3 +1,3 @@
1
1
  module AxiTdl
2
- VERSION = "0.1.20"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -60,6 +60,9 @@ def __require_shdl__(shdl_name,encoding='utf-8')
60
60
  end
61
61
 
62
62
  require_relative File.join(__dir__,"tmp","#{shdl_name}_sdl.rb")
63
+
64
+ TopModule.contain_hdl rel
65
+
63
66
  return
64
67
  end
65
68
 
@@ -60,6 +60,58 @@ class Axi4
60
60
  end
61
61
 
62
62
  def <<(*up_streams)
63
+ require_shdl 'axi4_direct_algin_addr_step'
64
+ up_streams.each do |up_stream|
65
+ ## e is a Vector
66
+ if up_stream.is_a? Axi4
67
+ if up_stream.dimension && up_stream.dimension[0].is_a?(Integer) && up_stream.dimension[0] > 1
68
+ self.belong_to_module.instance_exec(self,up_stream) do |curr_axi4_inst,up_stream|
69
+ up_stream.copy(
70
+ name: "#{up_stream.inst_name}_algin_addr",
71
+ addr_step: curr_axi4_inst.addr_step*up_stream.dsize/curr_axi4_inst.dsize,
72
+ dimension:up_stream.dimension)
73
+
74
+ generate(up_stream.dimension[0]) do |kk|
75
+ Instance(:axi4_direct_algin_addr_step,"algin_addr_#{up_stream.inst_name}_#{curr_axi4_inst.name}") do |h| #(
76
+ h.param.SLAVER_ADDR_STEP up_stream.addr_step
77
+ h.param.TERMENAL_ADDR_STEP curr_axi4_inst.addr_step
78
+ h.param.TERMENAL_DSIZE curr_axi4_inst.dsize
79
+ h.param.MODE "#{up_stream.mode}_to_#{up_stream.mode}" #//ONLY_READ to BOTH,ONLY_WRITE to BOTH,BOTH to BOTH,BOTH to ONLY_READ,BOTH to ONLY_WRITE
80
+ h.param.SLAVER_MODE up_stream.mode
81
+ h.param.MASTER_MODE up_stream.mode
82
+ h.port.axi_inf.slaver.slaver_inf up_stream[kk]
83
+ h.port.axi_inf.master.master_inf curr_axi4_inst.belong_to_module.signal("#{up_stream.inst_name}_algin_addr")[kk]
84
+ end
85
+ end
86
+ curr_axi4_inst.old_append( signal("#{up_stream.inst_name}_algin_addr") )
87
+ end
88
+ else
89
+ curr_axi4_inst = self
90
+ up_stream.copy(
91
+ name: "#{up_stream.inst_name}_algin_addr",
92
+ addr_step: curr_axi4_inst.addr_step*up_stream.dsize/curr_axi4_inst.dsize)
93
+
94
+ self.belong_to_module.Instance(:axi4_direct_algin_addr_step,"algin_addr_#{up_stream.inst_name}_#{name}_#{belong_to_module._auto_name_incr_index_}") do |h| #(
95
+ h.param.SLAVER_ADDR_STEP up_stream.addr_step
96
+ h.param.TERMENAL_ADDR_STEP curr_axi4_inst.addr_step
97
+ h.param.TERMENAL_DSIZE curr_axi4_inst.dsize
98
+ h.param.MODE "#{up_stream.mode}_to_#{up_stream.mode}" #//ONLY_READ to BOTH,ONLY_WRITE to BOTH,BOTH to BOTH,BOTH to ONLY_READ,BOTH to ONLY_WRITE
99
+ h.param.SLAVER_MODE up_stream.mode
100
+ h.param.MASTER_MODE up_stream.mode
101
+ h.port.axi_inf.slaver.slaver_inf up_stream
102
+ h.port.axi_inf.master.master_inf self.belong_to_module.signal("#{up_stream.inst_name}_algin_addr")
103
+
104
+ end
105
+ curr_axi4_inst.old_append( self.belong_to_module.signal("#{up_stream.inst_name}_algin_addr") )
106
+ end
107
+ else
108
+ self.old_append(up_stream)
109
+ end
110
+ end
111
+
112
+ end
113
+
114
+ def old_append(*up_streams)
63
115
  @interconnect_up_streams ||= []
64
116
  push_to_stack
65
117
  up_streams.each do |e|
@@ -178,30 +230,44 @@ class Axi4
178
230
  # if(true )
179
231
  new_master = self.copy(mode:e.mode,idsize:e.idsize+4)
180
232
  new_master.mode = e.mode
181
- # Axi4.axi4_long_to_axi4_wide(slaver:e,master:new_master)
182
- # Axi4.axi4_long_to_axi4_wide_verb(slaver:e,master:new_master,partition:"ON",pipe:(@interconnect_pipe ? "ON" : "OFF"))
183
- belong_to_module.Instance(:axi4_long_to_axi4_wide_verb,"axi4_long_to_axi4_wide_verb_#{index}_inst") do |h|
233
+
234
+ require_hdl 'axi4_long_to_axi4_wide_B1.sv'
235
+
236
+ TopModule.contain_hdl 'axi4_packet_fifo_verb.sv'
237
+ TopModule.contain_hdl 'axi4_data_convert_verb.sv'
238
+ TopModule.contain_hdl 'data_c_pipe_force_vld.sv'
239
+
240
+ belong_to_module.Instance(:axi4_long_to_axi4_wide_B1,"axi4_long_to_axi4_wide_B1_#{index}_inst") do |h|
184
241
  h[:PARTITION] = "ON"
185
242
  h[:PIPE] = (@interconnect_pipe ? "ON" : "OFF")
186
- h[:slaver] = e
187
- h[:master] = new_master
243
+ h[:MODE] = "#{e.mode}_TO_#{new_master.mode}"
244
+ h[:SLAVER_MODE] = e.mode
245
+ h[:MASTER_MODE] = new_master.mode
246
+ h[:slaver_inf] = e
247
+ h[:master_inf] = new_master
188
248
  end
189
249
  @_long_slim_to_wide << new_master
190
250
  else
191
251
  if !(e.dsize.eql? self.dsize)
192
- require_hdl 'axi4_long_to_axi4_wide_verb.sv'
193
- TopModule.contain_hdl 'axi4_direct_verb.sv'
252
+ require_hdl 'axi4_long_to_axi4_wide_B1.sv'
253
+ TopModule.contain_hdl 'axi4_direct_verc.sv'
254
+ TopModule.contain_hdl 'axi4_packet_fifo_verb.sv'
255
+ TopModule.contain_hdl 'axi4_data_convert_verb.sv'
256
+ TopModule.contain_hdl 'data_c_pipe_force_vld.sv'
194
257
  # puts "#{e.dsize} == #{self.dsize} #{e.dsize != self.dsize} #{e.dsize.class}"
195
258
  new_master = self.copy(name: "#{e.name}_renew_dir",mode:e.mode,idsize:e.idsize)
196
259
  # new_master.axi4_data_convert(up_stream: e)
197
260
  # @_long_slim_to_wide << Axi4.axi4_pipe(up_stream:new_master)
198
261
 
199
262
  # Axi4.axi4_long_to_axi4_wide_verb(slaver:e,master:new_master,partition:"OFF",pipe:(@interconnect_pipe ? "ON" : "OFF"))
200
- belong_to_module.Instance(:axi4_long_to_axi4_wide_verb,"axi4_long_to_axi4_wide_verb_#{index}_inst") do |h|
263
+ belong_to_module.Instance(:axi4_long_to_axi4_wide_B1,"axi4_long_to_axi4_wide_B1_#{index}_inst") do |h|
201
264
  h[:PARTITION] = "OFF"
202
265
  h[:PIPE] = (@interconnect_pipe ? "ON" : "OFF")
203
- h[:slaver] = e
204
- h[:master] = new_master
266
+ h[:MODE] = "#{e.mode}_to_#{new_master.mode}"
267
+ h[:SLAVER_MODE] = e.mode
268
+ h[:MASTER_MODE] = new_master.mode
269
+ h[:slaver_inf] = e
270
+ h[:master_inf] = new_master
205
271
  end
206
272
  @_long_slim_to_wide << new_master
207
273
 
@@ -1,35 +1,9 @@
1
- /**********************************************
2
- _______________________________________
3
- ___________ Cook Darwin __________
4
- _______________________________________
5
- descript:
6
- author : Cook.Darwin
7
- Version: VERA.0.0
8
- created: 2021-09-30 21:21:22 +0800
9
- madified:
10
- ***********************************************/
11
- `timescale 1ns/1ps
12
-
13
- module exp_test_unit (
14
- input clock,
15
- input rst_n
16
- );
17
-
18
- //==========================================================================
19
- //-------- define ----------------------------------------------------------
20
- logic enable;
21
- axi_stream_inf #(.DSIZE(8),.FreqM(100),.USIZE(1)) axis_data_inf (.aclk(clock),.aresetn(rst_n),.aclken(1'b1)) ;
22
- //==========================================================================
23
- //-------- instance --------------------------------------------------------
24
- sub_md1 sub_md1_inst(
25
- /* axi_stream_inf.master */.axis_out (axis_data_inf ),
26
- /* output */.enable (enable )
27
- );
28
- sub_md0 sub_md0_inst(
29
- /* axi_stream_inf.slaver */.axis_in (axis_data_inf ),
30
- /* input */.enable (enable )
31
- );
32
- //==========================================================================
33
- //-------- expression ------------------------------------------------------
34
1
 
2
+ `timescale 1ns/1ps
3
+ module exp_test_unit();
4
+ initial begin
5
+ #(1us);
6
+ $warning("Check TopModule.sim,please!!!");
7
+ $stop;
8
+ end
35
9
  endmodule
@@ -5,7 +5,7 @@ _______________________________________
5
5
  descript:
6
6
  author : Cook.Darwin
7
7
  Version: VERA.0.0
8
- created: 2021-05-04 20:03:48 +0800
8
+ created: 2022-07-10 11:18:43 +0800
9
9
  madified:
10
10
  ***********************************************/
11
11
  `timescale 1ns/1ps
@@ -5,7 +5,7 @@ _______________________________________
5
5
  descript:
6
6
  author : Cook.Darwin
7
7
  Version: VERA.0.0
8
- created: 2021-04-03 14:05:10 +0800
8
+ created: 2022-07-10 11:18:28 +0800
9
9
  madified:
10
10
  ***********************************************/
11
11
  `timescale 1ns/1ps
@@ -15,8 +15,8 @@ module tb_exp_test_unit_sim();
15
15
  //-------- define ----------------------------------------------------------
16
16
  logic sys_clk;
17
17
  string test_unit_region;
18
- logic [2-1:0] unit_pass_u ;
19
- logic [2-1:0] unit_pass_d ;
18
+ logic [0-1:0] unit_pass_u ;
19
+ logic [0-1:0] unit_pass_d ;
20
20
 
21
21
  //==========================================================================
22
22
  //-------- instance --------------------------------------------------------
@@ -24,18 +24,7 @@ exp_test_unit_sim rtl_top(
24
24
  /* input clock */.clock (sys_clk ),
25
25
  /* input reset */.rst_n (1'b1 )
26
26
  );
27
- tu0 test_unit_0(
28
- /* input */.from_up_pass (unit_pass_u[0] ),
29
- /* output */.to_down_pass (unit_pass_d[0] )
30
- );
31
- tu1 test_unit_1(
32
- /* input */.from_up_pass (unit_pass_u[1] ),
33
- /* output */.to_down_pass (unit_pass_d[1] )
34
- );
35
27
  //==========================================================================
36
28
  //-------- expression ------------------------------------------------------
37
- assign unit_pass_u[0] = 1'b1;
38
-
39
- assign unit_pass_u[1] = unit_pass_d[0];
40
29
 
41
30
  endmodule
@@ -5,7 +5,7 @@ _______________________________________
5
5
  descript:
6
6
  author : Cook.Darwin
7
7
  Version: VERA.0.0
8
- created: 2021-09-30 21:21:22 +0800
8
+ created: 2022-07-10 11:18:43 +0800
9
9
  madified:
10
10
  ***********************************************/
11
11
  `timescale 1ns/1ps
@@ -5,7 +5,7 @@ _______________________________________
5
5
  descript:
6
6
  author : Cook.Darwin
7
7
  Version: VERA.0.0
8
- created: 2021-09-30 21:21:22 +0800
8
+ created: 2022-07-10 11:18:43 +0800
9
9
  madified:
10
10
  ***********************************************/
11
11
  `timescale 1ns/1ps
@@ -19,7 +19,7 @@ module test_module_var #(
19
19
 
20
20
  //==========================================================================
21
21
  //-------- define ----------------------------------------------------------
22
- localparam ASIZE = 20;
22
+ localparam ASIZE = 20 ;
23
23
  axi_stream_inf #(.DSIZE(8),.FreqM(100),.USIZE(1)) tmp_axis_inf (.aclk(clock),.aresetn(rst_n),.aclken(1'b1)) ;
24
24
  axi_stream_inf #(.DSIZE(8),.FreqM(100),.USIZE(1)) tmp_axis0_inf (.aclk(clock),.aresetn(rst_n),.aclken(1'b1)) ;
25
25
  axi_inf #(.DSIZE(32),.IDSIZE(2),.ASIZE(8),.LSIZE(9),.MODE("BOTH"),.ADDR_STEP(4294967295),.FreqM(100)) tmp_axi4_inf (.axi_aclk(clock),.axi_aresetn(rst_n)) ;
@@ -5,7 +5,7 @@ _______________________________________
5
5
  descript:
6
6
  author : Cook.Darwin
7
7
  Version: VERA.0.0
8
- created: 2021-09-30 21:21:38 +0800
8
+ created: 2022-07-10 11:21:57 +0800
9
9
  madified:
10
10
  ***********************************************/
11
11
  `timescale 1ns/1ps