axi_tdl 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +7 -0
- data/lib/axi/AXI4/axi4_direct_A1.sv +1 -1
- data/lib/axi/AXI4/axi4_direct_verc.sv +54 -54
- data/lib/axi/AXI4/axi4_dpram_cache.sv +2 -2
- data/lib/axi/AXI4/axis_to_axi4_wr.sv +8 -8
- data/lib/axi/AXI4/odata_pool_axi4_A3.sv +7 -0
- data/lib/axi/AXI4/packet_partition/axi4_partition_rd_verb.sv +1 -1
- data/lib/axi/AXI4/packet_partition/data_inf_partition.sv +2 -2
- data/lib/axi/AXI4/wide_axis_to_axi4_wr.sv +8 -8
- data/lib/axi/AXI_stream/axi_stream_split_channel.sv +154 -0
- data/lib/axi/AXI_stream/axis_head_cut_verc.sv +242 -0
- data/lib/axi/AXI_stream/axis_insert_copy.sv +79 -0
- data/lib/axi/AXI_stream/axis_pipe_sync_seam.sv +48 -0
- data/lib/axi/AXI_stream/axis_rom_contect_sim.sv +113 -0
- data/lib/axi/AXI_stream/axis_sim_master_model.rb +2 -0
- data/lib/axi/AXI_stream/axis_sim_master_model.sv +46 -0
- data/lib/axi/AXI_stream/axis_split_channel_verb.sv +62 -0
- data/lib/axi/common/common_ram_sim_wrapper.sv +1 -1
- data/lib/axi/common/common_ram_wrapper.sv +1 -1
- data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.sv +11 -11
- data/lib/axi/data_interface/data_inf_c/data_c_sim_master_model.sv +14 -11
- data/lib/axi/platform_ip/fifo_36kb_long.sv +1 -1
- data/lib/axi/techbench/tb_axi_stream_split_channel.rb +1 -1
- data/lib/axi/techbench/tb_axi_stream_split_channel.sv +46 -45
- data/lib/axi_tdl/version.rb +1 -1
- data/lib/public_atom_module/CheckPClock.sv +53 -0
- data/lib/public_atom_module/LICENSE.md +674 -0
- data/lib/public_atom_module/altera_xilinx_always_block_sw.rb +57 -0
- data/lib/public_atom_module/bits_decode.sv +71 -0
- data/lib/public_atom_module/bits_decode_verb.sv +71 -0
- data/lib/public_atom_module/bits_decode_verb_sdl.rb +24 -0
- data/lib/public_atom_module/broaden.v +43 -0
- data/lib/public_atom_module/broaden_and_cross_clk.v +47 -0
- data/lib/public_atom_module/ceiling.v +39 -0
- data/lib/public_atom_module/ceiling_A1.v +42 -0
- data/lib/public_atom_module/clock_rst.sv +64 -0
- data/lib/public_atom_module/cross_clk_sync.v +37 -0
- data/lib/public_atom_module/edge_generator.v +50 -0
- data/lib/public_atom_module/flooring.v +36 -0
- data/lib/public_atom_module/latch_data.v +30 -0
- data/lib/public_atom_module/latency.v +48 -0
- data/lib/public_atom_module/latency_dynamic.v +83 -0
- data/lib/public_atom_module/latency_long.v +84 -0
- data/lib/public_atom_module/latency_verb.v +52 -0
- data/lib/public_atom_module/once_event.sv +65 -0
- data/lib/public_atom_module/pipe_reg.v +93 -0
- data/lib/public_atom_module/pipe_reg_2write_ports.v +84 -0
- data/lib/public_atom_module/sim/clock_rst_verb.sv +54 -0
- data/lib/public_atom_module/sim/latency_long_tb.sv +49 -0
- data/lib/public_atom_module/sim/latency_long_tb.sv.bak +49 -0
- data/lib/tdl/Logic/logic_edge.rb +1 -1
- data/lib/tdl/axi4/axi4_interconnect_verb.rb +46 -9
- data/lib/tdl/class_hdl/hdl_always_comb.rb +4 -1
- data/lib/tdl/class_hdl/hdl_always_ff.rb +2 -2
- data/lib/tdl/class_hdl/hdl_assign.rb +7 -1
- data/lib/tdl/class_hdl/hdl_block_ifelse.rb +7 -7
- data/lib/tdl/class_hdl/hdl_foreach.rb +2 -2
- data/lib/tdl/class_hdl/hdl_function.rb +4 -4
- data/lib/tdl/class_hdl/hdl_generate.rb +4 -1
- data/lib/tdl/class_hdl/hdl_initial.rb +25 -3
- data/lib/tdl/class_hdl/hdl_module_def.rb +9 -6
- data/lib/tdl/class_hdl/hdl_package.rb +45 -0
- data/lib/tdl/class_hdl/hdl_redefine_opertor.rb +99 -27
- data/lib/tdl/class_hdl/hdl_struct.rb +2 -2
- data/lib/tdl/elements/Reset.rb +5 -9
- data/lib/tdl/elements/clock.rb +5 -9
- data/lib/tdl/elements/data_inf.rb +0 -17
- data/lib/tdl/elements/logic.rb +9 -31
- data/lib/tdl/elements/mail_box.rb +6 -1
- data/lib/tdl/elements/originclass.rb +17 -47
- data/lib/tdl/elements/parameter.rb +5 -6
- data/lib/tdl/examples/11_test_unit/dve.tcl +6 -153
- data/lib/tdl/examples/11_test_unit/exp_test_unit.sv +1 -1
- data/lib/tdl/examples/11_test_unit/modules/sub_md0.sv +1 -1
- data/lib/tdl/examples/11_test_unit/tb_exp_test_unit.sv +1 -3
- data/lib/tdl/examples/11_test_unit/tb_exp_test_unit_sim.sv +1 -2
- data/lib/tdl/examples/11_test_unit/tu0.sv +1 -1
- data/lib/tdl/examples/1_define_module/exmple_md.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/module_instance_test.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_inst_sugar.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_module.sv +3 -3
- data/lib/tdl/examples/2_hdl_class/tmp/test_module_port.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_module_var.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_package.sv +4 -3
- data/lib/tdl/examples/2_hdl_class/tmp/test_vcs_string.sv +1 -1
- data/lib/tdl/examples/3_hdl_sdl_instance/main_md.sv +1 -1
- data/lib/tdl/examples/3_hdl_sdl_instance/sdl_md.sv +1 -1
- data/lib/tdl/examples/6_module_with_interface/inf_collect.sv +1 -1
- data/lib/tdl/examples/7_module_with_package/body_package.sv +4 -3
- data/lib/tdl/examples/7_module_with_package/example_pkg.sv +1 -1
- data/lib/tdl/examples/7_module_with_package/head_package.sv +4 -3
- data/lib/tdl/examples/8_top_module/dve.tcl +2 -155
- data/lib/tdl/examples/8_top_module/tb_test_top.sv +1 -1
- data/lib/tdl/examples/8_top_module/tb_test_top_sim.sv +1 -1
- data/lib/tdl/examples/8_top_module/test_top.sv +1 -1
- data/lib/tdl/examples/9_itegration/dve.tcl +2 -155
- data/lib/tdl/examples/9_itegration/tb_test_tttop.sv +3 -1
- data/lib/tdl/examples/9_itegration/tb_test_tttop_sim.sv +1 -1
- data/lib/tdl/examples/9_itegration/test_tttop.sv +1 -1
- data/lib/tdl/exlib/axis_verify.rb +4 -3
- data/lib/tdl/rebuild_ele/ele_base.rb +8 -8
- data/lib/tdl/sdlmodule/sdlmodule.rb +61 -51
- data/lib/tdl/sdlmodule/sdlmodule_arraychain.rb +1 -1
- data/lib/tdl/sdlmodule/sdlmodule_instance.rb +3 -0
- data/lib/tdl/sdlmodule/sdlmodule_port_define.rb +6 -6
- data/lib/tdl/sdlmodule/sdlmodule_varible.rb +6 -6
- data/lib/tdl/sdlmodule/test_unit_module.rb +5 -0
- data/lib/tdl/tdlerror/tdlerror.rb +1 -1
- metadata +34 -3
- data/lib/axi/AXI_stream/axis_length_split_writh_user.sv +0 -87
@@ -12,128 +12,6 @@ gui_set_time_units 1ps
|
|
12
12
|
## gui_sg_addsignal -group "$_wave_session_group" { {Sim:tb_Mammo_TCP_sim.g1_test_mac_1g_inst.test_fpga_version_inst.ctrl_udp_rd_version} {Sim:tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.to_ctrl_tap_in_inf} {Sim:tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.ctrl_tap_inf} {Sim:tb_Mammo_TCP_sim.g1_test_mac_1g_inst.tcp_udp_proto_workshop_1G_inst.genblk1[0].tcp_data_stack_top_inst.client_port} }
|
13
13
|
## ==== [add_signal] ===== ##
|
14
14
|
|
15
|
-
## -------------- sub_md0_logic -------------------------
|
16
|
-
set _wave_session_group_sub_md0_logic sub_md0_logic
|
17
|
-
# set _wave_session_group_sub_md0_logic [gui_sg_generate_new_name -seed sub_md0_logic]
|
18
|
-
if {[gui_sg_is_group -name "$_wave_session_group_sub_md0_logic"]} {
|
19
|
-
set _wave_session_group_sub_md0_logic [gui_sg_generate_new_name]
|
20
|
-
}
|
21
|
-
set Group2_sub_md0_logic "$_wave_session_group_sub_md0_logic"
|
22
|
-
|
23
|
-
## 添加信号到 group
|
24
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md0_logic" { {Sim:tb_exp_test_unit.rtl_top.sub_md0_inst.cnt} }
|
25
|
-
## ============== sub_md0_logic =========================
|
26
|
-
|
27
|
-
|
28
|
-
## -------------- sub_md0_interface -------------------------
|
29
|
-
set _wave_session_group_sub_md0_interface sub_md0_interface
|
30
|
-
# set _wave_session_group_sub_md0_interface [gui_sg_generate_new_name -seed sub_md0_interface]
|
31
|
-
if {[gui_sg_is_group -name "$_wave_session_group_sub_md0_interface"]} {
|
32
|
-
set _wave_session_group_sub_md0_interface [gui_sg_generate_new_name]
|
33
|
-
}
|
34
|
-
set Group2_sub_md0_interface "$_wave_session_group_sub_md0_interface"
|
35
|
-
|
36
|
-
## 添加信号到 group
|
37
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md0_interface" { {Sim:tb_exp_test_unit.rtl_top.sub_md0_inst.axis_in} }
|
38
|
-
## ============== sub_md0_interface =========================
|
39
|
-
|
40
|
-
|
41
|
-
## -------------- sub_md0_default -------------------------
|
42
|
-
set _wave_session_group_sub_md0_default sub_md0_default
|
43
|
-
# set _wave_session_group_sub_md0_default [gui_sg_generate_new_name -seed sub_md0_default]
|
44
|
-
if {[gui_sg_is_group -name "$_wave_session_group_sub_md0_default"]} {
|
45
|
-
set _wave_session_group_sub_md0_default [gui_sg_generate_new_name]
|
46
|
-
}
|
47
|
-
set Group2_sub_md0_default "$_wave_session_group_sub_md0_default"
|
48
|
-
|
49
|
-
## 添加信号到 group
|
50
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md0_default" { }
|
51
|
-
## ============== sub_md0_default =========================
|
52
|
-
|
53
|
-
|
54
|
-
## -------------- sub_md0_default.inter_tf -------------------------
|
55
|
-
## set _wave_session_group_sub_md0_default_inter_tf Group1
|
56
|
-
## set _wave_session_group_sub_md0_default_inter_tf [gui_sg_generate_new_name -seed inter_tf -parent $_wave_session_group_sub_md0_default ]
|
57
|
-
|
58
|
-
set _wave_session_group_sub_md0_default_inter_tf $_wave_session_group_sub_md0_default|
|
59
|
-
append _wave_session_group_sub_md0_default_inter_tf inter_tf
|
60
|
-
set sub_md0_default|inter_tf "$_wave_session_group_sub_md0_default_inter_tf"
|
61
|
-
|
62
|
-
# set Group2_sub_md0_default_inter_tf "$_wave_session_group_sub_md0_default_inter_tf"
|
63
|
-
|
64
|
-
## 添加信号到 group
|
65
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md0_default_inter_tf" { {Sim:tb_exp_test_unit.rtl_top.sub_md0_inst.inter_tf} }
|
66
|
-
## ============== sub_md0_default.inter_tf =========================
|
67
|
-
|
68
|
-
|
69
|
-
## -------------- sub_md1_default -------------------------
|
70
|
-
set _wave_session_group_sub_md1_default sub_md1_default
|
71
|
-
# set _wave_session_group_sub_md1_default [gui_sg_generate_new_name -seed sub_md1_default]
|
72
|
-
if {[gui_sg_is_group -name "$_wave_session_group_sub_md1_default"]} {
|
73
|
-
set _wave_session_group_sub_md1_default [gui_sg_generate_new_name]
|
74
|
-
}
|
75
|
-
set Group2_sub_md1_default "$_wave_session_group_sub_md1_default"
|
76
|
-
|
77
|
-
## 添加信号到 group
|
78
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md1_default" { {Sim:tb_exp_test_unit.rtl_top.sub_md1_inst.cnt} {Sim:tb_exp_test_unit.rtl_top.sub_md1_inst.axis_out} {Sim:tb_exp_test_unit.rtl_top.sub_md1_inst.enable} }
|
79
|
-
## ============== sub_md1_default =========================
|
80
|
-
|
81
|
-
|
82
|
-
## -------------- sub_md1_inner -------------------------
|
83
|
-
set _wave_session_group_sub_md1_inner sub_md1_inner
|
84
|
-
# set _wave_session_group_sub_md1_inner [gui_sg_generate_new_name -seed sub_md1_inner]
|
85
|
-
if {[gui_sg_is_group -name "$_wave_session_group_sub_md1_inner"]} {
|
86
|
-
set _wave_session_group_sub_md1_inner [gui_sg_generate_new_name]
|
87
|
-
}
|
88
|
-
set Group2_sub_md1_inner "$_wave_session_group_sub_md1_inner"
|
89
|
-
|
90
|
-
## 添加信号到 group
|
91
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md1_inner" { }
|
92
|
-
## ============== sub_md1_inner =========================
|
93
|
-
|
94
|
-
|
95
|
-
## -------------- sub_md1_inner.inter_tf -------------------------
|
96
|
-
## set _wave_session_group_sub_md1_inner_inter_tf Group1
|
97
|
-
## set _wave_session_group_sub_md1_inner_inter_tf [gui_sg_generate_new_name -seed inter_tf -parent $_wave_session_group_sub_md1_inner ]
|
98
|
-
|
99
|
-
set _wave_session_group_sub_md1_inner_inter_tf $_wave_session_group_sub_md1_inner|
|
100
|
-
append _wave_session_group_sub_md1_inner_inter_tf inter_tf
|
101
|
-
set sub_md1_inner|inter_tf "$_wave_session_group_sub_md1_inner_inter_tf"
|
102
|
-
|
103
|
-
# set Group2_sub_md1_inner_inter_tf "$_wave_session_group_sub_md1_inner_inter_tf"
|
104
|
-
|
105
|
-
## 添加信号到 group
|
106
|
-
gui_sg_addsignal -group "$_wave_session_group_sub_md1_inner_inter_tf" { {Sim:tb_exp_test_unit.rtl_top.sub_md1_inst.inter_tf} }
|
107
|
-
## ============== sub_md1_inner.inter_tf =========================
|
108
|
-
|
109
|
-
|
110
|
-
## -------------- exp_test_unit_default -------------------------
|
111
|
-
set _wave_session_group_exp_test_unit_default exp_test_unit_default
|
112
|
-
# set _wave_session_group_exp_test_unit_default [gui_sg_generate_new_name -seed exp_test_unit_default]
|
113
|
-
if {[gui_sg_is_group -name "$_wave_session_group_exp_test_unit_default"]} {
|
114
|
-
set _wave_session_group_exp_test_unit_default [gui_sg_generate_new_name]
|
115
|
-
}
|
116
|
-
set Group2_exp_test_unit_default "$_wave_session_group_exp_test_unit_default"
|
117
|
-
|
118
|
-
## 添加信号到 group
|
119
|
-
gui_sg_addsignal -group "$_wave_session_group_exp_test_unit_default" { }
|
120
|
-
## ============== exp_test_unit_default =========================
|
121
|
-
|
122
|
-
|
123
|
-
## -------------- exp_test_unit_default.axis_data_inf -------------------------
|
124
|
-
## set _wave_session_group_exp_test_unit_default_axis_data_inf Group1
|
125
|
-
## set _wave_session_group_exp_test_unit_default_axis_data_inf [gui_sg_generate_new_name -seed axis_data_inf -parent $_wave_session_group_exp_test_unit_default ]
|
126
|
-
|
127
|
-
set _wave_session_group_exp_test_unit_default_axis_data_inf $_wave_session_group_exp_test_unit_default|
|
128
|
-
append _wave_session_group_exp_test_unit_default_axis_data_inf axis_data_inf
|
129
|
-
set exp_test_unit_default|axis_data_inf "$_wave_session_group_exp_test_unit_default_axis_data_inf"
|
130
|
-
|
131
|
-
# set Group2_exp_test_unit_default_axis_data_inf "$_wave_session_group_exp_test_unit_default_axis_data_inf"
|
132
|
-
|
133
|
-
## 添加信号到 group
|
134
|
-
gui_sg_addsignal -group "$_wave_session_group_exp_test_unit_default_axis_data_inf" { {Sim:tb_exp_test_unit.rtl_top.axis_data_inf} }
|
135
|
-
## ============== exp_test_unit_default.axis_data_inf =========================
|
136
|
-
|
137
15
|
|
138
16
|
## 创建波形窗口
|
139
17
|
if {![info exists useOldWindow]} {
|
@@ -162,33 +40,7 @@ gui_wv_zoom_timerange -id ${Wave.3} 0 1000000000
|
|
162
40
|
## gui_list_add_group -id ${Wave.3} -after ${Group2} [list ${Group2|tx_inf}]
|
163
41
|
## gui_list_expand -id ${Wave.3} tb_Mammo_TCP_sim.rtl_top.fpga_version_verb.ctrl_tap_inf
|
164
42
|
## === [add_signal_wave] === ##
|
165
|
-
|
166
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_sub_md0_logic}]
|
167
|
-
## ============== Group2_sub_md0_logic =========================
|
168
|
-
## -------------- Group2_sub_md0_interface -------------------------
|
169
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_sub_md0_interface}]
|
170
|
-
## ============== Group2_sub_md0_interface =========================
|
171
|
-
## -------------- Group2_sub_md0_default -------------------------
|
172
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_sub_md0_default}]
|
173
|
-
## ============== Group2_sub_md0_default =========================
|
174
|
-
## -------------- sub_md0_default|inter_tf -------------------------
|
175
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${sub_md0_default|inter_tf}]
|
176
|
-
## ============== sub_md0_default|inter_tf =========================
|
177
|
-
## -------------- Group2_sub_md1_default -------------------------
|
178
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_sub_md1_default}]
|
179
|
-
## ============== Group2_sub_md1_default =========================
|
180
|
-
## -------------- Group2_sub_md1_inner -------------------------
|
181
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_sub_md1_inner}]
|
182
|
-
## ============== Group2_sub_md1_inner =========================
|
183
|
-
## -------------- sub_md1_inner|inter_tf -------------------------
|
184
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${sub_md1_inner|inter_tf}]
|
185
|
-
## ============== sub_md1_inner|inter_tf =========================
|
186
|
-
## -------------- Group2_exp_test_unit_default -------------------------
|
187
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${Group2_exp_test_unit_default}]
|
188
|
-
## ============== Group2_exp_test_unit_default =========================
|
189
|
-
## -------------- exp_test_unit_default|axis_data_inf -------------------------
|
190
|
-
gui_list_add_group -id ${Wave.3} -after {New Group} [list ${exp_test_unit_default|axis_data_inf}]
|
191
|
-
## ============== exp_test_unit_default|axis_data_inf =========================
|
43
|
+
|
192
44
|
|
193
45
|
gui_seek_criteria -id ${Wave.3} {Any Edge}
|
194
46
|
|
@@ -205,12 +57,7 @@ gui_list_set_filter -id ${Wave.3} -list { {Buffer 1} {Input 1} {Others 1} {Linka
|
|
205
57
|
gui_list_set_filter -id ${Wave.3} -text {*}
|
206
58
|
##gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2} -position in
|
207
59
|
## === [add_bar] === ##
|
208
|
-
|
209
|
-
gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2_sub_md0_interface} -position in
|
210
|
-
gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2_sub_md0_default} -position in
|
211
|
-
gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2_sub_md1_default} -position in
|
212
|
-
gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2_sub_md1_inner} -position in
|
213
|
-
gui_list_set_insertion_bar -id ${Wave.3} -group ${Group2_exp_test_unit_default} -position in
|
60
|
+
|
214
61
|
|
215
62
|
gui_marker_move -id ${Wave.3} {C1} 560248001
|
216
63
|
gui_view_scroll -id ${Wave.3} -vertical -set 35
|
@@ -5,10 +5,12 @@ _______________________________________
|
|
5
5
|
descript:
|
6
6
|
author : Cook.Darwin
|
7
7
|
Version: VERA.0.0
|
8
|
-
created: 2021-03
|
8
|
+
created: 2021-04-03 13:14:45 +0800
|
9
9
|
madified:
|
10
10
|
***********************************************/
|
11
11
|
`timescale 1ns/1ps
|
12
|
+
`timescale 1ns/1ps
|
13
|
+
`timescale 1ns/1ps
|
12
14
|
|
13
15
|
module tb_test_tttop();
|
14
16
|
//==========================================================================
|
@@ -128,9 +128,9 @@ end
|
|
128
128
|
|
129
129
|
class AxiStream
|
130
130
|
|
131
|
-
def to_simple_sim_master_coe(length: [10,200], gap_len: [0,10], data: [ (0...100) ] , vld_perc: [50, 100], loop_coe: true)
|
131
|
+
def to_simple_sim_master_coe(enable: 1.b1, length: [10,200], gap_len: [0,10], data: [ (0...100) ] , vld_perc: [50, 100], loop_coe: true)
|
132
132
|
# raise TdlError.new "file cant be empty" unless file
|
133
|
-
file = File.join(AxiTdl::TDL_PATH,"./auto_script/tmp/","#{self.name}_#{globle_random_name_flag}.coe")
|
133
|
+
file = File.join(AxiTdl::TDL_PATH,"./auto_script/tmp/","coe_#{self.name}_#{globle_random_name_flag}.coe")
|
134
134
|
_sps = nil
|
135
135
|
ClassHDL::AssignDefOpertor.with_rollback_opertors(:old) do
|
136
136
|
require_sdl 'axis_sim_master_model.rb'
|
@@ -144,11 +144,12 @@ class AxiStream
|
|
144
144
|
_sps
|
145
145
|
end
|
146
146
|
|
147
|
-
@belong_to_module.instance_exec(self,file,loop_coe) do |_self,file,loop_coe|
|
147
|
+
@belong_to_module.instance_exec(self,file,loop_coe,enable) do |_self,file,loop_coe,_enable|
|
148
148
|
|
149
149
|
Instance(:axis_sim_master_model,"sim_model_inst_#{_self.name}") do |h|
|
150
150
|
h.param.LOOP (loop_coe ? "TRUE" : "FALSE")
|
151
151
|
h.param.RAM_DEPTH File.open(File.expand_path(file)).readlines.size
|
152
|
+
h.input.enable _enable
|
152
153
|
h.input.load_trigger 1.b0
|
153
154
|
h.input[32].total_length h.param.RAM_DEPTH
|
154
155
|
h.input[512*8].mem_file File.expand_path(file) # {axis_tvalid, axis_tuser, axis_tkeep, axis_tlast, axis_tdata}
|
@@ -128,7 +128,7 @@ module TdlSpace
|
|
128
128
|
define_method(tdl_key) do
|
129
129
|
rel = self.instance_variable_get("@_#{tdl_key}_")
|
130
130
|
unless rel
|
131
|
-
"#{inst_name}.#{hdl_key}".to_nq
|
131
|
+
TdlSpace::ArrayChain.create(obj: "#{inst_name}.#{hdl_key}".to_nq, belong_to_module: belong_to_module)
|
132
132
|
else
|
133
133
|
rel
|
134
134
|
end
|
@@ -152,9 +152,9 @@ module TdlSpace
|
|
152
152
|
define_method('clock') do
|
153
153
|
rel = self.instance_variable_get("@_#{tdl_key}_")
|
154
154
|
if !dimension || dimension.empty?
|
155
|
-
rel || TdlSpace::ArrayChain.
|
155
|
+
rel || TdlSpace::ArrayChain.create(obj:"#{self.inst_name}.#{hdl_key}", belong_to_module: belong_to_module)
|
156
156
|
else
|
157
|
-
rel || TdlSpace::ArrayChain.
|
157
|
+
rel || TdlSpace::ArrayChain.create(obj:"#{self.inst_name}[0].#{hdl_key}", belong_to_module: belong_to_module)
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
@@ -171,7 +171,7 @@ module TdlSpace
|
|
171
171
|
self.class_exec(tdl_key) do |tdl_key|
|
172
172
|
define_method('reset') do
|
173
173
|
rel = self.instance_variable_get("@_#{tdl_key}_")
|
174
|
-
rel || TdlSpace::ArrayChain.
|
174
|
+
rel || TdlSpace::ArrayChain.create(obj:"#{self.inst_name}.#{hdl_key}", belong_to_module: belong_to_module)
|
175
175
|
end
|
176
176
|
|
177
177
|
define_method("reset=") do |arg|
|
@@ -200,7 +200,7 @@ module TdlSpace
|
|
200
200
|
self.class_exec(tdl_key) do |tdl_key|
|
201
201
|
define_method(tdl_key) do
|
202
202
|
rel = self.instance_variable_get("@_#{tdl_key}_") || default_value
|
203
|
-
rel || TdlSpace::ArrayChain.
|
203
|
+
rel || TdlSpace::ArrayChain.create(obj:"#{self.inst_name}.#{hdl_key}", belong_to_module: belong_to_module)
|
204
204
|
end
|
205
205
|
|
206
206
|
define_method("#{tdl_key}=") do |arg|
|
@@ -215,7 +215,7 @@ module TdlSpace
|
|
215
215
|
_io_map(e,e,nil,'sdata',nil)
|
216
216
|
self.class_exec(e) do |e|
|
217
217
|
define_method(e) do
|
218
|
-
TdlSpace::ArrayChain.
|
218
|
+
TdlSpace::ArrayChain.create(obj:"#{self.inst_name}.#{e}", belong_to_module: belong_to_module)
|
219
219
|
end
|
220
220
|
end
|
221
221
|
end
|
@@ -225,7 +225,7 @@ module TdlSpace
|
|
225
225
|
_io_map(name,name,nil,'pdata',dimension)
|
226
226
|
self.class_exec(name) do |e|
|
227
227
|
define_method(e) do
|
228
|
-
TdlSpace::ArrayChain.
|
228
|
+
TdlSpace::ArrayChain.create(obj:"#{self.inst_name}.#{e}", belong_to_module: belong_to_module)
|
229
229
|
end
|
230
230
|
end
|
231
231
|
end
|
@@ -374,7 +374,7 @@ module TdlSpace
|
|
374
374
|
e.slaver = true
|
375
375
|
end
|
376
376
|
end
|
377
|
-
TdlSpace::ArrayChain.
|
377
|
+
TdlSpace::ArrayChain.create(obj: self,lchain: a, belong_to_module: belong_to_module)
|
378
378
|
end
|
379
379
|
|
380
380
|
def instance(exp_len: nil)
|
@@ -74,7 +74,7 @@ class SdlModule
|
|
74
74
|
if e.is_a? String
|
75
75
|
next
|
76
76
|
end
|
77
|
-
tmp = e.new(name:"#{head}_NC")
|
77
|
+
tmp = e.new(name:"#{head}_NC",belong_to_module: self)
|
78
78
|
tmp.belong_to_module = self
|
79
79
|
tmp.ghost = true
|
80
80
|
instance_variable_set("@#{head}_NC",tmp)
|
@@ -127,16 +127,6 @@ class SdlModule
|
|
127
127
|
@@allmodule << self
|
128
128
|
@module_name = name
|
129
129
|
@real_sv_path = File.join(@out_sv_path,"#{@module_name}.sv") if @out_sv_path
|
130
|
-
# @port_clocks = []
|
131
|
-
# @port_resets = []
|
132
|
-
# @port_params = []
|
133
|
-
# @port_logics = []
|
134
|
-
# @port_datainfs = []
|
135
|
-
# @port_datainf_c_s = []
|
136
|
-
# @port_videoinfs = []
|
137
|
-
# @port_axisinfs = []
|
138
|
-
# @port_axi4infs = []
|
139
|
-
# @port_axilinfs = []
|
140
130
|
|
141
131
|
@port_clocks = Hash.new
|
142
132
|
@port_resets = Hash.new
|
@@ -164,52 +154,16 @@ class SdlModule
|
|
164
154
|
# self.instance_variable_set("#{head_str}_NC",tmp)
|
165
155
|
end
|
166
156
|
create_ghost
|
167
|
-
|
168
|
-
# @Logic_collect = []
|
169
|
-
# @Logic_inst = []
|
170
|
-
# @Logic_draw = []
|
171
|
-
#
|
172
|
-
# @Clock_collect = []
|
173
|
-
# @Clock_inst = []
|
174
|
-
# @Clock_draw = []
|
175
|
-
#
|
176
|
-
# @Reset_collect = []
|
177
|
-
# @Reset_inst = []
|
178
|
-
# @Reset_draw = []
|
179
|
-
#
|
180
|
-
# @Parameter_collect = []
|
181
|
-
# @Parameter_inst = []
|
182
|
-
# @Parameter_draw = []
|
183
|
-
#
|
184
|
-
# @DataInf_collect = []
|
185
|
-
# @DataInf_inst = []
|
186
|
-
# @DataInf_draw = []
|
187
|
-
#
|
188
|
-
# @DataInf_C_collect = []
|
189
|
-
# @DataInf_C_inst = []
|
190
|
-
# @DataInf_C_draw = []
|
191
|
-
#
|
192
|
-
# @AxiStream_collect = []
|
193
|
-
# @AxiStream_inst = []
|
194
|
-
# @AxiStream_draw = []
|
195
|
-
#
|
196
|
-
# @AxiLite_collect = []
|
197
|
-
# @AxiLite_inst = []
|
198
|
-
# @AxiLite_draw = []
|
199
|
-
#
|
200
|
-
# @VideoInf_collect = []
|
201
|
-
# @VideoInf_inst = []
|
202
|
-
# @VideoInf_draw = []
|
203
|
-
#
|
204
|
-
# @Axi4_collect = []
|
205
|
-
# @Axi4_inst = []
|
206
|
-
# @Axi4_draw = []
|
157
|
+
|
207
158
|
if block_given?
|
208
159
|
yield(self)
|
209
160
|
end
|
210
161
|
|
211
162
|
@instanced_and_parent_module ||= Hash.new
|
212
163
|
@instance_and_children_module ||= Hash.new
|
164
|
+
|
165
|
+
## 记录当前模块被例化的 具体对象
|
166
|
+
@instances =[]
|
213
167
|
end
|
214
168
|
|
215
169
|
public
|
@@ -473,3 +427,59 @@ class SdlModule
|
|
473
427
|
end
|
474
428
|
end
|
475
429
|
end
|
430
|
+
|
431
|
+
class SdlModule
|
432
|
+
|
433
|
+
## 获取信号的绝对路径
|
434
|
+
def path_refs(&block)
|
435
|
+
collects = []
|
436
|
+
if self != TopModule.current.techbench
|
437
|
+
@instances.each do |it|
|
438
|
+
it.origin.parents_inst_tree do |tree|
|
439
|
+
ll = ["$root"]
|
440
|
+
rt = tree.reverse
|
441
|
+
rt.each_index do |index|
|
442
|
+
if rt[index].respond_to? :module_name
|
443
|
+
ll << rt[index].module_name
|
444
|
+
else
|
445
|
+
ll << rt[index].inst_name
|
446
|
+
end
|
447
|
+
end
|
448
|
+
# ll << it.inst_name
|
449
|
+
new_name = ll.join('.').to_nq
|
450
|
+
if block_given?
|
451
|
+
if yield(new_name)
|
452
|
+
collects << new_name
|
453
|
+
end
|
454
|
+
else
|
455
|
+
collects << new_name
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
else
|
460
|
+
collects = ["$root.#{self.module_name}".to_nq]
|
461
|
+
end
|
462
|
+
collects
|
463
|
+
end
|
464
|
+
|
465
|
+
## 定义获取 信号的绝对路径
|
466
|
+
def root_ref(&block)
|
467
|
+
ClassHDL::AssignDefOpertor.with_rollback_opertors(:old) do
|
468
|
+
rels = path_refs(&block)
|
469
|
+
if block_given?
|
470
|
+
sst = "block given"
|
471
|
+
else
|
472
|
+
sst = "no block"
|
473
|
+
end
|
474
|
+
|
475
|
+
if rels.size == 1
|
476
|
+
rels[0]
|
477
|
+
elsif rels.size == 0
|
478
|
+
raise TdlError.new "#{module_name} Cant find root ref {#{sst}}"
|
479
|
+
else
|
480
|
+
raise TdlError.new "#{module_name} Find multi root refs {#{sst}} \n#{rels.join("\n")}\n"
|
481
|
+
end
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
end
|