OpenCores
URL https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [axi4_lib/] [sim/] [src/] [BP065-BU-01000-r0p1-00rel0/] [axi4_checker.sv] - Blame information for rev 29

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 29 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
//// Copyright (C) 2015 Authors and OPENCORES.ORG                 ////
4
////                                                              ////
5
//// This source file may be used and distributed without         ////
6
//// restriction provided that this copyright statement is not    ////
7
//// removed from the file and that any derivative work contains  ////
8
//// the original copyright notice and the associated disclaimer. ////
9
////                                                              ////
10
//// This source file is free software; you can redistribute it   ////
11
//// and/or modify it under the terms of the GNU Lesser General   ////
12
//// Public License as published by the Free Software Foundation; ////
13
//// either version 2.1 of the License, or (at your option) any   ////
14
//// later version.                                               ////
15
////                                                              ////
16
//// This source is distributed in the hope that it will be       ////
17
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
18
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
19
//// PURPOSE.  See the GNU Lesser General Public License for more ////
20
//// details.                                                     ////
21
////                                                              ////
22
//// You should have received a copy of the GNU Lesser General    ////
23
//// Public License along with this source; if not, download it   ////
24
//// from http://www.opencores.org/lgpl.shtml                     ////
25
////                                                              ////
26
//////////////////////////////////////////////////////////////////////
27
 
28
 
29
module
30
  axi4_checker
31
  #(
32
    A = 32, // address bus width
33
    N = 8,  // data bus width in bytes
34
    I = 1,   // ID width
35
 
36
    MAXRBURSTS    = 16,
37
    MAXWBURSTS    = 16,
38
    MAXWAITS      = 16,
39
    RecommendOn   = 1'b1,
40
    RecMaxWaitOn  = 1'b1,
41
    EXMON_WIDTH   = 4,
42
    PROTOCOL      = 2'b00
43
  )
44
  (
45
    axi4_if axi4_in
46
  );
47
 
48
  //---------------------------------------------------
49
  //
50
  localparam AWUSER_MAX = 0;
51
  localparam WUSER_MAX = 0;
52
  localparam BUSER_MAX = 0;
53
  localparam ARUSER_MAX = 0;
54
  localparam RUSER_MAX = 0;
55
 
56
 
57
  //---------------------------------------------------
58
  //
59
  // INDEX:        - Global Signals
60
  // =====
61
  wire                ACLK = axi4_in.aclk;     // AXI Clock
62
  wire                ARESETn = axi4_in.aresetn;  // AXI Reset
63
 
64
  // INDEX:        - Write Address Channel
65
  // =====
66
  wire      [(I-1):0] AWID = axi4_in.awid;
67
  wire      [(A-1):0] AWADDR = axi4_in.awaddr;
68
  wire          [7:0] AWLEN = axi4_in.awlen;
69
  wire          [2:0] AWSIZE = axi4_in.awsize;
70
  wire          [1:0] AWBURST = axi4_in.awburst;
71
  wire          [3:0] AWCACHE = axi4_in.awcache;
72
  wire          [2:0] AWPROT = axi4_in.awprot;
73
  wire          [3:0] AWQOS = axi4_in.awqos;
74
  wire          [3:0] AWREGION = axi4_in.awregion;
75
  wire                AWLOCK = axi4_in.awlock;
76
  wire [AWUSER_MAX:0] AWUSER = 0;
77
  wire                AWVALID = axi4_in.awvalid;
78
  wire                AWREADY = axi4_in.awready;
79
 
80
  // INDEX:        - Write Data Channel
81
  // =====
82
  wire    [(8*N)-1:0] WDATA = axi4_in.wdata;
83
  wire        [N-1:0] WSTRB = axi4_in.wstrb;
84
  wire  [WUSER_MAX:0] WUSER = 0;
85
  wire                WLAST = axi4_in.wlast;
86
  wire                WVALID = axi4_in.wvalid;
87
  wire                WREADY = axi4_in.wready;
88
 
89
  // INDEX:        - Write Response Channel
90
  // =====
91
  wire      [(I-1):0] BID = axi4_in.bid;
92
  wire          [1:0] BRESP = axi4_in.bresp;
93
  wire  [BUSER_MAX:0] BUSER = 0;
94
  wire                BVALID = axi4_in.bvalid;
95
  wire                BREADY = axi4_in.bready;
96
 
97
  // INDEX:        - Read Address Channel
98
  // =====
99
  wire      [(I-1):0] ARID = axi4_in.arid;
100
  wire      [(A-1):0] ARADDR = axi4_in.araddr;
101
  wire          [7:0] ARLEN = axi4_in.arlen;
102
  wire          [2:0] ARSIZE = axi4_in.arsize;
103
  wire          [1:0] ARBURST = axi4_in.arburst;
104
  wire          [3:0] ARCACHE = axi4_in.arcache;
105
  wire          [3:0] ARQOS = axi4_in.arqos;
106
  wire          [3:0] ARREGION = axi4_in.arregion;
107
  wire          [2:0] ARPROT = axi4_in.arprot;
108
  wire                ARLOCK = axi4_in.arlock;
109
  wire [ARUSER_MAX:0] ARUSER = 0;
110
  wire                ARVALID = axi4_in.arvalid;
111
  wire                ARREADY = axi4_in.arready;
112
 
113
  // INDEX:        - Read Data Channel
114
  // =====
115
  wire      [(I-1):0] RID = axi4_in.rid;
116
  wire    [(8*N)-1:0] RDATA = axi4_in.rdata;
117
  wire          [1:0] RRESP = axi4_in.rresp;
118
  wire  [RUSER_MAX:0] RUSER = 0;
119
  wire                RLAST = axi4_in.rlast;
120
  wire                RVALID = axi4_in.rvalid;
121
  wire                RREADY = axi4_in.rready;
122
 
123
  // INDEX:        - Low Power Interface
124
  // =====
125
  wire                CACTIVE = 1;
126
  wire                CSYSREQ = 0;
127
  wire                CSYSACK = 0;
128
 
129
 
130
  //---------------------------------------------------
131
  //
132
  Axi4PC_ace
133
    #(
134
      // Set DATA_WIDTH to the data-bus width required
135
      .DATA_WIDTH(8*N), // = 64;         // data bus width, default = 64-bit
136
 
137
      // Select the number of channel ID bits required
138
      .WID_WIDTH(I), // = 4;            // (A|W|R|B)ID width
139
      .RID_WIDTH(I), // = 4;            // (A|W|R|B)ID width
140
 
141
      // Select the size of the USER buses, default = 32-bit
142
      .AWUSER_WIDTH(0), // = 32;       // width of the user AW sideband field
143
      .WUSER_WIDTH(0), //  = 32;       // width of the user W  sideband field
144
      .BUSER_WIDTH(0), //  = 32;       // width of the user B  sideband field
145
      .ARUSER_WIDTH(0), // = 32;       // width of the user AR sideband field
146
      .RUSER_WIDTH(0), //  = 32;       // width of the user R  sideband field
147
 
148
      // Size of CAMs for storing outstanding read bursts, this should match or
149
      // exceed the number of outstanding read addresses accepted into the slave
150
      // interface
151
      .MAXRBURSTS(MAXRBURSTS), // = 16;
152
 
153
      // Size of CAMs for storing outstanding write bursts, this should match or
154
      // exceed the number of outstanding write bursts into the slave  interface
155
      .MAXWBURSTS(MAXWBURSTS), // = 16;
156
 
157
      // Maximum number of cycles between VALID -> READY high before a warning is
158
      // generated
159
      .MAXWAITS(MAXWAITS), // = 16;
160
 
161
      // Recommended Rules Enable
162
      // enable/disable reporting of all  AXI4_REC*_* rules
163
      .RecommendOn(RecommendOn), //   = 1'b1;
164
      // enable/disable reporting of just AXI4_REC*_MAX_WAIT rules
165
      .RecMaxWaitOn(RecMaxWaitOn), //  = 1'b1;
166
 
167
      // Set the protocol - used to disable some AXI4 checks for ACE
168
      //PROTOCOL define the protocol
169
      // `define AXI4PC_AMBA_AXI4         2'b00
170
      // `define AXI4PC_AMBA_ACE          2'b01
171
      // `define AXI4PC_AMBA_ACE_LITE     2'b10
172
      .PROTOCOL(PROTOCOL), // = `AXI4PC_AMBA_AXI4;
173
 
174
      // Set ADDR_WIDTH to the address-bus width required
175
      .ADDR_WIDTH(A), // = 32;        // address bus width, default = 32-bit
176
 
177
      // Set EXMON_WIDTH to the exclusive access monitor width required
178
      .EXMON_WIDTH(EXMON_WIDTH)  // = 4;        // exclusive access width, default = 4-bit
179
    )
180
    Axi4PC_ace_i(.*);
181
 
182
 
183
//---------------------------------------------------
184
//
185
 
186
endmodule
187
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.