axi_tdl 0.2.0 → 0.2.5
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 +46 -28
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +2 -1
- data/.travis.yml +1 -0
- data/axi_tdl.gemspec +1 -1
- data/lib/axi/AXI4/axi4_long_to_axi4_wide_B1.sv +5 -3
- data/lib/axi/AXI4/interconnect/axi4_mix_interconnect_M2S.sv +4 -2
- data/lib/axi/AXI4/interconnect/axi4_rd_mix_interconnect_M2S_A2.sv +4 -2
- data/lib/axi/AXI4/long_axis_to_axi4_wr.rb +1 -0
- data/lib/axi/AXI4/odata_pool_axi4_A4.sv +173 -0
- data/lib/axi/AXI4/packet_fifo/axi4_packet_fifo_B1.sv +66 -0
- data/lib/axi/AXI4/packet_fifo/axi4_rd_packet_fifo_A1.sv +260 -0
- data/lib/axi/AXI4/packet_fifo/axi4_wr_packet_fifo_A1.sv +192 -0
- data/lib/axi/AXI4/packet_partition/axi4_partition_rd_verb.rb +4 -2
- data/lib/axi/AXI4/wide_axis_to_axi4_wr.sv +1 -1
- data/lib/axi/AXI_stream/axi_stream_split_channel.sv +21 -21
- data/lib/axi/AXI_stream/axi_streams_combin.sv +2 -1
- data/lib/axi/AXI_stream/axi_streams_combin_A1.sv +2 -1
- data/lib/axi/AXI_stream/axi_streams_scaler.sv +2 -1
- data/lib/axi/AXI_stream/axi_streams_scaler_A1.sv +2 -1
- data/lib/axi/AXI_stream/axis_combin_with_fifo.sv +2 -1
- data/lib/axi/AXI_stream/axis_head_cut_verc.rb +2 -0
- data/lib/axi/AXI_stream/gen_big_field_table.sv +3 -2
- data/lib/axi/AXI_stream/gen_origin_axis_A3.sv +163 -0
- data/lib/axi/AXI_stream/packet_fifo/axi_stream_packet_fifo_B1F.sv +129 -0
- data/lib/axi/AXI_stream/parse_big_field_table_main.sv +101 -0
- data/lib/axi/AXI_stream/parse_big_field_table_mirror.sv +94 -0
- data/lib/axi/axi4_to_xilinx_ddr_native/axi4_to_native_for_ddr_ip_C2.sv +75 -0
- data/lib/axi/axi4_to_xilinx_ddr_native/ddr_native_fifo_A2.sv +206 -0
- data/lib/axi/axi4_to_xilinx_ddr_native/ddr_native_fifo_B1.sv +297 -0
- data/lib/axi/axi4_to_xilinx_ddr_native/model_ddr_ip_app.sv +2 -2
- 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_scaler.sv +2 -1
- data/lib/axi/data_interface/data_inf_c/data_c_scaler_A1.sv +2 -1
- data/lib/axi/data_interface/data_streams_combin.sv +2 -1
- data/lib/axi/data_interface/data_streams_combin_A1.sv +2 -1
- data/lib/axi/data_interface/data_streams_scaler.sv +2 -1
- data/lib/axi_tdl/version.rb +1 -1
- data/lib/tdl/axi4/axi4_interconnect_verb.rb +5 -1
- data/lib/tdl/examples/2_hdl_class/tmp/test_module_var.sv +2 -2
- data/lib/tdl/examples/2_hdl_class/tmp/test_vcs_string.sv +1 -1
- data/lib/tdl/examples/8_top_module/test_top.sv +7 -26
- data/lib/tdl/examples/8_top_module/test_top_sim.sv +26 -7
- data/lib/tdl/examples/9_itegration/test_tttop.sv +7 -38
- data/lib/tdl/examples/9_itegration/test_tttop_sim.sv +38 -7
- data/lib/tdl/rebuild_ele/ele_base.rb +14 -0
- metadata +14 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbd04437f9a54f453a70249ea3800e0ad83b7afca7b2eb8aa4e968160a44b714
|
4
|
+
data.tar.gz: 4e0e182673271971834246838aa7f2d2735bf6c16ec8d02bf6cecacc63ef9f9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 756a91a926f7933d0b9f282bc10effc50f7505026b31b15ae4af55e0229bd515687fe30ba35b4d5593ba313655e46643e29089292456079475c7ac6baa9ea562
|
7
|
+
data.tar.gz: 5100e94f2d061d83cf6f0caae29401bfaefefa15bb5f911d6fbf9b84c5aba9bcb891bee496761b76c9e6b1627a57917d7a9e0ac60e4c549699ef475894c7dd3a
|
@@ -1,6 +1,18 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
|
6
|
+
# GitHub recommends pinning actions to a commit SHA.
|
7
|
+
# To get a newer version, you will need to update the SHA.
|
8
|
+
# You can also reference a tag or branch, but the action may change without warning.
|
9
|
+
|
1
10
|
name: Ruby Gem
|
2
11
|
|
3
12
|
on:
|
13
|
+
# Manually publish
|
14
|
+
workflow_dispatch:
|
15
|
+
# Alternatively, publish whenever changes are merged to the `main` branch.
|
4
16
|
push:
|
5
17
|
branches: [ main ]
|
6
18
|
pull_request:
|
@@ -10,35 +22,41 @@ jobs:
|
|
10
22
|
build:
|
11
23
|
name: Build + Publish
|
12
24
|
runs-on: ubuntu-latest
|
25
|
+
permissions:
|
26
|
+
packages: write
|
27
|
+
contents: read
|
13
28
|
|
14
29
|
steps:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
30
|
+
- uses: actions/checkout@v3
|
31
|
+
- name: Set up Ruby 2.6
|
32
|
+
uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
|
33
|
+
with:
|
34
|
+
ruby-version: 2.6
|
35
|
+
- run: bundle install
|
36
|
+
|
37
|
+
- name: Publish to GPR
|
38
|
+
run: |
|
39
|
+
mkdir -p $HOME/.gem
|
40
|
+
touch $HOME/.gem/credentials
|
41
|
+
chmod 0600 $HOME/.gem/credentials
|
42
|
+
printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
43
|
+
gem build *.gemspec
|
44
|
+
gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
|
45
|
+
env:
|
46
|
+
GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
|
47
|
+
OWNER: ${{ github.repository_owner }}
|
48
|
+
|
49
|
+
- name: Publish to RubyGems
|
50
|
+
run: |
|
51
|
+
mkdir -p $HOME/.gem
|
52
|
+
touch $HOME/.gem/credentials
|
53
|
+
chmod 0600 $HOME/.gem/credentials
|
54
|
+
printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}\n" > $HOME/.gem/credentials
|
55
|
+
gem build *.gemspec
|
56
|
+
gem push *.gem
|
57
|
+
env:
|
58
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
42
59
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
43
60
|
RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
|
44
|
-
|
61
|
+
|
62
|
+
|
data/.github/workflows/ruby.yml
CHANGED
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/axi_tdl.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.license = "LGPL-2.1"
|
16
16
|
spec.files = Dir['lib/**/*']
|
17
17
|
spec.require_paths = ["lib"]
|
18
|
-
spec.required_ruby_version = '>= 2.
|
18
|
+
spec.required_ruby_version = '>= 2.6.0'
|
19
19
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
20
20
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
21
21
|
if spec.respond_to?(:metadata)
|
@@ -109,8 +109,8 @@ axi4_partition_OD #(
|
|
109
109
|
// .ADDR_STEP (slaver_inf.DSIZE/(master_inf.DSIZE/8.0) )
|
110
110
|
// .ADDR_STEP (4*slaver_inf.DSIZE/16.0 )
|
111
111
|
)axi4_partition_inst(
|
112
|
-
/* axi_inf.slaver_inf */ .
|
113
|
-
/* axi_inf.master_inf */ .
|
112
|
+
/* axi_inf.slaver_inf */ .slaver (axi_inf_first_wc ),
|
113
|
+
/* axi_inf.master_inf */ .master (axi_inf_pout )
|
114
114
|
);
|
115
115
|
|
116
116
|
axi4_data_convert_verb #(
|
@@ -133,9 +133,11 @@ end
|
|
133
133
|
endgenerate
|
134
134
|
|
135
135
|
|
136
|
-
axi4_packet_fifo_verb #( //512
|
136
|
+
// axi4_packet_fifo_verb #( //512
|
137
|
+
axi4_packet_fifo_B1 #( //
|
137
138
|
.PIPE (PIPE ),
|
138
139
|
.DEPTH (4 ),
|
140
|
+
.MAX_DATA_LEN (1024*2),
|
139
141
|
.SLAVER_MODE (SLAVER_MODE ), //
|
140
142
|
.MASTER_MODE (MASTER_MODE ) //
|
141
143
|
)axi4_packet_fifo_inst(
|
@@ -12,7 +12,8 @@ madified:
|
|
12
12
|
***********************************************/
|
13
13
|
`timescale 1ns/1ps
|
14
14
|
module axi4_mix_interconnect_M2S #(
|
15
|
-
parameter NUM = 8
|
15
|
+
parameter NUM = 8,
|
16
|
+
parameter MASTER_IDSIZE = 8
|
16
17
|
)(
|
17
18
|
axi_inf.slaver slaver [NUM-1:0],
|
18
19
|
axi_inf.master master
|
@@ -38,7 +39,8 @@ axi4_wr_interconnect_M2S_A1 #( //axi4 dont support write burst out-of-order
|
|
38
39
|
// );
|
39
40
|
|
40
41
|
axi4_rd_mix_interconnect_M2S_A2 #(
|
41
|
-
.NUM
|
42
|
+
.NUM (NUM ),
|
43
|
+
.MASTER_IDSIZE (MASTER_IDSIZE)
|
42
44
|
)axi4_rd_mix_interconnect_M2S_inst(
|
43
45
|
/* axi_inf.slaver_rd */ .slaver (`slaver_vcs_cptRead ), //[NUM-1:0],
|
44
46
|
/* axi_inf.master_rd */ .master (`master_vcs_cptRead )
|
@@ -14,7 +14,8 @@ madified:
|
|
14
14
|
***********************************************/
|
15
15
|
`timescale 1ns/1ps
|
16
16
|
module axi4_rd_mix_interconnect_M2S_A2 #(
|
17
|
-
parameter NUM = 8
|
17
|
+
parameter NUM = 8,
|
18
|
+
parameter MASTER_IDSIZE = 8
|
18
19
|
)(
|
19
20
|
axi_inf.slaver_rd slaver [NUM-1:0],
|
20
21
|
axi_inf.master_rd master
|
@@ -24,7 +25,8 @@ localparam NSIZE = $clog2(NUM);
|
|
24
25
|
import SystemPkg::*;
|
25
26
|
|
26
27
|
// localparam LAZISE = slaver[0].IDSIZE;
|
27
|
-
localparam LAZISE = master.IDSIZE - NSIZE;
|
28
|
+
// localparam LAZISE = master.IDSIZE - NSIZE;
|
29
|
+
localparam LAZISE = MASTER_IDSIZE - NSIZE;
|
28
30
|
|
29
31
|
initial begin
|
30
32
|
// assert(slaver[0].IDSIZE+NSIZE == master.IDSIZE)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
require_hdl "axis_length_split_with_addr.sv"
|
3
3
|
require_hdl 'axi_stream_long_fifo_verb.sv'
|
4
4
|
require_shdl 'axi4_wr_auxiliary_gen_without_resp','axis_valve_with_pipe'
|
5
|
+
require_shdl 'independent_clock_fifo'
|
5
6
|
|
6
7
|
TdlBuild.long_axis_to_axi4_wr(__dir__) do
|
7
8
|
parameter.BYTE_DEPTH 8192*2
|
@@ -0,0 +1,173 @@
|
|
1
|
+
/**********************************************
|
2
|
+
_______________________________________
|
3
|
+
___________ Cook Darwin __________
|
4
|
+
_______________________________________
|
5
|
+
descript:
|
6
|
+
author : Cook.Darwin
|
7
|
+
Version: VERA.1.0 2017/9/18
|
8
|
+
use axis out
|
9
|
+
Version: VERA.2.0 ###### Tue Jan 7 09:47:51 CST 2020
|
10
|
+
data_inf_c replace valid ready
|
11
|
+
Version: VERA.4.0
|
12
|
+
Vision AXI PARAMETER
|
13
|
+
creaded: 2017/3/1
|
14
|
+
madified:
|
15
|
+
***********************************************/
|
16
|
+
`timescale 1ns/1ps
|
17
|
+
(* axi4 = "true" *)
|
18
|
+
module odata_pool_axi4_A4 #(
|
19
|
+
parameter IDSIZE = 2,
|
20
|
+
parameter ASIZE = 32,
|
21
|
+
parameter LSIZE = 16
|
22
|
+
)(
|
23
|
+
axi_stream_inf.master out_axis,
|
24
|
+
data_inf_c.slaver addr_size_inf, //ADDR: 32 SIZE: 32
|
25
|
+
axi_inf.master_rd axi_master
|
26
|
+
);
|
27
|
+
|
28
|
+
`include "define_macro.sv"
|
29
|
+
|
30
|
+
logic fifo_empty;
|
31
|
+
logic fifo_full;
|
32
|
+
logic [31:0] fifo_addr;
|
33
|
+
logic [31:0] fifo_size;
|
34
|
+
logic fifo_rd_en;
|
35
|
+
|
36
|
+
independent_clock_fifo #(
|
37
|
+
.DEPTH (4 ),
|
38
|
+
.DSIZE (64 )
|
39
|
+
)independent_clock_fifo_inst_req(
|
40
|
+
/* input */ .wr_clk (addr_size_inf.clock ),
|
41
|
+
/* input */ .wr_rst_n (addr_size_inf.rst_n ),
|
42
|
+
/* input */ .rd_clk (axi_master.axi_aclk ),
|
43
|
+
/* input */ .rd_rst_n (axi_master.axi_aresetn ),
|
44
|
+
/* input [DSIZE-1:0] */ .wdata (addr_size_inf.data ),
|
45
|
+
/* input */ .wr_en (addr_size_inf.valid && addr_size_inf.ready ),
|
46
|
+
/* output logic[DSIZE-1:0] */ .rdata ({fifo_addr,fifo_size} ),
|
47
|
+
/* input */ .rd_en ((fifo_rd_en && !fifo_empty) ),
|
48
|
+
/* output logic */ .empty (fifo_empty ),
|
49
|
+
/* output logic */ .full (fifo_full )
|
50
|
+
);
|
51
|
+
|
52
|
+
assign addr_size_inf.ready = !fifo_full;
|
53
|
+
|
54
|
+
initial begin
|
55
|
+
if(out_axis.DSIZE != axi_master.DSIZE)begin
|
56
|
+
$error("DATA POOL AXI4 DATA WIDTH ERROR DSIZE[%d]--axi_master.DSIZE[%d]",out_axis.DSIZE,axi_master.DSIZE);
|
57
|
+
$finish;
|
58
|
+
end
|
59
|
+
assert (axi_master.IDSIZE==IDSIZE)
|
60
|
+
else $error("axi_master.IDSIZE==IDSIZE");
|
61
|
+
|
62
|
+
assert (axi_master.ASIZE==ASIZE)
|
63
|
+
else $error("axi_master.ASIZE==ASIZE");
|
64
|
+
|
65
|
+
assert (axi_master.LSIZE==LSIZE)
|
66
|
+
else $error("axi_master.LSIZE==LSIZE");
|
67
|
+
end
|
68
|
+
|
69
|
+
axi_stream_inf #(.DSIZE(IDSIZE+ASIZE+LSIZE)) addr_len_inf (.aclk(axi_master.axi_aclk),.aresetn(axi_master.axi_aresetn),.aclken(1'b1));
|
70
|
+
|
71
|
+
logic [IDSIZE-1:0] id;
|
72
|
+
logic [ASIZE-1:0] addr;
|
73
|
+
logic [LSIZE-1:0] length;
|
74
|
+
logic force_align_status;
|
75
|
+
|
76
|
+
assign id = '0;
|
77
|
+
assign addr = fifo_addr[ASIZE-1:0];
|
78
|
+
assign length = fifo_size[LSIZE:0];
|
79
|
+
|
80
|
+
assign addr_len_inf.axis_tdata = {id,addr,length};
|
81
|
+
|
82
|
+
`VCS_AXI4_CPT_LT(axi_master,master_rd,master_rd_aux,)
|
83
|
+
axi4_rd_auxiliary_gen_A1 axi4_rd_auxiliary_gen_inst(
|
84
|
+
/* axi_stream_inf.slaver */ .id_add_len_in (addr_len_inf ), //tlast is not necessary
|
85
|
+
/* axi_inf.master_rd_aux */ .axi_rd_aux (`axi_master_vcs_cpt )
|
86
|
+
);
|
87
|
+
|
88
|
+
assign addr_len_inf.axis_tvalid = !fifo_empty && (fifo_size[LSIZE:0]!='0);
|
89
|
+
assign fifo_rd_en = addr_len_inf.axis_tready;
|
90
|
+
|
91
|
+
//--->> FIFO
|
92
|
+
|
93
|
+
logic axis_fifo_empty;
|
94
|
+
logic axis_fifo_full;
|
95
|
+
logic axis_fifo_rd_en;
|
96
|
+
logic [out_axis.DSIZE+1-1:0] axis_fifo_rd_data;
|
97
|
+
|
98
|
+
//--->> forece rd_en <<---------------------------
|
99
|
+
|
100
|
+
logic force_rd_en;
|
101
|
+
|
102
|
+
logic cmded_empty;
|
103
|
+
|
104
|
+
independent_clock_fifo #(
|
105
|
+
.DEPTH (4 ),
|
106
|
+
.DSIZE (1 )
|
107
|
+
)independent_clock_fifo_inst(
|
108
|
+
/* input */ .wr_clk (axi_master.axi_aclk ),
|
109
|
+
/* input */ .wr_rst_n (axi_master.axi_aresetn ),
|
110
|
+
/* input */ .rd_clk (out_axis.aclk ),
|
111
|
+
/* input */ .rd_rst_n (out_axis.aresetn ),
|
112
|
+
/* input [DSIZE-1:0] */ .wdata (1'b1),
|
113
|
+
/* input */ .wr_en (axi_master.axi_arready && axi_master.axi_arvalid),
|
114
|
+
/* output logic[DSIZE-1:0] */ .rdata (),
|
115
|
+
/* input */ .rd_en (out_axis.axis_tvalid && out_axis.axis_tready && out_axis.axis_tlast),
|
116
|
+
/* output logic */ .empty (cmded_empty ),
|
117
|
+
/* output logic */ .full ()
|
118
|
+
);
|
119
|
+
|
120
|
+
assign force_rd_en = cmded_empty && !axis_fifo_empty;
|
121
|
+
//---<< forece rd_en >>---------------------------
|
122
|
+
|
123
|
+
xilinx_fifo_verb #(
|
124
|
+
//xilinx_fifo #(
|
125
|
+
.DSIZE (out_axis.DSIZE+1 )
|
126
|
+
)xilinx_fifo_inst(
|
127
|
+
/* input */ .wr_clk (axi_master.axi_aclk ),
|
128
|
+
/* input */ .wr_rst (!axi_master.axi_aresetn),
|
129
|
+
/* input */ .rd_clk (out_axis.aclk ),
|
130
|
+
/* input */ .rd_rst (!out_axis.aresetn ),
|
131
|
+
/* input [DSIZE-1:0] */ .din ({axi_master.axi_rlast,axi_master.axi_rdata} ),
|
132
|
+
/* input */ .wr_en ((axi_master.axi_rvalid && axi_master.axi_rready) ),
|
133
|
+
/* input */ .rd_en (axis_fifo_rd_en || force_rd_en ),
|
134
|
+
/* output [DSIZE-1:0] */ .dout (axis_fifo_rd_data ),
|
135
|
+
/* output */ .full (axis_fifo_full ),
|
136
|
+
/* output */ .empty (axis_fifo_empty ),
|
137
|
+
/* output [LSIZE-1:0] */ .rdcount (),
|
138
|
+
/* output [LSIZE-1:0] */ .wrcount ()
|
139
|
+
);
|
140
|
+
|
141
|
+
|
142
|
+
assign axi_master.axi_rready = !axis_fifo_full;
|
143
|
+
|
144
|
+
assign out_axis.axis_tdata = axis_fifo_rd_data[out_axis.DSIZE-1:0];
|
145
|
+
assign out_axis.axis_tlast = axis_fifo_rd_data[out_axis.DSIZE];
|
146
|
+
assign out_axis.axis_tvalid = !axis_fifo_empty;
|
147
|
+
assign out_axis.axis_tkeep = '1;
|
148
|
+
assign axis_fifo_rd_en = out_axis.axis_tvalid && out_axis.axis_tready;
|
149
|
+
|
150
|
+
|
151
|
+
//--->> force_align_status <<---------------------
|
152
|
+
|
153
|
+
// (* dont_touch = "true" *)
|
154
|
+
logic [23:0] axi4_rd_cnt;
|
155
|
+
|
156
|
+
always@(posedge axi_master.axi_aclk)
|
157
|
+
if(axi_master.axi_rvalid && axi_master.axi_rready && axi_master.axi_rlast)
|
158
|
+
axi4_rd_cnt <= '0;
|
159
|
+
else if(axi_master.axi_rvalid && axi_master.axi_rready)
|
160
|
+
axi4_rd_cnt <= axi4_rd_cnt + 1'b1;
|
161
|
+
else axi4_rd_cnt <= axi4_rd_cnt;
|
162
|
+
|
163
|
+
always@(posedge axi_master.axi_aclk ,negedge axi_master.axi_aresetn)
|
164
|
+
if(!axi_master.axi_aresetn)
|
165
|
+
force_align_status <= 1'b0;
|
166
|
+
else if(axi_master.axi_rvalid && axi_master.axi_rready && axi_master.axi_rlast)
|
167
|
+
force_align_status <= axi_master.axi_rcnt != axi4_rd_cnt;
|
168
|
+
else if(axis_fifo_empty && cmded_empty)
|
169
|
+
force_align_status <= 1'b0;
|
170
|
+
else force_align_status <= force_align_status;
|
171
|
+
|
172
|
+
//---<< force_align_status >>---------------------
|
173
|
+
endmodule
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/**********************************************
|
2
|
+
_______________________________________
|
3
|
+
___________ Cook Darwin __________
|
4
|
+
_______________________________________
|
5
|
+
descript:
|
6
|
+
author : Cook.Darwin
|
7
|
+
Version: VERB.1.0
|
8
|
+
longer fifo
|
9
|
+
creaded: 2017/2/28
|
10
|
+
madified:
|
11
|
+
***********************************************/
|
12
|
+
`timescale 1ns/1ps
|
13
|
+
`include "define_macro.sv"
|
14
|
+
module axi4_packet_fifo_B1 #(
|
15
|
+
parameter PIPE = "OFF",
|
16
|
+
parameter DEPTH = 4,
|
17
|
+
parameter MAX_DATA_LEN = 1024*16,
|
18
|
+
`parameter_string MODE = "BOTH", //ONLY_WRITE ONLY_READ BOTH
|
19
|
+
`parameter_string SLAVER_MODE = "BOTH", //
|
20
|
+
`parameter_string MASTER_MODE = "BOTH" //
|
21
|
+
)(
|
22
|
+
axi_inf.slaver axi_in,
|
23
|
+
axi_inf.master axi_out
|
24
|
+
);
|
25
|
+
|
26
|
+
import SystemPkg::*;
|
27
|
+
|
28
|
+
initial begin
|
29
|
+
assert(SLAVER_MODE == MASTER_MODE)
|
30
|
+
else begin
|
31
|
+
$error("SLAVER AXIS MODE != MASTER AXIS MODE");
|
32
|
+
$stop;
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
`VCS_AXI4_CPT(axi_in,slaver,slaver_rd,Read)
|
38
|
+
`VCS_AXI4_CPT(axi_in,slaver,slaver_wr,Write)
|
39
|
+
`VCS_AXI4_CPT_LT(axi_out,master_rd,master,Read)
|
40
|
+
`VCS_AXI4_CPT_LT(axi_out,master_wr,master,Write)
|
41
|
+
|
42
|
+
|
43
|
+
generate
|
44
|
+
if(SLAVER_MODE=="BOTH" || SLAVER_MODE=="ONLY_WRITE")
|
45
|
+
axi4_wr_packet_fifo_A1 #(
|
46
|
+
.PIPE (PIPE ),
|
47
|
+
.DEPTH (DEPTH ),
|
48
|
+
.MAX_DATA_LEN (MAX_DATA_LEN )
|
49
|
+
)axi4_wr_packet_fifo_inst(
|
50
|
+
/* axi_inf.slaver_wr */ .axi_in (`axi_in_vcs_cptWrite ),
|
51
|
+
/* axi_inf.master_wr */ .axi_out (`axi_out_vcs_cptWrite )
|
52
|
+
);
|
53
|
+
endgenerate
|
54
|
+
|
55
|
+
generate
|
56
|
+
if(SLAVER_MODE=="BOTH" || SLAVER_MODE=="ONLY_READ")
|
57
|
+
axi4_rd_packet_fifo_A1 #(
|
58
|
+
.DEPTH (DEPTH ),
|
59
|
+
.MAX_DATA_LEN (MAX_DATA_LEN )
|
60
|
+
)axi4_rd_packet_fifo_inst(
|
61
|
+
/* axi_inf.slaver_rd */ .slaver (`axi_in_vcs_cptRead ),
|
62
|
+
/* axi_inf.master_rd */ .master (`axi_out_vcs_cptRead )
|
63
|
+
);
|
64
|
+
endgenerate
|
65
|
+
|
66
|
+
endmodule
|