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

Subversion Repositories axi_master

[/] [axi_master/] [trunk/] [src/] [base/] [ic.v] - Blame information for rev 21

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 21 eyalhoc
/*///////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  Author: Eyal Hochberg                                      ////
4
////          eyal@provartec.com                                 ////
5
////                                                             ////
6
////  Downloaded from: http://www.opencores.org                  ////
7
/////////////////////////////////////////////////////////////////////
8
////                                                             ////
9
//// Copyright (C) 2010 Provartec LTD                            ////
10
//// www.provartec.com                                           ////
11
//// info@provartec.com                                          ////
12
////                                                             ////
13
//// This source file may be used and distributed without        ////
14
//// restriction provided that this copyright statement is not   ////
15
//// removed from the file and that any derivative work contains ////
16
//// the original copyright notice and the associated disclaimer.////
17
////                                                             ////
18
//// This source file is free software; you can redistribute it  ////
19
//// and/or modify it under the terms of the GNU Lesser General  ////
20
//// Public License as published by the Free Software Foundation.////
21
////                                                             ////
22
//// This source is distributed in the hope that it will be      ////
23
//// useful, but WITHOUT ANY WARRANTY; without even the implied  ////
24
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR     ////
25
//// PURPOSE.  See the GNU Lesser General Public License for more////
26
//// details. http://www.gnu.org/licenses/lgpl.html              ////
27
////                                                             ////
28
///////////////////////////////////////////////////////////////////*/
29
 
30
OUTFILE PREFIX_ic.v
31
INCLUDE def_ic.txt
32
 
33
ITER MX
34
ITER SX SLAVE_NUM ##external slave ports don't include decerr slave
35
 
36
VERIFY (GROUP_MMX_ID.NUM > 0) Master MX does not have any AXI IDs
37
 
38
VERIFY(UNIQUE(GONCAT(GROUP_MMX_ID ,))) Master MX IDs are not unique
39
 
40
IF UNIQUE_ID VERIFY (UNIQUE(CONCAT(GONCAT(GROUP_MMX_ID ,) ,))) ##Masters IDs are not unique (Undefinig UNIQUE_ID will make IDs unique internally)
41
 
42
module  PREFIX_ic (PORTS);
43
 
44
   input                                      clk;
45
   input                                      reset;
46
 
47
   port                                       MMX_GROUP_IC_AXI.PARAM(EXTRA_BITS 0);
48
   revport                                    SSX_GROUP_IC_AXI.PARAM(EXTRA_BITS MSTR_BITS);
49
ENDITER SX
50
ITER SX ##use global iterator
51
 
52
   wire [EXPR(SLV_BITS-1):0]                   MMX_AWSLV;
53
   wire [EXPR(SLV_BITS-1):0]                   MMX_ARSLV;
54
 
55
   wire [EXPR(MSTR_BITS-1):0]                  SSX_AWMSTR;
56
   wire [EXPR(MSTR_BITS-1):0]                  SSX_ARMSTR;
57
   wire                                       SSX_AWIDOK;
58
   wire                                       SSX_ARIDOK;
59
 
60
 
61
IFDEF UNIQUE_ID
62
   wire [EXPR(MSTR_ID_BITS-1):0]              MMX_AWID_FULL;
63
   wire [EXPR(MSTR_ID_BITS-1):0]              MMX_ARID_FULL;
64
   wire [EXPR(MSTR_ID_BITS-1):0]              MMX_WID_FULL;
65
   wire [EXPR(MSTR_ID_BITS-1):0]              MMX_BID_FULL;
66
   wire [EXPR(MSTR_ID_BITS-1):0]              MMX_RID_FULL;
67
 
68
   assign                                     MMX_AWID_FULL = MMX_AWID;
69
   assign                                     MMX_WID_FULL  = MMX_WID;
70
   assign                                     MMX_ARID_FULL = MMX_ARID;
71
   assign                                     MMX_RID       = MMX_RID_FULL;
72
   assign                                     MMX_BID       = MMX_BID_FULL;
73
ELSE UNIQUE_ID
74
 
75
   wire [EXPR(MSTR_ID_BITS+MSTR_BITS-1):0]    MMX_AWID_FULL;
76
   wire [EXPR(MSTR_ID_BITS+MSTR_BITS-1):0]    MMX_WID_FULL;
77
   wire [EXPR(MSTR_ID_BITS+MSTR_BITS-1):0]    MMX_BID_FULL;
78
   wire [EXPR(MSTR_ID_BITS+MSTR_BITS-1):0]    MMX_ARID_FULL;
79
   wire [EXPR(MSTR_ID_BITS+MSTR_BITS-1):0]    MMX_RID_FULL;
80
 
81
   assign                                     MMX_AWID_FULL = {BIN(MX MSTR_BITS), MMX_AWID};
82
   assign                                     MMX_WID_FULL  = {BIN(MX MSTR_BITS), MMX_WID};
83
   assign                                     MMX_ARID_FULL = {BIN(MX MSTR_BITS), MMX_ARID};
84
 
85
   assign                                     MMX_RID[MSTR_ID_BITS-1:0] = MMX_RID_FULL;
86
   assign                                     MMX_BID[MSTR_ID_BITS-1:0] = MMX_BID_FULL;
87
ENDIF UNIQUE_ID
88
 
89
 
90
   CREATE ic_addr.v def_ic.txt DEFCMD(SWAP.GLOBAL EXTRA_BITS MSTR_BITS)
91
   PREFIX_ic_addr
92
   PREFIX_ic_addr_rd (.clk(clk),
93
                      .reset(reset),
94
                      .MMX_ASLV(MMX_ARSLV),
95
                      .MMX_AID(MMX_ARID_FULL),
96
                      .MMX_AGROUP_IC_AXI_A.SON(CHANGE!=1)(MMX_ARGROUP_IC_AXI_A),
97
                      .SSX_AMSTR(SSX_ARMSTR),
98
                      .SSX_AIDOK(SSX_ARIDOK),
99
                      .SSX_AGROUP_IC_AXI_A(SSX_ARGROUP_IC_AXI_A),
100
                      STOMP ,
101
                      );
102
 
103
 
104
   PREFIX_ic_addr
105
   PREFIX_ic_addr_wr (
106
                      .clk(clk),
107
                      .reset(reset),
108
                      .MMX_ASLV(MMX_AWSLV),
109
                      .MMX_AID(MMX_AWID_FULL),
110
                      .MMX_AGROUP_IC_AXI_A.SON(CHANGE!=1)(MMX_AWGROUP_IC_AXI_A),
111
                      .SSX_AMSTR(SSX_AWMSTR),
112
                      .SSX_AIDOK(SSX_AWIDOK),
113
                      .SSX_AGROUP_IC_AXI_A(SSX_AWGROUP_IC_AXI_A),
114
                      STOMP ,
115
                      );
116
 
117
 
118
   CREATE ic_resp.v def_ic.txt DEFCMD(SWAP CONST(RW) R) DEFCMD(SWAP.GLOBAL EXTRA_BITS MSTR_BITS)
119
   PREFIX_ic_resp
120
   PREFIX_ic_rresp (
121
                    .clk(clk),
122
                    .reset(reset),
123
                    .MMX_AID(MMX_ARID_FULL),
124
                    .MMX_ID(MMX_RID_FULL),
125
                    .MMX_AGROUP_IC_AXI_CMD.SON(CHANGE!=1)(MMX_ARGROUP_IC_AXI_CMD),
126
                    .MMX_GROUP_IC_AXI_R.SON(CHANGE!=1)(MMX_RGROUP_IC_AXI_R),
127
                    .SSX_GROUP_IC_AXI_R(SSX_RGROUP_IC_AXI_R),
128
                    STOMP ,
129
                    );
130
 
131
 
132
   CREATE ic_wdata.v def_ic.txt DEFCMD(SWAP.GLOBAL EXTRA_BITS MSTR_BITS)
133
   PREFIX_ic_wdata
134
   PREFIX_ic_wdata (
135
                    .clk(clk),
136
                    .reset(reset),
137
                    .MMX_AWID(MMX_AWID_FULL),
138
                    .MMX_WID(MMX_WID_FULL),
139
                    .MMX_AWGROUP_IC_AXI_CMD.SON(CHANGE!=1)(MMX_AWGROUP_IC_AXI_CMD),
140
                    .MMX_WGROUP_IC_AXI_W.SON(CHANGE!=1)(MMX_WGROUP_IC_AXI_W),
141
                    .SSX_WGROUP_IC_AXI_W(SSX_WGROUP_IC_AXI_W),
142
                    .SSX_AWVALID(SSX_AWVALID),
143
                    .SSX_AWREADY(SSX_AWREADY),
144
                    .SSX_AWMSTR(SSX_AWMSTR),
145
                    STOMP ,
146
                    );
147
 
148
 
149
   CREATE ic_resp.v def_ic.txt DEFCMD(SWAP CONST(RW) W) DEFCMD(SWAP.GLOBAL EXTRA_BITS MSTR_BITS)
150
   PREFIX_ic_resp
151
   PREFIX_ic_bresp (
152
                    .clk(clk),
153
                    .reset(reset),
154
                    .MMX_AID(MMX_AWID_FULL),
155
                    .MMX_ID(MMX_BID_FULL),
156
                    .MMX_AGROUP_IC_AXI_CMD.SON(CHANGE!=1)(MMX_AWGROUP_IC_AXI_CMD),
157
                    .MMX_GROUP_IC_AXI_B.SON(CHANGE!=1)(MMX_BGROUP_IC_AXI_B),
158
                    .MMX_DATA(),
159
                    .MMX_LAST(),
160
                    .SSX_GROUP_IC_AXI_B(SSX_BGROUP_IC_AXI_B),
161
                    .SSX_DATA({DATA_BITS{1'b0}}),
162
                    .SSX_LAST(1'b1),
163
                    STOMP ,
164
                    );
165
 
166
 
167
   IFDEF DEF_DECERR_SLV
168
     wire            SSERR_GROUP_IC_AXI;
169
 
170
   CREATE ic_decerr.v def_ic.txt DEFCMD(SWAP.GLOBAL EXTRA_BITS MSTR_BITS)
171
   PREFIX_ic_decerr
172
     PREFIX_ic_decerr (
173
                       .clk(clk),
174
                       .reset(reset),
175
                       .AWIDOK(SSERR_AWIDOK),
176
                       .ARIDOK(SSERR_ARIDOK),
177
                       .GROUP_IC_AXI(SSERR_GROUP_IC_AXI),
178
                       STOMP ,
179
                       );
180
   ENDIF DEF_DECERR_SLV
181
 
182
 
183
     endmodule
184
 
185
 
186
 

powered by: WebSVN 2.1.0

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