axi_tdl 0.0.8 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +42 -0
- data/.github/workflows/ruby.yml +35 -0
- data/.gitignore +3 -1
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/README.EN.md +322 -0
- data/README.md +25 -20
- data/Rakefile +2 -6
- data/axi_tdl.gemspec +5 -5
- data/lib/axi/AXI4/axi4_dpram_cache.rb +1 -0
- data/lib/axi/AXI4/axi4_dpram_cache.sv +4 -4
- data/lib/axi/AXI4/axis_to_axi4_wr.rb +5 -0
- data/lib/axi/AXI4/axis_to_axi4_wr.sv +7 -7
- 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/AXI_stream/axi_stream_latency.sv +56 -0
- data/lib/axi/AXI_stream/axi_stream_split_channel.sv +20 -20
- data/lib/axi/AXI_stream/axis_head_cut_verc.rb +98 -42
- data/lib/axi/AXI_stream/axis_head_cut_verc.sv +36 -39
- data/lib/axi/AXI_stream/axis_insert_copy.sv +1 -1
- data/lib/axi/AXI_stream/axis_length_split_with_user.sv +87 -0
- data/lib/axi/AXI_stream/axis_pipe_sync_seam.rb +41 -0
- data/lib/axi/AXI_stream/axis_pipe_sync_seam.sv +48 -0
- data/lib/axi/AXI_stream/packet_fifo/axi_stream_packet_long_fifo.sv +37 -16
- data/lib/axi/AXI_stream/parse_big_field_table_A2.sv +3 -2
- data/lib/axi/data_interface/data_inf_c/data_c_pipe_force_vld_bind_data.sv +1 -1
- data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync.sv +70 -0
- data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.rb +49 -0
- data/lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.sv +84 -0
- data/lib/axi_tdl.rb +12 -0
- data/lib/axi_tdl/version.rb +1 -1
- data/lib/tdl/SDL/axistream/axi_stream_packet_long_fifo_sdl.rb +1 -0
- data/lib/tdl/SDL/path_lib.rb +1 -1
- data/lib/tdl/SDL/vcs_axi4_comptable.rb +9 -0
- data/lib/tdl/SDL/vcs_axis_comptable.rb +17 -0
- data/lib/tdl/SDL/vcs_data_c_comptable.rb +9 -0
- data/lib/tdl/class_hdl/hdl_always_ff.rb +1 -1
- data/lib/tdl/class_hdl/hdl_redefine_opertor.rb +15 -3
- data/lib/tdl/examples/2_hdl_class/module_def.rb +2 -1
- data/lib/tdl/examples/2_hdl_class/test_inst_sugar.rb +3 -1
- data/lib/tdl/examples/2_hdl_class/tmp/always_ff_test.sv +1 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_function.sv +2 -2
- data/lib/tdl/sdlmodule/sdlmodule.rb +64 -0
- data/lib/tdl/sdlmodule/sdlmodule_draw.rb +2 -1
- data/lib/tdl/sdlmodule/top_module.rb +1 -0
- data/lib/tdl/tdl.rb +14 -2
- metadata +128 -28
- data/Gemfile.lock +0 -28
@@ -0,0 +1,49 @@
|
|
1
|
+
require_hdl 'data_c_pipe_sync.sv'
|
2
|
+
|
3
|
+
TdlBuild.data_c_pipe_sync_seam(__dir__) do
|
4
|
+
parameter.LAT 4
|
5
|
+
parameter.DSIZE 32
|
6
|
+
## as like: hdl```
|
7
|
+
## assign in_datas[0] = in_inf.data + 1;
|
8
|
+
## assign in_datas[1] = out_datas[0]+1;```
|
9
|
+
input[param.LAT,param.DSIZE] - 'in_datas'
|
10
|
+
output[param.LAT,param.DSIZE] - 'out_datas'
|
11
|
+
port.data_inf_c.slaver - 'in_inf'
|
12
|
+
port.data_inf_c.master - 'out_inf'
|
13
|
+
|
14
|
+
same_clock_domain(in_inf, out_inf)
|
15
|
+
|
16
|
+
in_inf.copy(name: 'in_inf_array', dimension: [param.LAT])
|
17
|
+
out_inf.copy(name: 'out_inf_array', dimension: [param.LAT])
|
18
|
+
|
19
|
+
generate(param.LAT) do |kk|
|
20
|
+
data_c_pipe_sync.data_c_pipe_sync_inst do |h|
|
21
|
+
h.parameter.DSIZE param.DSIZE
|
22
|
+
h.input['DSIZE'].in_data in_datas[kk] ##// as like: hdl``` assign in_data = in_inf.data + 1;
|
23
|
+
h.output['DSIZE'].out_data out_datas[kk]
|
24
|
+
h.port.data_inf_c.slaver.in_inf in_inf_array[kk]
|
25
|
+
h.port.data_inf_c.master.out_inf out_inf_array[kk]
|
26
|
+
end
|
27
|
+
|
28
|
+
IF kk != 0 do
|
29
|
+
Assign do
|
30
|
+
in_inf_array[kk].valid <= out_inf_array[kk-1].valid
|
31
|
+
in_inf_array[kk].data <= out_inf_array[kk-1].data
|
32
|
+
out_inf_array[kk-1].ready <= in_inf_array[kk].ready
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
Assign do
|
38
|
+
in_inf_array[0].valid <= in_inf.valid
|
39
|
+
in_inf_array[0].data <= in_inf.data
|
40
|
+
in_inf.ready <= in_inf_array[0].ready
|
41
|
+
end
|
42
|
+
|
43
|
+
Assign do
|
44
|
+
out_inf.data <= out_inf_array[param.LAT-1].data
|
45
|
+
out_inf.valid <= out_inf_array[param.LAT-1].valid
|
46
|
+
out_inf_array[param.LAT-1].ready <= out_inf.ready
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
/**********************************************
|
2
|
+
_______________________________________
|
3
|
+
___________ Cook Darwin __________
|
4
|
+
_______________________________________
|
5
|
+
descript:
|
6
|
+
author : Cook.Darwin
|
7
|
+
Version: VERA.0.0
|
8
|
+
created: xxxx.xx.xx
|
9
|
+
madified:
|
10
|
+
***********************************************/
|
11
|
+
`timescale 1ns/1ps
|
12
|
+
|
13
|
+
module data_c_pipe_sync_seam #(
|
14
|
+
parameter LAT = 4,
|
15
|
+
parameter DSIZE = 32
|
16
|
+
)(
|
17
|
+
input [ DSIZE-1:0] in_datas [LAT-1:0],
|
18
|
+
output [ DSIZE-1:0] out_datas [LAT-1:0],
|
19
|
+
data_inf_c.slaver in_inf,
|
20
|
+
data_inf_c.master out_inf
|
21
|
+
);
|
22
|
+
|
23
|
+
//==========================================================================
|
24
|
+
//-------- define ----------------------------------------------------------
|
25
|
+
|
26
|
+
data_inf_c #(.DSIZE(in_inf.DSIZE)) in_inf_array[LAT-1:0] (.clock(in_inf.clock),.rst_n(in_inf.rst_n)) ;
|
27
|
+
data_inf_c #(.DSIZE(out_inf.DSIZE)) out_inf_array[LAT-1:0] (.clock(out_inf.clock),.rst_n(out_inf.rst_n)) ;
|
28
|
+
//==========================================================================
|
29
|
+
//-------- instance --------------------------------------------------------
|
30
|
+
|
31
|
+
//==========================================================================
|
32
|
+
//-------- expression ------------------------------------------------------
|
33
|
+
generate
|
34
|
+
for(genvar KK0=0;KK0 < LAT;KK0++)begin
|
35
|
+
data_c_pipe_sync #(
|
36
|
+
.DSIZE (DSIZE )
|
37
|
+
)data_c_pipe_sync_inst(
|
38
|
+
/* input */.in_data (in_datas[ KK0] ),
|
39
|
+
/* output */.out_data (out_datas[ KK0] ),
|
40
|
+
/* data_inf_c.slaver */.in_inf (in_inf_array[ KK0] ),
|
41
|
+
/* data_inf_c.master */.out_inf (out_inf_array[ KK0] )
|
42
|
+
);
|
43
|
+
if( KK0!=0)begin
|
44
|
+
assign in_inf_array[ KK0].valid = out_inf_array[ KK0-1].valid;
|
45
|
+
assign in_inf_array[ KK0].data = out_inf_array[ KK0-1].data;
|
46
|
+
assign out_inf_array[ KK0-1].ready = in_inf_array[ KK0].ready;
|
47
|
+
end end
|
48
|
+
endgenerate
|
49
|
+
//-------- CLOCKs Total 2 ----------------------
|
50
|
+
//--->> CheckClock <<----------------
|
51
|
+
logic cc_done_10,cc_same_10;
|
52
|
+
integer cc_afreq_10,cc_bfreq_10;
|
53
|
+
ClockSameDomain CheckPClock_inst_10(
|
54
|
+
/* input */ .aclk (in_inf.clock ),
|
55
|
+
/* input */ .bclk (out_inf.clock ),
|
56
|
+
/* output logic */ .done (cc_done_10),
|
57
|
+
/* output logic */ .same (cc_same_10),
|
58
|
+
/* output integer */ .aFreqK (cc_afreq_10),
|
59
|
+
/* output integer */ .bFreqK (cc_bfreq_10)
|
60
|
+
);
|
61
|
+
|
62
|
+
initial begin
|
63
|
+
wait(cc_done_10);
|
64
|
+
assert(cc_same_10)
|
65
|
+
else begin
|
66
|
+
$error("--- Error : `data_c_pipe_sync_seam` clock is not same, in_inf.clock< %0f M> != out_inf.clock<%0f M>",1000000.0/cc_afreq_10, 1000000.0/cc_bfreq_10);
|
67
|
+
repeat(10)begin
|
68
|
+
@(posedge in_inf.clock);
|
69
|
+
end
|
70
|
+
$stop;
|
71
|
+
end
|
72
|
+
end
|
73
|
+
//---<< CheckClock >>----------------
|
74
|
+
|
75
|
+
//======== CLOCKs Total 2 ======================
|
76
|
+
assign in_inf_array[0].valid = in_inf.valid;
|
77
|
+
assign in_inf_array[0].data = in_inf.data;
|
78
|
+
assign in_inf.ready = in_inf_array[0].ready;
|
79
|
+
|
80
|
+
assign out_inf.data = out_inf_array[ LAT-1].data;
|
81
|
+
assign out_inf.valid = out_inf_array[ LAT-1].valid;
|
82
|
+
assign out_inf_array[ LAT-1].ready = out_inf.ready;
|
83
|
+
|
84
|
+
endmodule
|
data/lib/axi_tdl.rb
CHANGED
@@ -8,8 +8,20 @@ end
|
|
8
8
|
|
9
9
|
|
10
10
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI_stream"))
|
11
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI_stream/data_width"))
|
11
12
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI_stream/stream_cache"))
|
13
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI_stream/packet_fifo"))
|
12
14
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI4"))
|
15
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI4/axi4_pipe"))
|
16
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI4/interconnect"))
|
17
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI4/width_convert"))
|
13
18
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/AXI4/packet_partition"))
|
19
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/common_fifo"))
|
14
20
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/common"))
|
15
21
|
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/data_interface"))
|
22
|
+
add_to_tdl_paths File.expand_path(File.join(__dir__, "axi/data_interface/data_inf_c"))
|
23
|
+
|
24
|
+
## base require
|
25
|
+
require_hdl 'axis_master_empty.sv'
|
26
|
+
require_hdl 'axis_slaver_empty.sv'
|
27
|
+
|
data/lib/axi_tdl/version.rb
CHANGED
@@ -6,6 +6,7 @@ self.real_sv_path = '/home/CookDarwin/work/fpga/axi/AXI_stream/packet_fifo/axi_s
|
|
6
6
|
self.path = File.expand_path(__FILE__)
|
7
7
|
parameter.DEPTH 2
|
8
8
|
parameter.BYTE_DEPTH 8096
|
9
|
+
parameter.USE_KEEP "OFF"
|
9
10
|
port.axi_stream_inf.slaver - 'axis_in'
|
10
11
|
port.axi_stream_inf.master - 'axis_out'
|
11
12
|
end
|
data/lib/tdl/SDL/path_lib.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
sm = SdlModule.new(name:File.basename(__FILE__,".rb"))
|
2
|
+
|
3
|
+
sm.Parameter("ORIGIN",'master')
|
4
|
+
sm.Parameter("TO",'slaver')
|
5
|
+
sm.Input("origin")
|
6
|
+
sm.Output("to")
|
7
|
+
|
8
|
+
sm.origin_sv = true
|
9
|
+
sm.real_sv_path = File.expand_path(File.join(__dir__, "../../axi/AXI4/vcs_axi4_comptable.sv"))
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# sm = SdlModule.new(name:File.basename(__FILE__,".rb"))
|
2
|
+
|
3
|
+
# sm.Parameter("ORIGIN",'master')
|
4
|
+
# sm.Parameter("TO",'slaver')
|
5
|
+
# sm.Input("origin")
|
6
|
+
# sm.Output("to")
|
7
|
+
|
8
|
+
# sm.origin_sv = true
|
9
|
+
|
10
|
+
sm = TdlBuild.vcs_axis_comptable do
|
11
|
+
parameter.ORIGIN 'master'
|
12
|
+
parameter.TO 'slaver'
|
13
|
+
input - 'origin'
|
14
|
+
output - 'to'
|
15
|
+
end
|
16
|
+
|
17
|
+
sm.real_sv_path = File.expand_path(File.join(__dir__, "../../axi/AXI_stream/vcs_axis_comptable.sv"))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
sm = SdlModule.new(name:File.basename(__FILE__,".rb"))
|
2
|
+
|
3
|
+
sm.Parameter("ORIGIN",'master')
|
4
|
+
sm.Parameter("TO",'slaver')
|
5
|
+
sm.Input("origin")
|
6
|
+
sm.Output("to")
|
7
|
+
|
8
|
+
sm.origin_sv = true
|
9
|
+
sm.real_sv_path = File.expand_path(File.join(__dir__, "../../axi/data_interface/data_inf_c/vcs_data_c_comptable.sv"))
|
@@ -58,9 +58,21 @@ module ClassHDL
|
|
58
58
|
# 计算生成新的OpertorChain 是 self 也需要抛弃
|
59
59
|
self.slaver = true
|
60
60
|
# return self
|
61
|
-
new_op =
|
62
|
-
|
63
|
-
|
61
|
+
new_op = nil
|
62
|
+
AssignDefOpertor.with_rollback_opertors(:old) do
|
63
|
+
if tree.size == 2 && tree.last[1].to_s == "<="
|
64
|
+
new_op = OpertorChain.new
|
65
|
+
new_op.tree = new_op.tree + self.tree
|
66
|
+
new_op.tree.push [b,os]
|
67
|
+
elsif tree.size >= 2 && (!['*',"/","~"].include?(tree.last[1].to_s))
|
68
|
+
new_op = brackets
|
69
|
+
new_op.tree.push [b,os]
|
70
|
+
else
|
71
|
+
new_op = OpertorChain.new
|
72
|
+
new_op.tree = new_op.tree + self.tree
|
73
|
+
new_op.tree.push [b,os]
|
74
|
+
end
|
75
|
+
end
|
64
76
|
|
65
77
|
if ClassHDL::AssignDefOpertor.curr_assign_block
|
66
78
|
ClassHDL::AssignDefOpertor.curr_assign_block.opertor_chains.push(new_op)
|
@@ -29,7 +29,7 @@ data_inf_c #(.DSIZE(8)) c_inf [2:0][6:0][7:0] (.clock(dclk),.rst_n(drstn)) ;
|
|
29
29
|
//==========================================================================
|
30
30
|
//-------- expression ------------------------------------------------------
|
31
31
|
always_ff@(posedge clock,negedge rst_n) begin
|
32
|
-
32*2- 5-
|
32
|
+
( 32*2- 5)-6;
|
33
33
|
end
|
34
34
|
|
35
35
|
endmodule
|
@@ -35,7 +35,7 @@ function status(input [7:0] code,output logic [15:0] pl);
|
|
35
35
|
endfunction:status
|
36
36
|
|
37
37
|
function logic status_xp(input [7:0] code,output logic [15:0] pl);
|
38
|
-
status_xp = ( inm!=0|
|
38
|
+
status_xp = ( ( inm!=0)|( inm!=1));
|
39
39
|
endfunction:status_xp
|
40
40
|
|
41
41
|
function SE_STATE_ctrl pre_status(input [7:0] code,output logic [15:0] pl,input SE_STATE_ctrl ll);
|
@@ -47,6 +47,6 @@ endfunction:pre_status
|
|
47
47
|
|
48
48
|
assign gp = status(67, gp+1,opop);
|
49
49
|
assign gp = pre_status();
|
50
|
-
assign gp = ( inm!=0|
|
50
|
+
assign gp = ( ( inm!=0)|( inm!=1));
|
51
51
|
|
52
52
|
endmodule
|
@@ -404,4 +404,68 @@ class SdlModule
|
|
404
404
|
|
405
405
|
Clock.same_clock(self, *objs_clks)
|
406
406
|
end
|
407
|
+
end
|
408
|
+
|
409
|
+
## 获取 引用的所有文件
|
410
|
+
class SdlModule
|
411
|
+
|
412
|
+
def __ref_children_modules__
|
413
|
+
curr_refs = []
|
414
|
+
|
415
|
+
@_import_packages_ ||= []
|
416
|
+
curr_refs << @_import_packages_
|
417
|
+
|
418
|
+
instance_and_children_module.values.each do |pm|
|
419
|
+
curr_refs << [pm, pm.__ref_children_modules__()]
|
420
|
+
end
|
421
|
+
|
422
|
+
return curr_refs
|
423
|
+
end
|
424
|
+
|
425
|
+
def ref_modules
|
426
|
+
|
427
|
+
curr_refs = __ref_children_modules__.flatten.uniq.reject do |e|
|
428
|
+
e.is_a?(ClassHDL::ClearSdlModule)
|
429
|
+
end
|
430
|
+
curr_refs << self
|
431
|
+
end
|
432
|
+
|
433
|
+
def self.base_hdl_ref
|
434
|
+
## 基本接口引用
|
435
|
+
_base_refs = []
|
436
|
+
_base_refs << ['axi_inf', File.expand_path(File.join(__dir__, "../../axi/interface_define/axi_inf.sv"))]
|
437
|
+
_base_refs << ['axi_lite_inf', File.expand_path(File.join(__dir__, "../../axi/interface_define/axi_lite_inf.sv"))]
|
438
|
+
_base_refs << ['axi_stream', File.expand_path(File.join(__dir__, "../../axi/interface_define/axi_stream_inf.sv"))]
|
439
|
+
_base_refs << ['data_inf', File.expand_path(File.join(__dir__, "../../axi/data_interface/data_interface.sv"))]
|
440
|
+
_base_refs << ['data_inf_c', File.expand_path(File.join(__dir__, "../../axi/data_interface/data_interface_pkg.sv"))]
|
441
|
+
_base_refs << ['axi_bfm_pkg', File.expand_path(File.join(__dir__, "../../axi/AXI_BFM/AXI_BFM_PKG.sv"))]
|
442
|
+
_base_refs << ['cm_ram_inf', File.expand_path(File.join(__dir__, "../../tdl/rebuild_ele/cm_ram_inf.sv"))]
|
443
|
+
_base_refs << ['Lite_Addr_Data_CMD', File.expand_path(File.join(__dir__, "../../axi/AXI_Lite/gen_axi_lite_ctrl.sv"))]
|
444
|
+
_base_refs
|
445
|
+
end
|
446
|
+
|
447
|
+
def pretty_ref_hdl_moduls_echo
|
448
|
+
index = 1
|
449
|
+
_indexs = []
|
450
|
+
_names = []
|
451
|
+
_paths = []
|
452
|
+
max_size = 0
|
453
|
+
ref_modules.each do |e|
|
454
|
+
_indexs << index
|
455
|
+
_names << e.module_name
|
456
|
+
_paths << File.expand_path(e.real_sv_path)
|
457
|
+
index += 1
|
458
|
+
if e.module_name.size > max_size
|
459
|
+
max_size = e.module_name.size
|
460
|
+
end
|
461
|
+
end
|
462
|
+
puts(pagination(" Modules of <#{module_name}> reference"))
|
463
|
+
|
464
|
+
# fstr = "[%#{index.to_s.size}d] %-#{ _names.map do |e| e.size end.max }s %s"
|
465
|
+
fstr = "[%#{index.to_s.size}d] %-#{ max_size }s %s"
|
466
|
+
|
467
|
+
(index-1).times do |xi|
|
468
|
+
puts (fstr % [_indexs[xi], _names[xi], _paths[xi]])
|
469
|
+
end
|
470
|
+
end
|
407
471
|
end
|
@@ -6,11 +6,12 @@ class Tdl
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.head_logo=(a)
|
9
|
+
$__sdlmodule_head_logo__ = a
|
9
10
|
@@__head_logo__ = a
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
$__sdlmodule_head_logo__ =
|
14
|
+
$__sdlmodule_head_logo__ = File.open(File.join(__dir__,"sdlmodule_head_logo.txt")).read
|
14
15
|
|
15
16
|
class SdlModule
|
16
17
|
attr_accessor :origin_sv
|
data/lib/tdl/tdl.rb
CHANGED
@@ -89,7 +89,11 @@ require_relative "./exlib/itegration"
|
|
89
89
|
require_relative "./exlib/itegration_verb"
|
90
90
|
require_relative "./exlib/parse_argv"
|
91
91
|
# require_relative "./tdlmodule_ex"
|
92
|
-
require_relative "./SDL/path_lib" # require sdlmodule
|
92
|
+
# require_relative "./SDL/path_lib" # require sdlmodule
|
93
|
+
## VSC COMPATABLE support
|
94
|
+
require_relative "./SDL/vcs_axi4_comptable.rb"
|
95
|
+
require_relative "./SDL/vcs_data_c_comptable.rb"
|
96
|
+
require_relative "./SDL/vcs_axis_comptable.rb"
|
93
97
|
|
94
98
|
## 添加 M2S方法
|
95
99
|
require_relative "./axi_stream/axi_stream_interconnect.rb"
|
@@ -123,7 +127,7 @@ require_relative "./exlib/dve_tcl.rb"
|
|
123
127
|
|
124
128
|
## === INIT BLOCK Methods =====
|
125
129
|
$argvs_hash = {}
|
126
|
-
$argvs_hash = Parser.parse($TdlARGV || ARGV)
|
130
|
+
$argvs_hash = Parser.parse($TdlARGV || ARGV)
|
127
131
|
TopModule.sim = $argvs_hash[:sim]
|
128
132
|
|
129
133
|
class Tdl
|
@@ -254,6 +258,14 @@ class Tdl
|
|
254
258
|
puts TopModule.current.test_unit.echo_units if TopModule.current
|
255
259
|
puts(pagination("SUMMARY"))
|
256
260
|
puts "#{TopModule.sim ? 'SIM' : 'SYNTH'} RUN SPEND #{Time.now - $__start_time__} sec @ TIME : #{Time.now}"
|
261
|
+
|
262
|
+
## -----------
|
263
|
+
# TopModule.current.ref_modules.uniq.each do |e|
|
264
|
+
# unless e.is_a? ClassHDL::ClearSdlModule
|
265
|
+
# puts "#{e.real_sv_path}: #{e.module_name}"
|
266
|
+
# end
|
267
|
+
# end
|
268
|
+
## ===========
|
257
269
|
end
|
258
270
|
|
259
271
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: axi_tdl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cook.Darwin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.16'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.16'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,43 +28,46 @@ dependencies:
|
|
42
28
|
name: pry
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - "
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
33
|
+
version: '0.11'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
40
|
+
version: '0.11'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: minitest
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - "
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '5.10'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - "
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
description: 'tdl
|
70
|
-
|
54
|
+
version: '5.10'
|
55
|
+
description: 'tdl 是一种硬件构造语言, 和chisel类似, 但是更加有趣, 他是一种基于Ruby的DSL. 最终它会编译输出systemverilog
|
56
|
+
。 '
|
71
57
|
email:
|
72
58
|
- cook_darwin@hotmail.com
|
73
59
|
executables: []
|
74
60
|
extensions: []
|
75
61
|
extra_rdoc_files: []
|
76
62
|
files:
|
63
|
+
- ".github/workflows/gem-push.yml"
|
64
|
+
- ".github/workflows/ruby.yml"
|
77
65
|
- ".gitignore"
|
66
|
+
- ".travis.yml"
|
78
67
|
- CODE_OF_CONDUCT.md
|
79
68
|
- Gemfile
|
80
|
-
- Gemfile.lock
|
81
69
|
- LICENSE
|
70
|
+
- README.EN.md
|
82
71
|
- README.md
|
83
72
|
- Rakefile
|
84
73
|
- axi_tdl.gemspec
|
@@ -214,6 +203,7 @@ files:
|
|
214
203
|
- lib/axi/AXI_stream/axi_stream_interconnect_S2M_auto.sv
|
215
204
|
- lib/axi/AXI_stream/axi_stream_interconnect_S2M_with_info.sv
|
216
205
|
- lib/axi/AXI_stream/axi_stream_interconnect_S2M_with_keep.sv.bak
|
206
|
+
- lib/axi/AXI_stream/axi_stream_latency.sv
|
217
207
|
- lib/axi/AXI_stream/axi_stream_packet_fifo_with_info.sv.bak
|
218
208
|
- lib/axi/AXI_stream/axi_stream_partition.sv
|
219
209
|
- lib/axi/AXI_stream/axi_stream_partition_A1.sv
|
@@ -252,12 +242,15 @@ files:
|
|
252
242
|
- lib/axi/AXI_stream/axis_length_fill.sv
|
253
243
|
- lib/axi/AXI_stream/axis_length_split.sv
|
254
244
|
- lib/axi/AXI_stream/axis_length_split_with_addr.sv
|
245
|
+
- lib/axi/AXI_stream/axis_length_split_with_user.sv
|
255
246
|
- lib/axi/AXI_stream/axis_length_split_writh_user.sv
|
256
247
|
- lib/axi/AXI_stream/axis_link_trigger.sv
|
257
248
|
- lib/axi/AXI_stream/axis_master_empty.sv
|
258
249
|
- lib/axi/AXI_stream/axis_mirror_to_master.sv
|
259
250
|
- lib/axi/AXI_stream/axis_mirrors.sv
|
260
251
|
- lib/axi/AXI_stream/axis_orthogonal.sv
|
252
|
+
- lib/axi/AXI_stream/axis_pipe_sync_seam.rb
|
253
|
+
- lib/axi/AXI_stream/axis_pipe_sync_seam.sv
|
261
254
|
- lib/axi/AXI_stream/axis_ram_buffer.sv
|
262
255
|
- lib/axi/AXI_stream/axis_rom_contect.rb
|
263
256
|
- lib/axi/AXI_stream/axis_rom_contect.sv
|
@@ -399,6 +392,9 @@ files:
|
|
399
392
|
- lib/axi/data_interface/data_inf_c/data_c_pipe_intc_M2S_verc_with_addr.sv
|
400
393
|
- lib/axi/data_interface/data_inf_c/data_c_pipe_intc_M2S_verc_with_id.sv
|
401
394
|
- lib/axi/data_interface/data_inf_c/data_c_pipe_latency.sv
|
395
|
+
- lib/axi/data_interface/data_inf_c/data_c_pipe_sync.sv
|
396
|
+
- lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.rb
|
397
|
+
- lib/axi/data_interface/data_inf_c/data_c_pipe_sync_seam.sv
|
402
398
|
- lib/axi/data_interface/data_inf_c/data_c_scaler.sv
|
403
399
|
- lib/axi/data_interface/data_inf_c/data_c_scaler_A1.sv
|
404
400
|
- lib/axi/data_interface/data_inf_c/data_c_tmp_cache.sv
|
@@ -807,6 +803,9 @@ files:
|
|
807
803
|
- lib/tdl/SDL/fifo/independent_clock_fifo_sdl.rb
|
808
804
|
- lib/tdl/SDL/fifo/independent_stack_sdl.rb
|
809
805
|
- lib/tdl/SDL/path_lib.rb
|
806
|
+
- lib/tdl/SDL/vcs_axi4_comptable.rb
|
807
|
+
- lib/tdl/SDL/vcs_axis_comptable.rb
|
808
|
+
- lib/tdl/SDL/vcs_data_c_comptable.rb
|
810
809
|
- lib/tdl/VideoInf/simple_video_gen.rb
|
811
810
|
- lib/tdl/VideoInf/video_from_axi4.rb
|
812
811
|
- lib/tdl/VideoInf/video_lib.rb
|
@@ -819,7 +818,108 @@ files:
|
|
819
818
|
- lib/tdl/auto_script/import_sdl.rb
|
820
819
|
- lib/tdl/auto_script/test_autogensdl.rb
|
821
820
|
- lib/tdl/auto_script/tmp.rb
|
821
|
+
- lib/tdl/auto_script/tmp/TPU_reprogram_wrapper_verb_sdl.rb
|
822
|
+
- lib/tdl/auto_script/tmp/acce_iic_bus_upgrade_sdl.rb
|
823
|
+
- lib/tdl/auto_script/tmp/arp_tpu_wrapper_sdl.rb
|
824
|
+
- lib/tdl/auto_script/tmp/axi4_direct_verc_sdl.rb
|
825
|
+
- lib/tdl/auto_script/tmp/axi4_rd_mix_interconnect_M2S_A2_sdl.rb
|
826
|
+
- lib/tdl/auto_script/tmp/axi4_wr_auxiliary_gen_without_resp_sdl.rb
|
827
|
+
- lib/tdl/auto_script/tmp/axi4_wr_pipe_sdl.rb
|
828
|
+
- lib/tdl/auto_script/tmp/axi_stream_cache_35bit_sdl.rb
|
829
|
+
- lib/tdl/auto_script/tmp/axi_stream_cache_A1_sdl.rb
|
830
|
+
- lib/tdl/auto_script/tmp/axi_stream_cache_sdl.rb
|
831
|
+
- lib/tdl/auto_script/tmp/axi_stream_interconnect_M2S_A1_sdl.rb
|
832
|
+
- lib/tdl/auto_script/tmp/axi_stream_interconnect_M2S_bind_tuser_sdl.rb
|
833
|
+
- lib/tdl/auto_script/tmp/axi_stream_interconnect_S2M_sdl.rb
|
834
|
+
- lib/tdl/auto_script/tmp/axi_stream_latency_sdl.rb
|
835
|
+
- lib/tdl/auto_script/tmp/axi_stream_long_fifo_sdl.rb
|
836
|
+
- lib/tdl/auto_script/tmp/axi_stream_long_fifo_verb_sdl.rb
|
837
|
+
- lib/tdl/auto_script/tmp/axi_stream_packet_fifo_sdl.rb
|
838
|
+
- lib/tdl/auto_script/tmp/axi_stream_packet_long_fifo_sdl.rb
|
839
|
+
- lib/tdl/auto_script/tmp/axi_stream_planer_sdl.rb
|
840
|
+
- lib/tdl/auto_script/tmp/axi_streams_scaler_A1_sdl.rb
|
841
|
+
- lib/tdl/auto_script/tmp/axis_append_A1_sdl.rb
|
842
|
+
- lib/tdl/auto_script/tmp/axis_connect_pipe_right_shift_sdl.rb
|
843
|
+
- lib/tdl/auto_script/tmp/axis_connect_pipe_right_shift_verb_sdl.rb
|
844
|
+
- lib/tdl/auto_script/tmp/axis_connect_pipe_sdl.rb
|
845
|
+
- lib/tdl/auto_script/tmp/axis_connect_pipe_with_info_sdl.rb
|
846
|
+
- lib/tdl/auto_script/tmp/axis_direct_sdl.rb
|
847
|
+
- lib/tdl/auto_script/tmp/axis_head_cut_sdl.rb
|
848
|
+
- lib/tdl/auto_script/tmp/axis_head_cut_verb_sdl.rb
|
849
|
+
- lib/tdl/auto_script/tmp/axis_intc_S2M_with_addr_inf_sdl.rb
|
850
|
+
- lib/tdl/auto_script/tmp/axis_length_cut_sdl.rb
|
851
|
+
- lib/tdl/auto_script/tmp/axis_length_split_with_addr_sdl.rb
|
852
|
+
- lib/tdl/auto_script/tmp/axis_length_split_with_user_sdl.rb
|
853
|
+
- lib/tdl/auto_script/tmp/axis_master_empty_sdl.rb
|
854
|
+
- lib/tdl/auto_script/tmp/axis_mirror_to_master_sdl.rb
|
855
|
+
- lib/tdl/auto_script/tmp/axis_pkt_fifo_filter_keep_A1_sdl.rb
|
856
|
+
- lib/tdl/auto_script/tmp/axis_pkt_fifo_filter_keep_sdl.rb
|
857
|
+
- lib/tdl/auto_script/tmp/axis_slaver_empty_sdl.rb
|
858
|
+
- lib/tdl/auto_script/tmp/axis_uncompress_A1_sdl.rb
|
859
|
+
- lib/tdl/auto_script/tmp/axis_valve_sdl.rb
|
860
|
+
- lib/tdl/auto_script/tmp/axis_valve_with_pipe_sdl.rb
|
861
|
+
- lib/tdl/auto_script/tmp/axis_vector_slaver_empty_sdl.rb
|
862
|
+
- lib/tdl/auto_script/tmp/axis_width_combin_A1_sdl.rb
|
863
|
+
- lib/tdl/auto_script/tmp/axis_width_convert_sdl.rb
|
864
|
+
- lib/tdl/auto_script/tmp/axis_width_destruct_sdl.rb
|
865
|
+
- lib/tdl/auto_script/tmp/bits_decode_nc_verb_sdl.rb
|
866
|
+
- lib/tdl/auto_script/tmp/bits_decode_verb_sdl.rb
|
867
|
+
- lib/tdl/auto_script/tmp/clock_rst_verb_sdl.rb
|
868
|
+
- lib/tdl/auto_script/tmp/clock_rst_verc_sdl.rb
|
869
|
+
- lib/tdl/auto_script/tmp/common_fifo_sdl.rb
|
870
|
+
- lib/tdl/auto_script/tmp/data_c_cache_sdl.rb
|
871
|
+
- lib/tdl/auto_script/tmp/data_c_pipe_force_vld_bind_data_sdl.rb
|
872
|
+
- lib/tdl/auto_script/tmp/data_c_pipe_sync_sdl.rb
|
873
|
+
- lib/tdl/auto_script/tmp/data_inf_c_intc_S2M_sdl.rb
|
874
|
+
- lib/tdl/auto_script/tmp/data_inf_c_planer_A1_sdl.rb
|
875
|
+
- lib/tdl/auto_script/tmp/data_mirrors_sdl.rb
|
876
|
+
- lib/tdl/auto_script/tmp/data_valve_sdl.rb
|
877
|
+
- lib/tdl/auto_script/tmp/ethernet_wrapper_sdl.rb
|
878
|
+
- lib/tdl/auto_script/tmp/full_axi4_to_axis_partition_wr_rd_sdl.rb
|
879
|
+
- lib/tdl/auto_script/tmp/full_axi4_to_axis_sdl.rb
|
880
|
+
- lib/tdl/auto_script/tmp/gen_big_field_table_sdl.rb
|
881
|
+
- lib/tdl/auto_script/tmp/gen_common_frame_table_sdl.rb
|
882
|
+
- lib/tdl/auto_script/tmp/general_tap_ack_A3_sdl.rb
|
883
|
+
- lib/tdl/auto_script/tmp/general_tap_ack_sdl.rb
|
884
|
+
- lib/tdl/auto_script/tmp/general_tap_no_ack_sdl.rb
|
885
|
+
- lib/tdl/auto_script/tmp/gvi_k7_ddr3_ip_wrapper_sdl.rb
|
822
886
|
- lib/tdl/auto_script/tmp/hdl_test_sdl.rb
|
887
|
+
- lib/tdl/auto_script/tmp/independent_clock_fifo_sdl.rb
|
888
|
+
- lib/tdl/auto_script/tmp/inf_time_delay_ctrl_verb_sdl.rb
|
889
|
+
- lib/tdl/auto_script/tmp/init_mac_sdl.rb
|
890
|
+
- lib/tdl/auto_script/tmp/ip_check_sum_sdl.rb
|
891
|
+
- lib/tdl/auto_script/tmp/k7_ethernet_10g_api_mask_shift_sdl.rb
|
892
|
+
- lib/tdl/auto_script/tmp/k7_ethernet_10g_api_sdl.rb
|
893
|
+
- lib/tdl/auto_script/tmp/mac_to_file_64b_sdl.rb
|
894
|
+
- lib/tdl/auto_script/tmp/mac_to_file_sdl.rb
|
895
|
+
- lib/tdl/auto_script/tmp/mdio_model_sdl.rb
|
896
|
+
- lib/tdl/auto_script/tmp/odata_pool_axi4_A2_sdl.rb
|
897
|
+
- lib/tdl/auto_script/tmp/odata_pool_axi4_A3_sdl.rb
|
898
|
+
- lib/tdl/auto_script/tmp/pack_ip_mac_B1_sdl.rb
|
899
|
+
- lib/tdl/auto_script/tmp/pack_ip_mac_verb_sdl.rb
|
900
|
+
- lib/tdl/auto_script/tmp/parse_big_field_table_A2_sdl.rb
|
901
|
+
- lib/tdl/auto_script/tmp/parse_big_field_table_sdl.rb
|
902
|
+
- lib/tdl/auto_script/tmp/parse_common_frame_table_A1_sdl.rb
|
903
|
+
- lib/tdl/auto_script/tmp/sensor_array_ddr_lvds_wrapper_sdl.rb
|
904
|
+
- lib/tdl/auto_script/tmp/sim_arp_tpu_sdl.rb
|
905
|
+
- lib/tdl/auto_script/tmp/sim_tpu_update_file_sdl.rb
|
906
|
+
- lib/tdl/auto_script/tmp/tcp_check_sum_sdl.rb
|
907
|
+
- lib/tdl/auto_script/tmp/tcp_option_split_sdl.rb
|
908
|
+
- lib/tdl/auto_script/tmp/time_step_module_A1_sdl.rb
|
909
|
+
- lib/tdl/auto_script/tmp/tpu_simple_boot_sdl.rb
|
910
|
+
- lib/tdl/auto_script/tmp/trigger_data_inf_c_sdl.rb
|
911
|
+
- lib/tdl/auto_script/tmp/udp_check_sum_sdl.rb
|
912
|
+
- lib/tdl/auto_script/tmp/udp_ctrl_set_A1_sdl.rb
|
913
|
+
- lib/tdl/auto_script/tmp/udp_fpga_ports_route_sdl.rb
|
914
|
+
- lib/tdl/auto_script/tmp/udp_socket_ddr_pump_A3_sdl.rb
|
915
|
+
- lib/tdl/auto_script/tmp/udp_socket_ddr_pump_verb_sdl.rb
|
916
|
+
- lib/tdl/auto_script/tmp/unpack_mac_ip_udp_D1_sdl.rb
|
917
|
+
- lib/tdl/auto_script/tmp/unpack_mac_ip_udp_tcp_sdl.rb
|
918
|
+
- lib/tdl/auto_script/tmp/unpack_mac_ip_udp_verd_sdl.rb
|
919
|
+
- lib/tdl/auto_script/tmp/wide_axis_to_axi4_wr_sdl.rb
|
920
|
+
- lib/tdl/auto_script/tmp/width_convert_verb_sdl.rb
|
921
|
+
- lib/tdl/auto_script/tmp/xilinx_hdl_dpram_sdl.rb
|
922
|
+
- lib/tdl/auto_script/tmp/xilinx_hdl_dpram_sim_sdl.rb
|
823
923
|
- lib/tdl/axi4/axi4_combin_wr_rd_batch_auto.rb
|
824
924
|
- lib/tdl/axi4/axi4_direct.rb
|
825
925
|
- lib/tdl/axi4/axi4_direct_A1_auto.rb
|
@@ -1283,5 +1383,5 @@ requirements: []
|
|
1283
1383
|
rubygems_version: 3.0.6
|
1284
1384
|
signing_key:
|
1285
1385
|
specification_version: 4
|
1286
|
-
summary: Axi
|
1386
|
+
summary: Axi 是一个轻量级的AXI4库. Tdl 是一种硬件构造语言
|
1287
1387
|
test_files: []
|