Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: siu_wb_chkr.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | `ifdef IOS | |
36 | `define TB_TOP tb_top | |
37 | `define TB_RST tb_top.reset | |
38 | `else | |
39 | `ifdef FC_BENCH | |
40 | `define TB_TOP tb_top | |
41 | `define TB_RST tb_top.reset | |
42 | `else | |
43 | `define TB_TOP siu_top | |
44 | `define TB_RST siu_top.reset | |
45 | `endif | |
46 | `endif | |
47 | ||
48 | module siu_wb_chkr(); | |
49 | ||
50 | // set this to -constraint to constrain input signals to SIU | |
51 | `define SIU_CONSTRAINT | |
52 | // set this to -constraint to constrain input signals to NIU | |
53 | `define NIU_CONSTRAINT | |
54 | ||
55 | // 0in set_clock -default iol2clk -module sii | |
56 | // 0in set_clock -default iol2clk -module sio | |
57 | ||
58 | ||
59 | /////////////////////////////////////////////////////////////////////////////// | |
60 | // These signals can be used to disable certain 0-In checkers at runtime, | |
61 | // so that testcases forcing interface errors don't die with checker firings. | |
62 | /////////////////////////////////////////////////////////////////////////////// | |
63 | reg disable_siu_checks; | |
64 | ||
65 | initial begin | |
66 | @(posedge `TB_TOP.cpu.sii.iol2clk) ; | |
67 | if ($test$plusargs("siu_0in_wb_chk_off")) | |
68 | disable_siu_checks <= 1; | |
69 | else | |
70 | disable_siu_checks <= 0; | |
71 | end | |
72 | ||
73 | // 0in disable_checker -name *sii* disable_siu_checks | |
74 | // 0in disable_checker -name *sio* disable_siu_checks | |
75 | ||
76 | ||
77 | wire niu_req; | |
78 | reg niu_req_d, niu_req_dd, niu_req_ddd, niu_req_dddd; | |
79 | ||
80 | assign niu_req = `TB_TOP.cpu.niu_sii_hdr_vld; | |
81 | always @(posedge `TB_TOP.cpu.sii.iol2clk) begin | |
82 | niu_req_d <= #2 niu_req; | |
83 | niu_req_dd <= #2 niu_req_d; | |
84 | niu_req_ddd <= #2 niu_req_dd; | |
85 | niu_req_dddd <= #2 niu_req_ddd; | |
86 | ||
87 | end | |
88 | ||
89 | reg ipdodq0_h_wr_en_d1,ipdodq0_l_wr_en_d1,ipdbdq0_h_wr_en_d1,ipdbdq0_l_wr_en_d1; | |
90 | reg ipdodq1_h_wr_en_d1,ipdodq1_l_wr_en_d1,ipdbdq1_h_wr_en_d1,ipdbdq1_l_wr_en_d1; | |
91 | reg ipdodq0_h_rd_en_d1,ipdodq0_l_rd_en_d1,ipdbdq0_h_rd_en_d1,ipdbdq0_l_rd_en_d1; | |
92 | reg ipdodq1_h_rd_en_d1,ipdodq1_l_rd_en_d1,ipdbdq1_h_rd_en_d1,ipdbdq1_l_rd_en_d1; | |
93 | reg [`SII_IPD_DATA_RF_ADDRWIDTH-1:0] ipdodq0_h_wr_adr_d1,ipdodq0_l_wr_adr_d1,ipdbdq0_h_wr_adr_d1,ipdbdq0_l_wr_adr_d1; | |
94 | reg [`SII_IPD_DATA_RF_ADDRWIDTH-1:0] ipdodq1_h_wr_adr_d1,ipdodq1_l_wr_adr_d1,ipdbdq1_h_wr_adr_d1,ipdbdq1_l_wr_adr_d1; | |
95 | reg [`SII_IPD_DATA_RF_ADDRWIDTH-1:0] ipdodq0_h_rd_adr_d1,ipdodq0_l_rd_adr_d1,ipdbdq0_h_rd_adr_d1,ipdbdq0_l_rd_adr_d1; | |
96 | reg [`SII_IPD_DATA_RF_ADDRWIDTH-1:0] ipdodq1_h_rd_adr_d1,ipdodq1_l_rd_adr_d1,ipdbdq1_h_rd_adr_d1,ipdbdq1_l_rd_adr_d1; | |
97 | ||
98 | reg ipdohq0_wr_en_d1,ipdbhq0_wr_en_d1,ipdohq1_wr_en_d1,ipdbhq1_wr_en_d1; | |
99 | reg ipdohq0_rd_en_d1,ipdbhq0_rd_en_d1,ipdohq1_rd_en_d1,ipdbhq1_rd_en_d1; | |
100 | ||
101 | reg [`SII_IPD_HDR_RF_ADDRWIDTH-1:0] ipdohq0_wr_adr_d1,ipdbhq0_wr_adr_d1,ipdohq1_wr_adr_d1,ipdbhq1_wr_adr_d1; | |
102 | reg [`SII_IPD_HDR_RF_ADDRWIDTH-1:0] ipdohq0_rd_adr_d1,ipdbhq0_rd_adr_d1,ipdohq1_rd_adr_d1,ipdbhq1_rd_adr_d1; | |
103 | ||
104 | ||
105 | ||
106 | always @(posedge `TB_TOP.cpu.sii.iol2clk) begin | |
107 | ipdodq0_h_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq0_wr_en; | |
108 | ipdodq0_h_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq0_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
109 | ipdodq0_l_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq0_wr_en; | |
110 | ipdodq0_l_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq0_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
111 | ipdbdq0_h_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq0_wr_en; | |
112 | ipdbdq0_h_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq0_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
113 | ipdbdq0_l_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq0_wr_en; | |
114 | ipdbdq0_l_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq0_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
115 | ||
116 | ipdodq1_h_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq1_wr_en; | |
117 | ipdodq1_h_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq1_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
118 | ipdodq1_l_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq1_wr_en; | |
119 | ipdodq1_l_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdodq1_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
120 | ipdbdq1_h_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq1_wr_en; | |
121 | ipdbdq1_h_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq1_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
122 | ipdbdq1_l_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq1_wr_en; | |
123 | ipdbdq1_l_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbdq1_wr_addr[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
124 | ||
125 | ipdohq0_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdohq0_wr_en; | |
126 | ipdohq0_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdohq0_wr_addr[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
127 | ipdbhq0_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbhq0_wr_en; | |
128 | ipdbhq0_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbhq0_wr_addr[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
129 | ||
130 | ipdohq1_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdohq1_wr_en; | |
131 | ipdohq1_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdohq1_wr_addr[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
132 | ipdbhq1_wr_en_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbhq1_wr_en; | |
133 | ipdbhq1_wr_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcs_ipdbhq1_wr_addr[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
134 | ||
135 | end | |
136 | ||
137 | ||
138 | always @(posedge `TB_TOP.cpu.sii.l2clk) begin | |
139 | ipdodq0_h_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq0_rd_en_m; | |
140 | ipdodq0_h_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq0_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
141 | ipdodq0_l_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq0_rd_en_m; | |
142 | ipdodq0_l_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq0_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
143 | ipdbdq0_h_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq0_rd_en_m; | |
144 | ipdbdq0_h_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq0_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
145 | ipdbdq0_l_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq0_rd_en_m; | |
146 | ipdbdq0_l_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq0_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
147 | ||
148 | ipdodq1_h_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq1_rd_en_m; | |
149 | ipdodq1_h_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq1_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
150 | ipdodq1_l_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq1_rd_en_m; | |
151 | ipdodq1_l_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdodq1_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
152 | ipdbdq1_h_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq1_rd_en_m; | |
153 | ipdbdq1_h_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq1_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
154 | ipdbdq1_l_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq1_rd_en_m; | |
155 | ipdbdq1_l_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbdq1_rd_addr_m[`SII_IPD_DATA_RF_ADDRWIDTH-1:0]; | |
156 | ||
157 | ||
158 | ipdohq0_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdohq0_rd_en_m; | |
159 | ipdohq0_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdohq0_rd_addr_m[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
160 | ipdbhq0_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbhq0_rd_en_m; | |
161 | ipdbhq0_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbhq0_rd_addr_m[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
162 | ||
163 | ipdohq1_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdohq1_rd_en_m; | |
164 | ipdohq1_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdohq1_rd_addr_m[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
165 | ipdbhq1_rd_en_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbhq1_rd_en_m; | |
166 | ipdbhq1_rd_adr_d1 <= #2 `TB_TOP.cpu.sii.ipcc_ipdbhq1_rd_addr_m[`SII_IPD_HDR_RF_ADDRWIDTH-1:0]; | |
167 | end | |
168 | ||
169 | /* 0in custom | |
170 | -fire (ipdodq0_h_rd_en_d1 && ipdodq0_h_wr_en_d1 && (ipdodq0_h_rd_adr_d1 === ipdodq0_h_wr_adr_d1)) | |
171 | -message "ipdodq0_h FIFO overrun: rd and wr pointer valid on same addr" | |
172 | -clock `TB_TOP.cpu.sii.l2clk | |
173 | -name sii_ipdodq0_h_ptr_overrun | |
174 | */ | |
175 | ||
176 | ||
177 | /* 0in custom | |
178 | -fire (ipdodq0_l_rd_en_d1 && ipdodq0_l_wr_en_d1 && (ipdodq0_l_rd_adr_d1 === ipdodq0_l_wr_adr_d1)) | |
179 | -message "ipdodq0_l FIFO overrun: rd and wr pointer valid on same addr" | |
180 | -clock `TB_TOP.cpu.sii.l2clk | |
181 | -name sii_ipdodq0_l_ptr_overrun | |
182 | */ | |
183 | ||
184 | /* 0in custom | |
185 | -fire (ipdbdq0_h_rd_en_d1 && ipdbdq0_h_wr_en_d1 && (ipdbdq0_h_rd_adr_d1 === ipdbdq0_h_wr_adr_d1)) | |
186 | -message "ipdbdq0_h FIFO overrun: rd and wr pointer valid on same addr" | |
187 | -clock `TB_TOP.cpu.sii.l2clk | |
188 | -name sii_ipdbdq0_h_ptr_overrun | |
189 | */ | |
190 | ||
191 | ||
192 | /* 0in custom | |
193 | -fire (ipdbdq0_l_rd_en_d1 && ipdbdq0_l_wr_en_d1 && (ipdbdq0_l_rd_adr_d1 === ipdbdq0_l_wr_adr_d1)) | |
194 | -message "ipdbdq0_l FIFO overrun: rd and wr pointer valid on same addr" | |
195 | -clock `TB_TOP.cpu.sii.l2clk | |
196 | -name sii_ipdbdq0_l_ptr_overrun | |
197 | */ | |
198 | ||
199 | ||
200 | /* 0in custom | |
201 | -fire (ipdodq1_h_rd_en_d1 && ipdodq1_h_wr_en_d1 && (ipdodq1_h_rd_adr_d1 === ipdodq1_h_wr_adr_d1)) | |
202 | -message "ipdodq1_h FIFO overrun: rd and wr pointer valid on same addr" | |
203 | -clock `TB_TOP.cpu.sii.l2clk | |
204 | -name sii_ipdodq1_h_ptr_overrun | |
205 | */ | |
206 | ||
207 | ||
208 | /* 0in custom | |
209 | -fire (ipdodq1_l_rd_en_d1 && ipdodq1_l_wr_en_d1 && (ipdodq1_l_rd_adr_d1 === ipdodq1_l_wr_adr_d1)) | |
210 | -message "ipdodq1_l FIFO overrun: rd and wr pointer valid on same addr" | |
211 | -clock `TB_TOP.cpu.sii.l2clk | |
212 | -name sii_ipdodq1_l_ptr_overrun | |
213 | */ | |
214 | ||
215 | /* 0in custom | |
216 | -fire (ipdbdq1_h_rd_en_d1 && ipdbdq1_h_wr_en_d1 && (ipdbdq1_h_rd_adr_d1 === ipdbdq1_h_wr_adr_d1)) | |
217 | -message "ipdbdq1_h FIFO overrun: rd and wr pointer valid on same addr" | |
218 | -clock `TB_TOP.cpu.sii.l2clk | |
219 | -name sii_ipdbdq1_h_ptr_overrun | |
220 | */ | |
221 | ||
222 | ||
223 | /* 0in custom | |
224 | -fire (ipdbdq1_l_rd_en_d1 && ipdbdq1_l_wr_en_d1 && (ipdbdq1_l_rd_adr_d1 === ipdbdq1_l_wr_adr_d1)) | |
225 | -message "ipdbdq1_l FIFO overrun: rd and wr pointer valid on same addr" | |
226 | -clock `TB_TOP.cpu.sii.l2clk | |
227 | -name sii_ipdbdq1_l_ptr_overrun | |
228 | */ | |
229 | ||
230 | ||
231 | /* 0in custom | |
232 | -fire (ipdohq0_rd_en_d1 && ipdohq0_wr_en_d1 && (ipdohq0_rd_adr_d1 === ipdohq0_wr_adr_d1)) | |
233 | -message "ipdohq0 FIFO overrun: rd and wr pointer valid on same addr" | |
234 | -clock `TB_TOP.cpu.sii.l2clk | |
235 | -name sii_ipdohq0_ptr_overrun | |
236 | */ | |
237 | ||
238 | ||
239 | /* 0in custom | |
240 | -fire (ipdohq1_rd_en_d1 && ipdohq1_wr_en_d1 && (ipdohq1_rd_adr_d1 === ipdohq1_wr_adr_d1)) | |
241 | -message "ipdohq1 FIFO overrun: rd and wr pointer valid on same addr" | |
242 | -clock `TB_TOP.cpu.sii.l2clk | |
243 | -name sii_ipdohq1_ptr_overrun | |
244 | */ | |
245 | ||
246 | ||
247 | /* 0in custom | |
248 | -fire (ipdbhq0_rd_en_d1 && ipdbhq0_wr_en_d1 && (ipdbhq0_rd_adr_d1 === ipdbhq0_wr_adr_d1)) | |
249 | -message "ipdbhq0 FIFO overrun: rd and wr pointer valid on same addr" | |
250 | -clock `TB_TOP.cpu.sii.l2clk | |
251 | -name sii_ipdbhq0_ptr_overrun | |
252 | */ | |
253 | ||
254 | ||
255 | /* 0in custom | |
256 | -fire (ipdbhq1_rd_en_d1 && ipdbhq1_wr_en_d1 && (ipdbhq1_rd_adr_d1 === ipdbhq1_wr_adr_d1)) | |
257 | -message "ipdbhq1 FIFO overrun: rd and wr pointer valid on same addr" | |
258 | -clock `TB_TOP.cpu.sii.l2clk | |
259 | -name sii_ipdbhq1_ptr_overrun | |
260 | */ | |
261 | ||
262 | ||
263 | ||
264 | ||
265 | ||
266 | wire dmu_req; | |
267 | assign dmu_req = `TB_TOP.cpu.dmu_sii_hdr_vld; | |
268 | ||
269 | /* x0in | |
270 | sequence -var cstate[6:0] -val 7'b0000100 7'b0001000 7'b0010000 7'b0100000 7'b1000000 | |
271 | -start ~ext_sii_datareq16_r | |
272 | -match_by_cycle | |
273 | -module sii_ipcs_ctl -name sii_niu_ipcs_fsm_wri | |
274 | */ | |
275 | ||
276 | /* x0in | |
277 | sequence -var cstate[6:0] -val 7'b0010000 7'b0100000 7'b1000000 | |
278 | -match_by_cycle | |
279 | -module sii_ipcs_ctl -name sii_ipcs_fsm_wri | |
280 | */ | |
281 | ||
282 | ||
283 | ||
284 | /* x0in | |
285 | state -var cstate[6:0] -val 7'b0000001 -next 7'b0000001 7'b0000010 7'b0000100 | |
286 | -match_by_cycle | |
287 | -module sii_ipcs_ctl | |
288 | -name sii_ipcs_fsm_start | |
289 | */ | |
290 | ||
291 | /* x0in | |
292 | state -var cstate[6:0] -val 7'b0000001 -next 7'b0000100 | |
293 | -match_by_cycle | |
294 | -cond (ext_sii_hdr_vld & ext_sii_datareq) | |
295 | -module sii_ipcs_ctl | |
296 | -name sii_ipcs_fsm_start_hdr_payld | |
297 | */ | |
298 | ||
299 | /* x0in | |
300 | state -var cstate[6:0] | |
301 | -val 7'b0000010 | |
302 | -next 7'b0000001 7'b0000010 7'b0000100 | |
303 | -match_by_cycle | |
304 | -module sii_ipcs_ctl | |
305 | -name sii_ipcs_fsm_hdr | |
306 | */ | |
307 | ||
308 | /* x0in | |
309 | state -var cstate[6:0] | |
310 | -val 7'b0000100 | |
311 | -next 7'b0000001 7'b0001000 | |
312 | -match_by_cycle | |
313 | -module sii_ipcs_ctl | |
314 | -name sii_ipcs_fsm_hdrpld | |
315 | */ | |
316 | ||
317 | /* x0in | |
318 | state -var cstate[6:0] | |
319 | -val 7'b0001000 | |
320 | -next 7'b0000001 7'b0000010 7'b0000100 7'b0010000 | |
321 | -match_by_cycle | |
322 | -module sii_ipcs_ctl | |
323 | -name sii_ipcs_fsm_data1 | |
324 | */ | |
325 | ||
326 | ||
327 | /* x0in | |
328 | state -var cstate[6:0] | |
329 | -val 7'b0010000 | |
330 | -next 7'b0000001 7'b0100000 | |
331 | -match_by_cycle | |
332 | -module sii_ipcs_ctl | |
333 | -name sii_ipcs_fsm_data2 | |
334 | */ | |
335 | ||
336 | /* x0in | |
337 | state -var cstate[6:0] | |
338 | -val 7'b0100000 | |
339 | -next 7'b0000001 7'b1000000 | |
340 | -match_by_cycle | |
341 | -module sii_ipcs_ctl | |
342 | -name sii_ipcs_fsm_data3 | |
343 | */ | |
344 | ||
345 | /* x0in | |
346 | state -var cstate[6:0] | |
347 | -val 7'b1000000 | |
348 | -next 7'b0000001 7'b0000010 7'b0000100 | |
349 | -match_by_cycle | |
350 | -module sii_ipcs_ctl | |
351 | -name sii_ipcs_fsm_data4 | |
352 | */ | |
353 | ||
354 | ||
355 | ||
356 | /* x0in | |
357 | state -var cstate[6:0] -is_not -val 7'b0000001 -next 7'b0000100 | |
358 | -cond (ext_sii_hdr_vld & ~ext_sii_datareq) | |
359 | -module sii_ipcs_ctl | |
360 | -name sii_ipcs_fsm_read_not_start_hdrpld | |
361 | */ | |
362 | ||
363 | ||
364 | /* x0in | |
365 | state -var cstate[6:0] -is_not -val 7'b0000001 -next 7'b0000010 | |
366 | -cond (ext_sii_hdr_vld & ext_sii_datareq) | |
367 | -module sii_ipcs_ctl | |
368 | -name sii_ipcs_fsm_write_not_start_hdr | |
369 | */ | |
370 | ||
371 | ||
372 | /* x0in | |
373 | one_hot -var cstate | |
374 | -module sii_ipcs_ctl | |
375 | -name sii_ipcs_fsm_one_hot | |
376 | */ | |
377 | ||
378 | ||
379 | /* 0in | |
380 | bits_on -var nstate -max 2 | |
381 | -module sii_ipcs_ctl | |
382 | -reset `TB_RST | |
383 | -name sii_ipcs_nstate | |
384 | */ | |
385 | ||
386 | /* 0in | |
387 | bits_on -var {arc_start_hdr, arc_start_hdrpayld, arc_hdr_hdrpayld, arc_hdr_hdr, arc_hdrpayld_data1, arc_data1_hdrpayld, arc_data1_hdr, arc_data1_data2, arc_data2_data3, arc_data3_data4, arc_data4_hdr, arc_data4_hdrpayld} | |
388 | -max 1 | |
389 | -module sii_ipcs_ctl | |
390 | -reset `TB_RST | |
391 | -name sii_ipcs_arcs | |
392 | */ | |
393 | ||
394 | /* 0in decoder | |
395 | -in ipcc_ipcs_or_raddr | |
396 | -out {or_clr_v15, or_clr_v14, or_clr_v13, or_clr_v12, | |
397 | or_clr_v11, or_clr_v10, or_clr_v9, or_clr_v8, | |
398 | or_clr_v7, or_clr_v6, or_clr_v5, or_clr_v4, | |
399 | or_clr_v3, or_clr_v2, or_clr_v1, or_clr_v0} | |
400 | -active ipcc_ipcs_or_go | |
401 | -module sii_ipcs_ctl | |
402 | -reset `TB_RST | |
403 | -name sii_ipcs_ctl_decoder_ord | |
404 | */ | |
405 | ||
406 | /* 0in decoder | |
407 | -in ipcc_ipcs_by_raddr | |
408 | -out {by_clr_v15, by_clr_v14, by_clr_v13, by_clr_v12, | |
409 | by_clr_v11, by_clr_v10, by_clr_v9, by_clr_v8, | |
410 | by_clr_v7, by_clr_v6, by_clr_v5, by_clr_v4, | |
411 | by_clr_v3, by_clr_v2, by_clr_v1, by_clr_v0} | |
412 | -active ipcc_ipcs_by_go | |
413 | -module sii_ipcs_ctl | |
414 | -reset `TB_RST | |
415 | -name sii_ipcs_ctl_decoder_byp | |
416 | */ | |
417 | ||
418 | /* 0in timeout | |
419 | -var cstate[6:0] | |
420 | -val 50 | |
421 | -active ((cstate !== 7'b0000001) && (cstate !== 7'b0000010)) | |
422 | -module sii_ipcs_ctl | |
423 | -clock iol2clk | |
424 | -reset `TB_RST | |
425 | -name sii_ipcs_ctl_fsm_to | |
426 | */ | |
427 | ||
428 | /* x0in mux | |
429 | -in ipcs_ipdohq_wr_addr last_or_wr_r | |
430 | -out last_or_wr_l[3:0] | |
431 | -select (ipcs_ipdohq_wr_en && w_r) | |
432 | -binary | |
433 | -module sii_ipcs_ctl | |
434 | -name sii_ipcs_ctl_mux1 | |
435 | */ | |
436 | ||
437 | /* x0in mux | |
438 | -in gt_wrptr[3:0] lt_wrptr[3:0] | |
439 | -out youngest_match[3:0] | |
440 | -select lt_wrptr[4] | |
441 | -binary | |
442 | -module sii_ipcs_ctl | |
443 | -name sii_ipcs_ctl_mux2 | |
444 | */ | |
445 | ||
446 | /************************************************************************* | |
447 | * | |
448 | * sii_ild_dp.sv | |
449 | * | |
450 | **************************************************************************/ | |
451 | ||
452 | /* 0in increment | |
453 | -var ipcc_ipdohq1_rd_addr | |
454 | -module sii_ipcc_ctl | |
455 | -reset `TB_RST | |
456 | -name sii_ipcc_inc | |
457 | */ | |
458 | ||
459 | ||
460 | /* 0in arbiter | |
461 | -req niu_or_go niu_by_go | |
462 | -gnt gnt_r[1] gnt_r[0] | |
463 | -round_robin | |
464 | -no_simultaneous_req_gnt | |
465 | -clock l2clk | |
466 | -reset `TB_RST | |
467 | -module sii_ipcc_ctl | |
468 | -name sii_ipcc_arb1 | |
469 | */ | |
470 | ||
471 | /* 0in arbiter | |
472 | -req dmu_or_go dmu_by_go | |
473 | -gnt gnt_r[3] gnt_r[2] | |
474 | -round_robin | |
475 | -clock l2clk | |
476 | -reset `TB_RST | |
477 | -module sii_ipcc_ctl | |
478 | -name sii_ipcc_arb2 | |
479 | */ | |
480 | ||
481 | /* 0in arbiter | |
482 | -req (dmu_or_go | dmu_by_go) (niu_or_go | niu_by_go) | |
483 | -gnt ((gnt_r[3]== 1'b1) | (gnt_r[2]== 1'b1)) ((gnt_r[1]== 1'b1) | (gnt_r[0]== 1'b1)) | |
484 | -no_simultaneous_req_gnt | |
485 | -clock l2clk | |
486 | -reset `TB_RST | |
487 | -round_robin | |
488 | -module sii_ipcc_ctl | |
489 | -name sii_ipcc_arb3 | |
490 | */ | |
491 | ||
492 | ||
493 | /************************************************************************* | |
494 | * | |
495 | * sii_ipcc - STATE_TRANSITION | |
496 | * | |
497 | **************************************************************************/ | |
498 | ||
499 | `define START_ST 14'b00000000000001 | |
500 | `define DEC_ST 14'b00000000000010 | |
501 | `define ARB_ST 14'b00000000000100 | |
502 | `define HDR_ST 14'b00000000001000 | |
503 | `define HDRDLY_ST 14'b00000000010000 | |
504 | `define DATA1_ST 14'b00000000100000 | |
505 | `define DATA2_ST 14'b00000001000000 | |
506 | `define DATA3_ST 14'b00000010000000 | |
507 | `define DATA4_ST 14'b00000100000000 | |
508 | `define DATA5_ST 14'b00001000000000 | |
509 | `define DATA6_ST 14'b00010000000000 | |
510 | `define DATA7_ST 14'b00100000000000 | |
511 | `define DATA8_ST 14'b01000000000000 | |
512 | `define RDDW_ST 14'b10000000000000 | |
513 | ||
514 | `define START 0 | |
515 | `define DEC 1 | |
516 | `define ARB 2 | |
517 | `define HDR 3 | |
518 | `define HDRDLY 4 | |
519 | `define DATA1 5 | |
520 | `define DATA2 6 | |
521 | `define DATA3 7 | |
522 | `define DATA4 8 | |
523 | `define DATA5 9 | |
524 | `define DATA6 10 | |
525 | `define DATA7 11 | |
526 | `define DATA8 12 | |
527 | `define RDDW 13 | |
528 | ||
529 | ||
530 | /* 0in state_transition -var cstate -val `START_ST -next `DEC_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_start */ | |
531 | ||
532 | /* 0in state_transition -var cstate -val `DEC_ST -next `ARB_ST `START_ST -clock l2clk -reset `TB_RST -match_by_cycle -module sii_ipcc_ctl -name sii_dec */ | |
533 | ||
534 | /* 0in state_transition -var cstate -val `ARB_ST -next `HDR_ST `START_ST `ARB_ST -clock l2clk -reset `TB_RST -match_by_cycle -module sii_ipcc_ctl -name sii_arb */ | |
535 | ||
536 | /* 0in state_transition -var cstate -val `HDR_ST -next `HDRDLY_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_hdr */ | |
537 | ||
538 | /* 0in state_transition -var cstate -val `HDRDLY_ST -next `DATA1_ST `RDDW_ST `START_ST -clock l2clk -reset `TB_RST -match_by_cycle -module sii_ipcc_ctl -name sii_hdrdly */ | |
539 | ||
540 | /* 0in state_transition -var cstate -val `RDDW_ST -next `START_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_rddw */ | |
541 | ||
542 | /* 0in state_transition -var cstate -val `DATA1_ST -next `DATA2_ST `START_ST -clock l2clk -reset `TB_RST -match_by_cycle -module sii_ipcc_ctl -name sii_data1 */ | |
543 | ||
544 | /* 0in state_transition -var cstate -val `DATA2_ST -next `DATA3_ST `START_ST -clock l2clk -reset `TB_RST -match_by_cycle -module sii_ipcc_ctl -name sii_data2 */ | |
545 | ||
546 | /* 0in state_transition -var cstate -val `DATA3_ST -next `DATA4_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data3 */ | |
547 | ||
548 | /* 0in state_transition -var cstate -val `DATA4_ST -next `DATA5_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data4 */ | |
549 | ||
550 | /* 0in state_transition -var cstate -val `DATA5_ST -next `DATA6_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data5 */ | |
551 | ||
552 | /* 0in state_transition -var cstate -val `DATA6_ST -next `DATA7_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data6 */ | |
553 | ||
554 | /* 0in state_transition -var cstate -val `DATA7_ST -next `DATA8_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data7 */ | |
555 | ||
556 | /* 0in state_transition -var cstate -val `DATA8_ST -next `START_ST -clock l2clk -reset `TB_RST -module sii_ipcc_ctl -name sii_data8 */ | |
557 | ||
558 | ||
559 | /************************************************************************* | |
560 | * | |
561 | * sii_ipcc - ipcc to ipcs pointers | |
562 | * | |
563 | **************************************************************************/ | |
564 | ||
565 | ||
566 | /* 0in custom | |
567 | -fire (($0in_rising_edge(ipcc_ipcs_dmu_or_ptr[0])) && ($0in_rising_edge(ipcc_ipcs_dmu_by_ptr[0]))) | |
568 | -clock l2clk | |
569 | -reset `TB_RST | |
570 | -message "ipcc to ipcs pointers: dmu_or[0] and dmu_by[0] pointer asserted at same time" | |
571 | -module sii_ipcc_ctl | |
572 | -name sii_update_dmu0 | |
573 | */ | |
574 | ||
575 | /* 0in custom | |
576 | -fire (($0in_rising_edge(ipcc_ipcs_dmu_or_ptr[1])) && ($0in_rising_edge(ipcc_ipcs_dmu_by_ptr[1]))) | |
577 | -clock l2clk | |
578 | -reset `TB_RST | |
579 | -message "ipcc to ipcs pointers: dmu_or[1] and dmu_by[1] pointer asserted at same time" | |
580 | -module sii_ipcc_ctl | |
581 | -name sii_update_dmu1 | |
582 | */ | |
583 | ||
584 | /* 0in custom | |
585 | -fire (($0in_rising_edge(ipcc_ipcs_dmu_or_ptr[2])) && ($0in_rising_edge(ipcc_ipcs_dmu_by_ptr[2]))) | |
586 | -clock l2clk | |
587 | -reset `TB_RST | |
588 | -message "ipcc to ipcs pointers: dmu_or[2] and dmu_by[2] pointer asserted at same time" | |
589 | -module sii_ipcc_ctl | |
590 | -name sii_update_dmu2 | |
591 | */ | |
592 | ||
593 | /* 0in custom | |
594 | -fire (($0in_rising_edge(ipcc_ipcs_dmu_or_ptr[3])) && ($0in_rising_edge(ipcc_ipcs_dmu_by_ptr[3]))) | |
595 | -clock l2clk | |
596 | -reset `TB_RST | |
597 | -message "ipcc to ipcs pointers: dmu_or[3] and dmu_by[3] pointer asserted at same time" | |
598 | -module sii_ipcc_ctl | |
599 | -name sii_update_dmu3 | |
600 | */ | |
601 | ||
602 | /* 0in custom | |
603 | -fire (($0in_rising_edge(ipcc_ipcs_niu_or_ptr[0])) && ($0in_rising_edge(ipcc_ipcs_niu_by_ptr[0]))) | |
604 | -clock l2clk | |
605 | -reset `TB_RST | |
606 | -message "ipcc to ipcs pointers: niu_or[0] and niu_by[0] pointer asserted at same time" | |
607 | -module sii_ipcc_ctl | |
608 | -name sii_update_niu0 | |
609 | */ | |
610 | ||
611 | /* 0in custom | |
612 | -fire (($0in_rising_edge(ipcc_ipcs_niu_or_ptr[1])) && ($0in_rising_edge(ipcc_ipcs_niu_by_ptr[1]))) | |
613 | -clock l2clk | |
614 | -reset `TB_RST | |
615 | -message "ipcc to ipcs pointers: niu_or[1] and niu_by[1] pointer asserted at same time" | |
616 | -module sii_ipcc_ctl | |
617 | -name sii_update_niu1 | |
618 | */ | |
619 | ||
620 | /* 0in custom | |
621 | -fire (($0in_rising_edge(ipcc_ipcs_niu_or_ptr[2])) && ($0in_rising_edge(ipcc_ipcs_niu_by_ptr[2]))) | |
622 | -clock l2clk | |
623 | -reset `TB_RST | |
624 | -message "ipcc to ipcs pointers: niu_or[2] and niu_by[2] pointer asserted at same time" | |
625 | -module sii_ipcc_ctl | |
626 | -name sii_update_niu2 | |
627 | */ | |
628 | ||
629 | /* 0in custom | |
630 | -fire (($0in_rising_edge(ipcc_ipcs_niu_or_ptr[3])) && ($0in_rising_edge(ipcc_ipcs_niu_by_ptr[3]))) | |
631 | -clock l2clk | |
632 | -reset `TB_RST | |
633 | -message "ipcc to ipcs pointers: niu_or[3] and niu_by[3] pointer asserted at same time" | |
634 | -module sii_ipcc_ctl | |
635 | -name sii_update_niu3 | |
636 | */ | |
637 | ||
638 | ||
639 | /************************************************************************* | |
640 | * | |
641 | * sii_ipcc - WRM counter | |
642 | * | |
643 | **************************************************************************/ | |
644 | ||
645 | /* 0in overflow | |
646 | -var dmu_wrm_cnt_r[3:0] | |
647 | -max 8 | |
648 | -clock l2clk | |
649 | -reset `TB_RST | |
650 | -module sii_ipcc_ctl | |
651 | -name sii_ipcc_dmu_wrm_counter | |
652 | */ | |
653 | ||
654 | ||
655 | /* 0in overflow | |
656 | -var dmu_or_cnt_r[4:0] | |
657 | -min 0 | |
658 | -max 16 | |
659 | -clock l2clk | |
660 | -reset `TB_RST | |
661 | -module sii_ipcc_ctl | |
662 | -name sii_ipcc_dmu_or_counter | |
663 | */ | |
664 | ||
665 | /* 0in overflow | |
666 | -var dmu_by_cnt_r[4:0] | |
667 | -min 0 | |
668 | -max 16 | |
669 | -clock l2clk | |
670 | -reset `TB_RST | |
671 | -module sii_ipcc_ctl | |
672 | -name sii_ipcc_dmu_by_counter | |
673 | */ | |
674 | ||
675 | /* 0in overflow | |
676 | -var niu_or_cnt_r[4:0] | |
677 | -min 0 | |
678 | -max 16 | |
679 | -clock l2clk | |
680 | -reset `TB_RST | |
681 | -module sii_ipcc_ctl | |
682 | -name sii_ipcc_niu_or_counter | |
683 | */ | |
684 | ||
685 | /* 0in overflow | |
686 | -var niu_by_cnt_r[4:0] | |
687 | -min 0 | |
688 | -max 16 | |
689 | -clock l2clk | |
690 | -reset `TB_RST | |
691 | -module sii_ipcc_ctl | |
692 | -name sii_ipcc_niu_by_counter | |
693 | */ | |
694 | ||
695 | ||
696 | /************************************************************************* | |
697 | * | |
698 | * sii_ild_dp.sv | |
699 | * | |
700 | **************************************************************************/ | |
701 | // these should be checked in ilc module | |
702 | /* 0in one_hot | |
703 | -var ilc_ild_de_sel | |
704 | -module sii_ild_dp | |
705 | -clock l2clk | |
706 | -reset `TB_RST | |
707 | -name sii_ild_dp_onehot1 | |
708 | */ | |
709 | ||
710 | /************************************************************************* | |
711 | * | |
712 | * sii_ilc_ctl.sv | |
713 | * | |
714 | **************************************************************************/ | |
715 | /* 0in mux | |
716 | -in full_be0 full_be1 full_be2 full_be3 | |
717 | -out cur_be | |
718 | -select hdr_rd_ptr_l | |
719 | -binary | |
720 | -module sii_ilc_ctl | |
721 | -reset `TB_RST | |
722 | -name sii_ilc_ctl_mux1 | |
723 | */ | |
724 | ||
725 | /* 0in underflow | |
726 | -var wrm_cnt_r[2:0] | |
727 | -min 0 | |
728 | -clock l2clk | |
729 | -module sii_ilc_ctl | |
730 | -reset `TB_RST | |
731 | -name sii_ilc_wrm_under_counter | |
732 | */ | |
733 | ||
734 | /* 0in arithmetic_overflow | |
735 | -var wrm_cnt_l[2:0] | |
736 | -val ((& wrm_cnt_r[2:0] && arc_data2_start ) ? 3'b000 : (wrm && cstate[`DATA2] && make_request) ? (wrm_cnt_r[2:0] + 3'b001) : wrm_cnt_r[2:0]) | |
737 | -clock l2clk | |
738 | -reset `TB_RST | |
739 | -module sii_ilc_ctl | |
740 | -name sii_ilc_wrm_over_counter | |
741 | */ | |
742 | ||
743 | ||
744 | /* 0in underflow | |
745 | -var sio_cnt_r[2:0] | |
746 | -min 0 | |
747 | -clock l2clk | |
748 | -reset `TB_RST | |
749 | -module sii_ilc_ctl | |
750 | -name sii_ilc_buffer_under_counter | |
751 | */ | |
752 | ||
753 | /* 0in arithmetic_overflow | |
754 | -var sio_cnt_l[2:0] | |
755 | -val ((sii_l2t_req_vld && ~posted && ~jtag && ~sio_sii_olc_ilc_dequeue_r )? (sio_cnt_r[2:0]+3'b001) : (sio_sii_olc_ilc_dequeue_r && ~(sii_l2t_req_vld && ~posted))? (sio_cnt_r[2:0] - 3'b001): sio_cnt_r[2:0]) | |
756 | -clock l2clk | |
757 | -reset `TB_RST | |
758 | -module sii_ilc_ctl | |
759 | -name sii_ilc_buffer_over_counter | |
760 | */ | |
761 | ||
762 | ||
763 | /************************************************************************* | |
764 | * | |
765 | * sii ipd hdr and data fifo | |
766 | * | |
767 | **************************************************************************/ | |
768 | /* NIU & DMU, bypass & order HEADER queue */ | |
769 | /* 0in multi_clock_fifo | |
770 | -enq wr_en | |
771 | -deq (rd_adr !== $0in_delay(rd_adr, 1, rdclk)) | |
772 | -depth 16 | |
773 | -enq_data din | |
774 | -deq_data dout | |
775 | -enq_clock wrclk | |
776 | -deq_clock rdclk | |
777 | -module n2_com_dp_16x72_cust | |
778 | -name sii_ipd_hdr_fifo | |
779 | */ | |
780 | ||
781 | /* x0in custom | |
782 | -fire ($0in_delay(rd_en, 1, rdclk) && wr_en_d1 && ($0in_delay(rd_adr, 1, rdclk) === wr_adr_d1)) | |
783 | -message "ipd hdr FIFO overrun: rd and wr pointer valid on same addr" | |
784 | -module n2_com_dp_16x72_cust | |
785 | -clock rdclk | |
786 | -name sii_ipd_hdr_ptr_overrun | |
787 | */ | |
788 | ||
789 | /* 0in assert_timer | |
790 | -var (wr_en && (wr_adr == $0in_delay(wr_adr, 1,wrclk))) | |
791 | -max 1 | |
792 | -clock wrclk | |
793 | -reset `TB_RST | |
794 | -module n2_com_dp_16x72_cust | |
795 | -name sii_ipd_hdr_wr_en | |
796 | */ | |
797 | ||
798 | ||
799 | /* NIU & DMU, bypass & order DATA queue */ | |
800 | /* 0in multi_clock_fifo | |
801 | -enq wr_en | |
802 | -deq (rd_adr !== $0in_delay(rd_adr, 1, rdclk)) | |
803 | -depth 64 | |
804 | -enq_data din | |
805 | -deq_data dout | |
806 | -enq_clock wrclk | |
807 | -deq_clock rdclk | |
808 | -module n2_com_dp_64x80_cust | |
809 | -name sii_ipd_data_fifo | |
810 | */ | |
811 | ||
812 | /* x0in custom | |
813 | -fire ($0in_delay(rd_en, 1, rdclk) && wr_en_d1 && (rd_adr_d1 === wr_adr_d1)) | |
814 | -message "ipd data FIFO overrun: rd and wr pointer valid on same addr" | |
815 | -clock rdclk | |
816 | -module n2_com_dp_64x80_cust | |
817 | -name sii_ipd_data_ptr_overrun | |
818 | */ | |
819 | ||
820 | /* 0in assert_timer | |
821 | -var (wr_en && (wr_adr == $0in_delay(wr_adr, 1,wrclk))) | |
822 | -max 1 | |
823 | -clock wrclk | |
824 | -reset `TB_RST | |
825 | -module n2_com_dp_64x80_cust | |
826 | -name sii_ipd_data_wr_en | |
827 | */ | |
828 | ||
829 | ||
830 | /************************************************************************* | |
831 | * | |
832 | * sio opd hdr and data fifo | |
833 | * | |
834 | **************************************************************************/ | |
835 | /* x0in multi_clock_fifo | |
836 | -enq wr_en | |
837 | -deq (rd_adr !== $0in_delay(rd_adr, 1, rdclk)) | |
838 | -depth 16 | |
839 | -enq_data din | |
840 | -deq_data dout | |
841 | -enq_clock wrclk | |
842 | -deq_clock rdclk | |
843 | -reset `TB_RST | |
844 | -module n2_com_dp_16x32s_cust | |
845 | -name sio_opd_hdr_fifo | |
846 | */ | |
847 | ||
848 | /* x0in custom | |
849 | -fire ((rd_en && (rd_adr !== $0in_delay(rd_adr, 1, rdclk))) && wr_en && (rd_adr === wr_adr)) | |
850 | -message "opd hdr FIFO overrun: rd and wr pointer valid on same addr" | |
851 | -module n2_com_dp_16x32s_cust | |
852 | -name sio_op_hdr_ptr_overrun | |
853 | */ | |
854 | ||
855 | /* 0in assert_timer | |
856 | -var (wr_en && (wr_adr == $0in_delay(wr_adr, 1,wrclk))) | |
857 | -max 1 | |
858 | -clock wrclk | |
859 | -reset `TB_RST | |
860 | -module n2_com_dp_16x32s_cust | |
861 | -name sio_op_hdr_wr_en | |
862 | */ | |
863 | ||
864 | /* 0in multi_clock_fifo | |
865 | -enq (wr_en && (wr_adr !== $0in_delay(wr_adr, 1))) | |
866 | -deq (rd_en && (rd_adr !== $0in_delay(rd_adr, 1))) | |
867 | -depth 64 | |
868 | -enq_data din | |
869 | -deq_data dout | |
870 | -enq_clock wrclk | |
871 | -deq_clock rdclk | |
872 | -module n2_com_dp_64x72s_cust | |
873 | -name sio_op_data_fifo | |
874 | */ | |
875 | ||
876 | /* 0in custom | |
877 | -fire ((rd_en && (rd_adr !== $0in_delay(rd_adr, 1, rdclk))) && wr_en && (rd_adr === wr_adr)) | |
878 | -message "opd data FIFO overrun: rd and wr pointer valid on same addr" | |
879 | -reset `TB_RST | |
880 | -module n2_com_dp_64x72s_cust | |
881 | -name sio_op_data_ptr_overrun | |
882 | */ | |
883 | ||
884 | /* 0in assert_timer | |
885 | -var wr_en | |
886 | -max 1 | |
887 | -clock wrclk | |
888 | -reset `TB_RST | |
889 | -module n2_com_dp_64x72s_cust | |
890 | -name sio_op_data_wr_en | |
891 | */ | |
892 | ||
893 | /* 0in assert_follower | |
894 | -leader opddq00.wr_en | |
895 | -follower opddq01.wr_en | |
896 | -min 1 | |
897 | -max 1 | |
898 | -clock l2clk | |
899 | -reset `TB_RST | |
900 | -module sio | |
901 | -name sio_op_data_opddq00 | |
902 | */ | |
903 | ||
904 | ||
905 | /* 0in assert_follower | |
906 | -leader opddq10.wr_en | |
907 | -follower opddq11.wr_en | |
908 | -min 1 | |
909 | -max 1 | |
910 | -clock l2clk | |
911 | -reset `TB_RST | |
912 | -module sio | |
913 | -name sio_op_data_opddq10 | |
914 | */ | |
915 | ||
916 | ||
917 | /************************************************************************* | |
918 | * | |
919 | * sio_opcc - arbitration | |
920 | * | |
921 | **************************************************************************/ | |
922 | ||
923 | /* 0in arbiter | |
924 | -req (olc0_opcc_req && (queuecredit[0] == 1)) (olc1_opcc_req && (queuecredit[1] == 1)) (olc2_opcc_req && (queuecredit[2] == 1)) (olc3_opcc_req && (queuecredit[3] == 1)) (olc4_opcc_req && (queuecredit[4] == 1)) (olc5_opcc_req && (queuecredit[5] == 1)) (olc6_opcc_req && (queuecredit[6] == 1)) (olc7_opcc_req && (queuecredit[7] == 1)) | |
925 | -gnt opcc_olc0_gnt opcc_olc1_gnt opcc_olc2_gnt opcc_olc3_gnt opcc_olc4_gnt opcc_olc5_gnt opcc_olc6_gnt opcc_olc7_gnt | |
926 | -round_robin | |
927 | -max_grant 1 | |
928 | -no_simultaneous_req_gnt | |
929 | -clock l2clk | |
930 | -reset `TB_RST | |
931 | -module sio_opcc_ctl | |
932 | -name sio_opcc_arb1 | |
933 | */ | |
934 | ||
935 | ||
936 | ||
937 | /************************************************************************* | |
938 | * | |
939 | * sii ild fifo | |
940 | * | |
941 | **************************************************************************/ | |
942 | /* SII to L2 queues */ | |
943 | /* 0in fifo | |
944 | -enq wr_en | |
945 | -deq (rd_adr !== $0in_delay(rd_adr, 1)) | |
946 | -depth 32 | |
947 | -enq_data din | |
948 | -deq_data dout | |
949 | -clock rdclk | |
950 | -reset `TB_RST | |
951 | -module n2_com_dp_32x82_cust | |
952 | -name sii_ild_fifo | |
953 | */ | |
954 | ||
955 | /* 0in custom | |
956 | -fire ((rd_en && (rd_adr !== $0in_delay(rd_adr, 1))) && wr_en && (rd_adr === wr_adr)) | |
957 | -message "ild FIFO overrun: rd and wr pointer valid on same addr" | |
958 | -module n2_com_dp_32x82_cust | |
959 | -clock rdclk | |
960 | -reset `TB_RST | |
961 | -name sii_ild_ptr_overrun | |
962 | */ | |
963 | ||
964 | /************************************************************************* | |
965 | * | |
966 | * sii ind fifo | |
967 | * | |
968 | **************************************************************************/ | |
969 | /* SII to NCU queues */ | |
970 | /* 0in fifo | |
971 | -enq indq.wr_en | |
972 | -deq (indq.rd_adr !== $0in_delay(indq.rd_adr, 1)) | |
973 | -depth 48 | |
974 | -enq_data indq.din | |
975 | -deq_data indq.dout | |
976 | -clock indq.rdclk | |
977 | -reset `TB_RST | |
978 | -module sii | |
979 | -name sii_ind_fifo | |
980 | */ | |
981 | ||
982 | /* 0in custom | |
983 | -fire ((indq.rd_en && (indq.rd_adr !== $0in_delay(indq.rd_adr, 1))) && indq.wr_en && (indq.rd_adr === indq.wr_adr)) | |
984 | -message "ind FIFO overrun: rd and wr pointer valid on same addr" | |
985 | -clock indq.rdclk | |
986 | -reset `TB_RST | |
987 | -module sii | |
988 | -name sii_ind_ptr_overrun | |
989 | */ | |
990 | ||
991 | /************************************************************************* | |
992 | * | |
993 | * sio old fifo | |
994 | * | |
995 | **************************************************************************/ | |
996 | /* L2 to SIO queues */ | |
997 | /* Fu: disabled | |
998 | * 8/4 rd_en for olddq00 is not reliable, on for multiple cycles but no address changes | |
999 | * 9/22 32x32 is using by ncu, and the usage is different, so I have to disable it | |
1000 | */ | |
1001 | /* x0in fifo | |
1002 | -enq wr_en | |
1003 | -deq (rd_adr !== $0in_delay(rd_adr, 1)) | |
1004 | -depth 32 | |
1005 | -enq_data din | |
1006 | -deq_data local_dout | |
1007 | -reset `TB_RST | |
1008 | -module n2_com_dp_32x32_cust | |
1009 | -name sio_old_fifo | |
1010 | */ | |
1011 | ||
1012 | /* 0in custom | |
1013 | -fire (olc_olddq0_rd_en && olc_olddq0_wr_en && (olc_olddq0_rd_addr === olc_olddq0_wr_addr)) | |
1014 | -message "olddq0 FIFO overrun: rd and wr pointer valid on same addr" | |
1015 | -module sio_olc_ctl | |
1016 | -clock l2clk | |
1017 | -reset `TB_RST | |
1018 | -name sio_olddq0_ptr_overrun | |
1019 | */ | |
1020 | /* 0in custom | |
1021 | -fire (olc_olddq1_rd_en && olc_olddq1_wr_en && (olc_olddq1_rd_addr === olc_olddq1_wr_addr)) | |
1022 | -message "olddq1 FIFO overrun: rd and wr pointer valid on same addr" | |
1023 | -module sio_olc_ctl | |
1024 | -clock l2clk | |
1025 | -reset `TB_RST | |
1026 | -name sio_olddq1_ptr_overrun | |
1027 | */ | |
1028 | ||
1029 | /************************************************************************* | |
1030 | * | |
1031 | * TCU -> SII interface | |
1032 | * SIO -> TCU interface | |
1033 | * | |
1034 | **************************************************************************/ | |
1035 | ||
1036 | /* Fu: 2/1/06 turn off, checkers not correct, */ | |
1037 | /* x0in assert_follower | |
1038 | -leader tcu_sii_vld | |
1039 | -follower tcu_sii_vld | |
1040 | -min 64 | |
1041 | -max 3000 | |
1042 | -clock l2clk | |
1043 | -reset `TB_RST | |
1044 | -module sii_ipcc_ctl | |
1045 | -name tcu_sii_hdr_vld | |
1046 | */ | |
1047 | ||
1048 | /* x0in assert_follower | |
1049 | -leader sio_tcu_vld | |
1050 | -follower sio_tcu_vld | |
1051 | -min 64 | |
1052 | -max 3000 | |
1053 | -clock l2clk | |
1054 | -module sio_opcc_ctl | |
1055 | -name sio_tcu_hdr_vld | |
1056 | */ | |
1057 | ||
1058 | endmodule // siu_wb_chkr |