axi_tdl 0.2.0 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|