Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / env / common / verilog / err_random / TagArray.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: TagArray.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 ============================================
35module TagArray(L2_INT_RST);
36
37parameter PSMPL = 5;
38
39input L2_INT_RST;
40integer i, way;
41reg stuck_to0, stuck_to1, tarand_bit_flip;
42integer r,m,rand_limit_hi,rand,rand1,rand2;
43reg [23:0] inject_limit;
44reg [7:0] RunTimer;
45reg injectErr,start_injection;
46reg [39:0] address;
47reg[27:0] start_err,start_err1;
48reg[27:0] tagEntry, errTagEntry;
49reg [26:0] lkupTag;
50wire [7:0] rd_en,decdp_inst_int_or_inval_c1,inst_vld_c2_prev;
51wire [319:0] arbdp_addr_c1;
52wire [215:0] lkup_tag_d1;
53wire [223:0] tag_way0_c1,tag_way1_c1,tag_way2_c1,tag_way3_c1;
54wire [223:0]tag_way4_c1,tag_way5_c1,tag_way6_c1,tag_way7_c1;
55wire [223:0] tag_way8_c1,tag_way9_c1,tag_way10_c1,tag_way11_c1;
56wire [223:0] tag_way12_c1,tag_way13_c1,tag_way14_c1,tag_way15_c1;
57wire rd_en_0 , rd_en_1 , rd_en_2 , rd_en_3 , rd_en_4,rd_en_5 , rd_en_6 , rd_en_7;
58
59wire [39:0] arbdp_addr_c1_0 , arbdp_addr_c1_1 , arbdp_addr_c1_2 , arbdp_addr_c1_3 , arbdp_addr_c1_4 , arbdp_addr_c1_5 , arbdp_addr_c1_6 , arbdp_addr_c1_7;
60
61wire decdp_inst_int_or_inval_c1_0 ,decdp_inst_int_or_inval_c1_1 ,decdp_inst_int_or_inval_c1_2 ,decdp_inst_int_or_inval_c1_3 ,decdp_inst_int_or_inval_c1_4 ,decdp_inst_int_or_inval_c1_5 ,decdp_inst_int_or_inval_c1_6 ,decdp_inst_int_or_inval_c1_7;
62
63wire inst_vld_c2_prev_0 , inst_vld_c2_prev_1 ,inst_vld_c2_prev_2 ,inst_vld_c2_prev_3 , inst_vld_c2_prev_4 ,inst_vld_c2_prev_5 ,inst_vld_c2_prev_6 , inst_vld_c2_prev_7;
64
65wire [26:0] lkup_tag_d1_0 ,lkup_tag_d1_1 , lkup_tag_d1_2 ,lkup_tag_d1_3 ,lkup_tag_d1_4 , lkup_tag_d1_5 ,lkup_tag_d1_6 ,lkup_tag_d1_7;
66
67wire [27:0] tag_way0_c1_0 , tag_way0_c1_1 , tag_way0_c1_2 ,tag_way0_c1_3 , tag_way0_c1_4 , tag_way0_c1_5 , tag_way0_c1_6 ,tag_way0_c1_7;
68
69wire [27:0] tag_way1_c1_0 , tag_way1_c1_1 , tag_way1_c1_2 ,tag_way1_c1_3 , tag_way1_c1_4 , tag_way1_c1_5 , tag_way1_c1_6 ,tag_way1_c1_7;
70
71wire [27:0] tag_way2_c1_0 , tag_way2_c1_1 , tag_way2_c1_2 ,tag_way2_c1_3 , tag_way2_c1_4 , tag_way2_c1_5 , tag_way2_c1_6 ,tag_way2_c1_7;
72
73wire [27:0] tag_way3_c1_0 , tag_way3_c1_1 , tag_way3_c1_2 ,tag_way3_c1_3 , tag_way3_c1_4 , tag_way3_c1_5 , tag_way3_c1_6 ,tag_way3_c1_7;
74
75wire [27:0] tag_way4_c1_0 , tag_way4_c1_1 , tag_way4_c1_2 ,tag_way4_c1_3 , tag_way4_c1_4 , tag_way4_c1_5 , tag_way4_c1_6 ,tag_way4_c1_7;
76
77wire [27:0] tag_way5_c1_0 , tag_way5_c1_1 , tag_way5_c1_2 ,tag_way5_c1_3 , tag_way5_c1_4 , tag_way5_c1_5 , tag_way5_c1_6 ,tag_way5_c1_7;
78
79wire [27:0] tag_way6_c1_0 , tag_way6_c1_1 , tag_way6_c1_2 ,tag_way6_c1_3 , tag_way6_c1_4 , tag_way6_c1_5 , tag_way6_c1_6 ,tag_way6_c1_7;
80
81wire [27:0] tag_way7_c1_0 , tag_way7_c1_1 , tag_way7_c1_2 ,tag_way7_c1_3 , tag_way7_c1_4 , tag_way7_c1_5 , tag_way7_c1_6 ,tag_way7_c1_7;
82
83wire [27:0] tag_way8_c1_0 , tag_way8_c1_1 , tag_way8_c1_2 ,tag_way8_c1_3 , tag_way8_c1_4 , tag_way8_c1_5 , tag_way8_c1_6 ,tag_way8_c1_7;
84
85wire [27:0] tag_way9_c1_0 , tag_way9_c1_1 , tag_way9_c1_2 ,tag_way9_c1_3 , tag_way9_c1_4 , tag_way9_c1_5 , tag_way9_c1_6 ,tag_way9_c1_7;
86
87wire [27:0] tag_way10_c1_0 , tag_way10_c1_1 , tag_way10_c1_2 ,tag_way10_c1_3 , tag_way10_c1_4 , tag_way10_c1_5 , tag_way10_c1_6 ,tag_way10_c1_7;
88
89wire [27:0] tag_way11_c1_0 , tag_way11_c1_1 , tag_way11_c1_2 ,tag_way11_c1_3 , tag_way11_c1_4 , tag_way11_c1_5 , tag_way11_c1_6 ,tag_way11_c1_7;
90
91wire [27:0] tag_way12_c1_0 , tag_way12_c1_1 , tag_way12_c1_2 ,tag_way12_c1_3 , tag_way12_c1_4 , tag_way12_c1_5 , tag_way12_c1_6 ,tag_way12_c1_7;
92
93wire [27:0] tag_way13_c1_0 , tag_way13_c1_1 , tag_way13_c1_2 ,tag_way13_c1_3 , tag_way13_c1_4 , tag_way13_c1_5 , tag_way13_c1_6 ,tag_way13_c1_7;
94
95wire [27:0] tag_way14_c1_0 , tag_way14_c1_1 , tag_way14_c1_2 ,tag_way14_c1_3 , tag_way14_c1_4 , tag_way14_c1_5 , tag_way14_c1_6 ,tag_way14_c1_7;
96
97wire [27:0] tag_way15_c1_0 , tag_way15_c1_1 , tag_way15_c1_2 ,tag_way15_c1_3 , tag_way15_c1_4 , tag_way15_c1_5 , tag_way15_c1_6 ,tag_way15_c1_7;
98
99
100
101
102
103assign rd_en = {rd_en_7 , rd_en_6 , rd_en_5 , rd_en_4 ,rd_en_3,rd_en_2 , rd_en_1 , rd_en_0 };
104
105assign arbdp_addr_c1 = {arbdp_addr_c1_7 , arbdp_addr_c1_6 , arbdp_addr_c1_5 , arbdp_addr_c1_4 , arbdp_addr_c1_3 , arbdp_addr_c1_2 , arbdp_addr_c1_1 , arbdp_addr_c1_0};
106
107assign decdp_inst_int_or_inval_c1 = {decdp_inst_int_or_inval_c1_7 , decdp_inst_int_or_inval_c1_6 ,decdp_inst_int_or_inval_c1_5 ,decdp_inst_int_or_inval_c1_4 , decdp_inst_int_or_inval_c1_3 ,decdp_inst_int_or_inval_c1_2 , decdp_inst_int_or_inval_c1_1 ,decdp_inst_int_or_inval_c1_0 };
108
109
110assign inst_vld_c2_prev = {inst_vld_c2_prev_7 , inst_vld_c2_prev_6 ,inst_vld_c2_prev_5 , inst_vld_c2_prev_4 , inst_vld_c2_prev_3 ,inst_vld_c2_prev_2 , inst_vld_c2_prev_1 , inst_vld_c2_prev_0};
111
112assign lkup_tag_d1 = {lkup_tag_d1_7 ,lkup_tag_d1_6 , lkup_tag_d1_5 ,lkup_tag_d1_4 , lkup_tag_d1_3 , lkup_tag_d1_2 ,lkup_tag_d1_1 ,lkup_tag_d1_0};
113
114
115assign tag_way0_c1 = {tag_way0_c1_7 , tag_way0_c1_6 , tag_way0_c1_5 ,tag_way0_c1_4 , tag_way0_c1_3 , tag_way0_c1_2 , tag_way0_c1_1 ,tag_way0_c1_0 };
116
117assign tag_way1_c1 = {tag_way1_c1_7 , tag_way1_c1_6 , tag_way1_c1_5 , tag_way1_c1_4 , tag_way1_c1_3 , tag_way1_c1_2 , tag_way1_c1_1 ,tag_way1_c1_0 };
118
119assign tag_way2_c1 = {tag_way2_c1_7 , tag_way2_c1_6 , tag_way2_c1_5 , tag_way2_c1_4 , tag_way2_c1_3 , tag_way2_c1_2 , tag_way2_c1_1 ,tag_way2_c1_0 };
120
121assign tag_way3_c1 ={tag_way3_c1_7 , tag_way3_c1_6 , tag_way3_c1_5 , tag_way3_c1_4 , tag_way3_c1_3 , tag_way3_c1_2 , tag_way3_c1_1 , tag_way3_c1_0 };
122
123assign tag_way4_c1 ={tag_way4_c1_7 ,tag_way4_c1_6 ,tag_way4_c1_5 ,tag_way4_c1_4 , tag_way4_c1_3 , tag_way4_c1_2 , tag_way4_c1_1 ,tag_way4_c1_0};
124
125assign tag_way5_c1 ={tag_way5_c1_7 , tag_way5_c1_6 ,tag_way5_c1_5 , tag_way5_c1_4 , tag_way5_c1_3 , tag_way5_c1_2 , tag_way5_c1_1 ,tag_way5_c1_0};
126
127
128assign tag_way6_c1 ={tag_way6_c1_7 , tag_way6_c1_6 ,tag_way6_c1_5 ,tag_way6_c1_4 , tag_way6_c1_3 , tag_way6_c1_2 , tag_way6_c1_1 ,tag_way6_c1_0 };
129
130assign tag_way7_c1 = {tag_way7_c1_7 ,tag_way7_c1_6 ,tag_way7_c1_5 ,tag_way7_c1_4 , tag_way7_c1_3 , tag_way7_c1_2 , tag_way7_c1_1 ,tag_way7_c1_0 };
131
132assign tag_way8_c1 ={tag_way8_c1_7 , tag_way8_c1_6 ,tag_way8_c1_5 ,tag_way8_c1_4 , tag_way8_c1_3 , tag_way8_c1_2 , tag_way8_c1_1 ,tag_way8_c1_0 };
133
134assign tag_way9_c1 = {tag_way9_c1_7 , tag_way9_c1_6 ,tag_way9_c1_5 ,tag_way9_c1_4 , tag_way9_c1_3 , tag_way9_c1_2 , tag_way9_c1_1 ,tag_way9_c1_0 };
135
136assign tag_way10_c1 ={tag_way10_c1_7 , tag_way10_c1_6 ,tag_way10_c1_5 , tag_way10_c1_4 , tag_way10_c1_3 , tag_way10_c1_2 , tag_way10_c1_1 ,tag_way10_c1_0 };
137
138assign tag_way11_c1 ={tag_way11_c1_7 , tag_way11_c1_6 ,tag_way11_c1_5 , tag_way11_c1_4 , tag_way11_c1_3 , tag_way11_c1_2 , tag_way11_c1_1 ,tag_way11_c1_0 };
139
140assign tag_way12_c1 ={tag_way12_c1_7 , tag_way12_c1_6 ,tag_way12_c1_5 , tag_way12_c1_4 , tag_way12_c1_3 , tag_way12_c1_2 , tag_way12_c1_1 ,tag_way12_c1_0 };
141
142assign tag_way13_c1 ={tag_way13_c1_7 , tag_way13_c1_6 ,tag_way13_c1_5 , tag_way13_c1_4 , tag_way13_c1_3 , tag_way13_c1_2 ,tag_way13_c1_1 , tag_way13_c1_0 };
143
144assign tag_way14_c1 ={tag_way14_c1_7 , tag_way14_c1_6 ,tag_way14_c1_5 ,tag_way14_c1_4 , tag_way14_c1_3 , tag_way14_c1_2 , tag_way14_c1_1 ,tag_way14_c1_0};
145
146assign tag_way15_c1 ={tag_way15_c1_7 , tag_way15_c1_6 , tag_way15_c1_5 , tag_way15_c1_4 , tag_way15_c1_3 , tag_way15_c1_2 , tag_way15_c1_1 ,tag_way15_c1_0};
147
148
149
150
151assign rd_en_0 = tb_top.cpu.l2t0.tag.rd_en0;
152assign rd_en_1 = tb_top.cpu.l2t1.tag.rd_en0;
153assign rd_en_2 = tb_top.cpu.l2t2.tag.rd_en0;
154assign rd_en_3 = tb_top.cpu.l2t3.tag.rd_en0;
155assign rd_en_4 = tb_top.cpu.l2t4.tag.rd_en0;
156assign rd_en_5 = tb_top.cpu.l2t5.tag.rd_en0;
157assign rd_en_6 = tb_top.cpu.l2t6.tag.rd_en0;
158assign rd_en_7 = tb_top.cpu.l2t7.tag.rd_en0;
159
160assign arbdp_addr_c1_0 = tb_top.cpu.l2t0.arbadr.arbdp_addr_c1_1;
161assign arbdp_addr_c1_1 = tb_top.cpu.l2t1.arbadr.arbdp_addr_c1_1;
162assign arbdp_addr_c1_2 = tb_top.cpu.l2t2.arbadr.arbdp_addr_c1_1;
163assign arbdp_addr_c1_3 = tb_top.cpu.l2t3.arbadr.arbdp_addr_c1_1;
164assign arbdp_addr_c1_4 = tb_top.cpu.l2t4.arbadr.arbdp_addr_c1_1;
165assign arbdp_addr_c1_5 = tb_top.cpu.l2t5.arbadr.arbdp_addr_c1_1;
166assign arbdp_addr_c1_6 = tb_top.cpu.l2t6.arbadr.arbdp_addr_c1_1;
167assign arbdp_addr_c1_7 = tb_top.cpu.l2t7.arbadr.arbdp_addr_c1_1;
168
169
170assign decdp_inst_int_or_inval_c1_0 = tb_top.cpu.l2t0.arb.decdp_inst_int_or_inval_c1;
171assign decdp_inst_int_or_inval_c1_1 = tb_top.cpu.l2t1.arb.decdp_inst_int_or_inval_c1;
172assign decdp_inst_int_or_inval_c1_2 = tb_top.cpu.l2t2.arb.decdp_inst_int_or_inval_c1;
173assign decdp_inst_int_or_inval_c1_3 = tb_top.cpu.l2t3.arb.decdp_inst_int_or_inval_c1;
174assign decdp_inst_int_or_inval_c1_4 = tb_top.cpu.l2t4.arb.decdp_inst_int_or_inval_c1;
175assign decdp_inst_int_or_inval_c1_5 = tb_top.cpu.l2t5.arb.decdp_inst_int_or_inval_c1;
176assign decdp_inst_int_or_inval_c1_6 = tb_top.cpu.l2t6.arb.decdp_inst_int_or_inval_c1;
177assign decdp_inst_int_or_inval_c1_7 = tb_top.cpu.l2t7.arb.decdp_inst_int_or_inval_c1;
178
179
180assign inst_vld_c2_prev_0 = tb_top.cpu.l2t0.arb.inst_vld_c2_prev;
181assign inst_vld_c2_prev_1 = tb_top.cpu.l2t1.arb.inst_vld_c2_prev;
182assign inst_vld_c2_prev_2 = tb_top.cpu.l2t2.arb.inst_vld_c2_prev;
183assign inst_vld_c2_prev_3 = tb_top.cpu.l2t3.arb.inst_vld_c2_prev;
184assign inst_vld_c2_prev_4 = tb_top.cpu.l2t4.arb.inst_vld_c2_prev;
185assign inst_vld_c2_prev_5 = tb_top.cpu.l2t5.arb.inst_vld_c2_prev;
186assign inst_vld_c2_prev_6 = tb_top.cpu.l2t6.arb.inst_vld_c2_prev;
187assign inst_vld_c2_prev_7 = tb_top.cpu.l2t7.arb.inst_vld_c2_prev;
188
189assign lkup_tag_d1_0 = tb_top.cpu.l2t0.tag.lkup_tag0[27:1];
190assign lkup_tag_d1_1 = tb_top.cpu.l2t1.tag.lkup_tag0[27:1];
191assign lkup_tag_d1_2 = tb_top.cpu.l2t2.tag.lkup_tag0[27:1];
192assign lkup_tag_d1_3 = tb_top.cpu.l2t3.tag.lkup_tag0[27:1];
193assign lkup_tag_d1_4 = tb_top.cpu.l2t4.tag.lkup_tag0[27:1];
194assign lkup_tag_d1_5 = tb_top.cpu.l2t5.tag.lkup_tag0[27:1];
195assign lkup_tag_d1_6 = tb_top.cpu.l2t6.tag.lkup_tag0[27:1];
196assign lkup_tag_d1_7 = tb_top.cpu.l2t7.tag.lkup_tag0[27:1];
197
198/***** Changed similarly for all ways
199assign tag_way0_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank0.tag_way0;
200assign tag_way0_c1_1 = tb_top.cpu.l2t1.tag.quad0.bank0.tag_way0;
201assign tag_way0_c1_2 = tb_top.cpu.l2t2.tag.quad0.bank0.tag_way0;
202assign tag_way0_c1_3 = tb_top.cpu.l2t3.tag.quad0.bank0.tag_way0;
203assign tag_way0_c1_4 = tb_top.cpu.l2t4.tag.quad0.bank0.tag_way0;
204assign tag_way0_c1_5 = tb_top.cpu.l2t5.tag.quad0.bank0.tag_way0;
205assign tag_way0_c1_6 = tb_top.cpu.l2t6.tag.quad0.bank0.tag_way0;
206assign tag_way0_c1_7 = tb_top.cpu.l2t7.tag.quad0.bank0.tag_way0;
207****/
208
209assign tag_way0_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank0.sao_mx0;
210assign tag_way0_c1_1 = tb_top.cpu.l2t1.tag.quad0.bank0.sao_mx0;
211assign tag_way0_c1_2 = tb_top.cpu.l2t2.tag.quad0.bank0.sao_mx0;
212assign tag_way0_c1_3 = tb_top.cpu.l2t3.tag.quad0.bank0.sao_mx0;
213assign tag_way0_c1_4 = tb_top.cpu.l2t4.tag.quad0.bank0.sao_mx0;
214assign tag_way0_c1_5 = tb_top.cpu.l2t5.tag.quad0.bank0.sao_mx0;
215assign tag_way0_c1_6 = tb_top.cpu.l2t6.tag.quad0.bank0.sao_mx0;
216assign tag_way0_c1_7 = tb_top.cpu.l2t7.tag.quad0.bank0.sao_mx0;
217
218//assign tag_way1_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank0.tag_way1;
219assign tag_way1_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank1.sao_mx0;
220assign tag_way1_c1_1 = tb_top.cpu.l2t1.tag.quad0.bank1.tag_way1;
221assign tag_way1_c1_2 = tb_top.cpu.l2t2.tag.quad0.bank1.tag_way1;
222assign tag_way1_c1_3 = tb_top.cpu.l2t3.tag.quad0.bank1.tag_way1;
223assign tag_way1_c1_4 = tb_top.cpu.l2t4.tag.quad0.bank1.tag_way1;
224assign tag_way1_c1_5 = tb_top.cpu.l2t5.tag.quad0.bank1.tag_way1;
225assign tag_way1_c1_6 = tb_top.cpu.l2t6.tag.quad0.bank1.tag_way1;
226assign tag_way1_c1_7 = tb_top.cpu.l2t7.tag.quad0.bank1.tag_way1;
227
228//assign tag_way2_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank1.tag_way0;
229assign tag_way2_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank0.sao_mx0;
230assign tag_way2_c1_1 = tb_top.cpu.l2t1.tag.quad0.bank1.tag_way0;
231assign tag_way2_c1_2 = tb_top.cpu.l2t2.tag.quad0.bank1.tag_way0;
232assign tag_way2_c1_3 = tb_top.cpu.l2t3.tag.quad0.bank1.tag_way0;
233assign tag_way2_c1_4 = tb_top.cpu.l2t4.tag.quad0.bank1.tag_way0;
234assign tag_way2_c1_5 = tb_top.cpu.l2t5.tag.quad0.bank1.tag_way0;
235assign tag_way2_c1_6 = tb_top.cpu.l2t6.tag.quad0.bank1.tag_way0;
236assign tag_way2_c1_7 = tb_top.cpu.l2t7.tag.quad0.bank1.tag_way0;
237
238//assign tag_way3_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank1.tag_way1;
239assign tag_way3_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank1.sao_mx0;
240assign tag_way3_c1_1 = tb_top.cpu.l2t1.tag.quad0.bank1.tag_way1;
241assign tag_way3_c1_2 = tb_top.cpu.l2t2.tag.quad0.bank1.tag_way1;
242assign tag_way3_c1_3 = tb_top.cpu.l2t3.tag.quad0.bank1.tag_way1;
243assign tag_way3_c1_4 = tb_top.cpu.l2t4.tag.quad0.bank1.tag_way1;
244assign tag_way3_c1_5 = tb_top.cpu.l2t5.tag.quad0.bank1.tag_way1;
245assign tag_way3_c1_6 = tb_top.cpu.l2t6.tag.quad0.bank1.tag_way1;
246assign tag_way3_c1_7 = tb_top.cpu.l2t7.tag.quad0.bank1.tag_way1;
247
248//assign tag_way4_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank0.tag_way0;
249assign tag_way4_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank0.sao_mx1;
250assign tag_way4_c1_1 = tb_top.cpu.l2t1.tag.quad1.bank0.tag_way0;
251assign tag_way4_c1_2 = tb_top.cpu.l2t2.tag.quad1.bank0.tag_way0;
252assign tag_way4_c1_3 = tb_top.cpu.l2t3.tag.quad1.bank0.tag_way0;
253assign tag_way4_c1_4 = tb_top.cpu.l2t4.tag.quad1.bank0.tag_way0;
254assign tag_way4_c1_5 = tb_top.cpu.l2t5.tag.quad1.bank0.tag_way0;
255assign tag_way4_c1_6 = tb_top.cpu.l2t6.tag.quad1.bank0.tag_way0;
256assign tag_way4_c1_7 = tb_top.cpu.l2t7.tag.quad1.bank0.tag_way0;
257
258//assign tag_way5_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank0.tag_way1;
259assign tag_way5_c1_0 = tb_top.cpu.l2t0.tag.quad0.bank1.sao_mx1;
260assign tag_way5_c1_1 = tb_top.cpu.l2t1.tag.quad1.bank0.tag_way1;
261assign tag_way5_c1_2 = tb_top.cpu.l2t2.tag.quad1.bank0.tag_way1;
262assign tag_way5_c1_3 = tb_top.cpu.l2t3.tag.quad1.bank0.tag_way1;
263assign tag_way5_c1_4 = tb_top.cpu.l2t4.tag.quad1.bank0.tag_way1;
264assign tag_way5_c1_5 = tb_top.cpu.l2t5.tag.quad1.bank0.tag_way1;
265assign tag_way5_c1_6 = tb_top.cpu.l2t6.tag.quad1.bank0.tag_way1;
266assign tag_way5_c1_7 = tb_top.cpu.l2t7.tag.quad1.bank0.tag_way1;
267
268//assign tag_way6_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank1.tag_way0;
269assign tag_way6_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank0.sao_mx1;
270assign tag_way6_c1_1 = tb_top.cpu.l2t1.tag.quad1.bank1.tag_way0;
271assign tag_way6_c1_2 = tb_top.cpu.l2t2.tag.quad1.bank1.tag_way0;
272assign tag_way6_c1_3 = tb_top.cpu.l2t3.tag.quad1.bank1.tag_way0;
273assign tag_way6_c1_4 = tb_top.cpu.l2t4.tag.quad1.bank1.tag_way0;
274assign tag_way6_c1_5 = tb_top.cpu.l2t5.tag.quad1.bank1.tag_way0;
275assign tag_way6_c1_6 = tb_top.cpu.l2t6.tag.quad1.bank1.tag_way0;
276assign tag_way6_c1_7 = tb_top.cpu.l2t7.tag.quad1.bank1.tag_way0;
277
278//assign tag_way7_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank1.tag_way1;
279assign tag_way7_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank1.sao_mx1;
280assign tag_way7_c1_1 = tb_top.cpu.l2t1.tag.quad1.bank1.tag_way1;
281assign tag_way7_c1_2 = tb_top.cpu.l2t2.tag.quad1.bank1.tag_way1;
282assign tag_way7_c1_3 = tb_top.cpu.l2t3.tag.quad1.bank1.tag_way1;
283assign tag_way7_c1_4 = tb_top.cpu.l2t4.tag.quad1.bank1.tag_way1;
284assign tag_way7_c1_5 = tb_top.cpu.l2t5.tag.quad1.bank1.tag_way1;
285assign tag_way7_c1_6 = tb_top.cpu.l2t6.tag.quad1.bank1.tag_way1;
286assign tag_way7_c1_7 = tb_top.cpu.l2t7.tag.quad1.bank1.tag_way1;
287
288//assign tag_way8_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank0.tag_way0;
289assign tag_way8_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank0.sao_mx0;
290assign tag_way8_c1_1 = tb_top.cpu.l2t1.tag.quad2.bank0.tag_way0;
291assign tag_way8_c1_2 = tb_top.cpu.l2t2.tag.quad2.bank0.tag_way0;
292assign tag_way8_c1_3 = tb_top.cpu.l2t3.tag.quad2.bank0.tag_way0;
293assign tag_way8_c1_4 = tb_top.cpu.l2t4.tag.quad2.bank0.tag_way0;
294assign tag_way8_c1_5 = tb_top.cpu.l2t5.tag.quad2.bank0.tag_way0;
295assign tag_way8_c1_6 = tb_top.cpu.l2t6.tag.quad2.bank0.tag_way0;
296assign tag_way8_c1_7 = tb_top.cpu.l2t7.tag.quad2.bank0.tag_way0;
297
298//assign tag_way9_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank0.tag_way1;
299assign tag_way9_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank1.sao_mx0;
300assign tag_way9_c1_1 = tb_top.cpu.l2t1.tag.quad2.bank0.tag_way1;
301assign tag_way9_c1_2 = tb_top.cpu.l2t2.tag.quad2.bank0.tag_way1;
302assign tag_way9_c1_3 = tb_top.cpu.l2t3.tag.quad2.bank0.tag_way1;
303assign tag_way9_c1_4 = tb_top.cpu.l2t4.tag.quad2.bank0.tag_way1;
304assign tag_way9_c1_5 = tb_top.cpu.l2t5.tag.quad2.bank0.tag_way1;
305assign tag_way9_c1_6 = tb_top.cpu.l2t6.tag.quad2.bank0.tag_way1;
306assign tag_way9_c1_7 = tb_top.cpu.l2t7.tag.quad2.bank0.tag_way1;
307
308//assign tag_way10_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank1.tag_way0;
309assign tag_way10_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank0.sao_mx0;
310assign tag_way10_c1_1 = tb_top.cpu.l2t1.tag.quad2.bank1.tag_way0;
311assign tag_way10_c1_2 = tb_top.cpu.l2t2.tag.quad2.bank1.tag_way0;
312assign tag_way10_c1_3 = tb_top.cpu.l2t3.tag.quad2.bank1.tag_way0;
313assign tag_way10_c1_4 = tb_top.cpu.l2t4.tag.quad2.bank1.tag_way0;
314assign tag_way10_c1_5 = tb_top.cpu.l2t5.tag.quad2.bank1.tag_way0;
315assign tag_way10_c1_6 = tb_top.cpu.l2t6.tag.quad2.bank1.tag_way0;
316assign tag_way10_c1_7 = tb_top.cpu.l2t7.tag.quad2.bank1.tag_way0;
317
318//assign tag_way11_c1_0 = tb_top.cpu.l2t0.tag.quad2.bank1.tag_way1;
319assign tag_way11_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank1.sao_mx0;
320assign tag_way11_c1_1 = tb_top.cpu.l2t1.tag.quad2.bank1.tag_way1;
321assign tag_way11_c1_2 = tb_top.cpu.l2t2.tag.quad2.bank1.tag_way1;
322assign tag_way11_c1_3 = tb_top.cpu.l2t3.tag.quad2.bank1.tag_way1;
323assign tag_way11_c1_4 = tb_top.cpu.l2t4.tag.quad2.bank1.tag_way1;
324assign tag_way11_c1_5 = tb_top.cpu.l2t5.tag.quad2.bank1.tag_way1;
325assign tag_way11_c1_6 = tb_top.cpu.l2t6.tag.quad2.bank1.tag_way1;
326assign tag_way11_c1_7 = tb_top.cpu.l2t7.tag.quad2.bank1.tag_way1;
327
328//assign tag_way12_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank0.tag_way0;
329assign tag_way12_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank0.sao_mx1;
330assign tag_way12_c1_1 = tb_top.cpu.l2t1.tag.quad3.bank0.tag_way0;
331assign tag_way12_c1_2 = tb_top.cpu.l2t2.tag.quad3.bank0.tag_way0;
332assign tag_way12_c1_3 = tb_top.cpu.l2t3.tag.quad3.bank0.tag_way0;
333assign tag_way12_c1_4 = tb_top.cpu.l2t4.tag.quad3.bank0.tag_way0;
334assign tag_way12_c1_5 = tb_top.cpu.l2t5.tag.quad3.bank0.tag_way0;
335assign tag_way12_c1_6 = tb_top.cpu.l2t6.tag.quad3.bank0.tag_way0;
336assign tag_way12_c1_7 = tb_top.cpu.l2t7.tag.quad3.bank0.tag_way0;
337
338//assign tag_way13_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank0.tag_way1;
339assign tag_way13_c1_0 = tb_top.cpu.l2t0.tag.quad1.bank1.sao_mx1;
340assign tag_way13_c1_1 = tb_top.cpu.l2t1.tag.quad3.bank0.tag_way1;
341assign tag_way13_c1_2 = tb_top.cpu.l2t2.tag.quad3.bank0.tag_way1;
342assign tag_way13_c1_3 = tb_top.cpu.l2t3.tag.quad3.bank0.tag_way1;
343assign tag_way13_c1_4 = tb_top.cpu.l2t4.tag.quad3.bank0.tag_way1;
344assign tag_way13_c1_5 = tb_top.cpu.l2t5.tag.quad3.bank0.tag_way1;
345assign tag_way13_c1_6 = tb_top.cpu.l2t6.tag.quad3.bank0.tag_way1;
346assign tag_way13_c1_7 = tb_top.cpu.l2t7.tag.quad3.bank0.tag_way1;
347
348//assign tag_way14_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank1.tag_way0;
349assign tag_way14_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank0.sao_mx1;
350assign tag_way14_c1_1 = tb_top.cpu.l2t1.tag.quad3.bank1.tag_way0;
351assign tag_way14_c1_2 = tb_top.cpu.l2t2.tag.quad3.bank1.tag_way0;
352assign tag_way14_c1_3 = tb_top.cpu.l2t3.tag.quad3.bank1.tag_way0;
353assign tag_way14_c1_4 = tb_top.cpu.l2t4.tag.quad3.bank1.tag_way0;
354assign tag_way14_c1_5 = tb_top.cpu.l2t5.tag.quad3.bank1.tag_way0;
355assign tag_way14_c1_6 = tb_top.cpu.l2t6.tag.quad3.bank1.tag_way0;
356assign tag_way14_c1_7 = tb_top.cpu.l2t7.tag.quad3.bank1.tag_way0;
357
358//assign tag_way15_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank1.tag_way1;
359assign tag_way15_c1_0 = tb_top.cpu.l2t0.tag.quad3.bank1.sao_mx1;
360assign tag_way15_c1_1 = tb_top.cpu.l2t1.tag.quad3.bank1.tag_way1;
361assign tag_way15_c1_2 = tb_top.cpu.l2t2.tag.quad3.bank1.tag_way1;
362assign tag_way15_c1_3 = tb_top.cpu.l2t3.tag.quad3.bank1.tag_way1;
363assign tag_way15_c1_4 = tb_top.cpu.l2t4.tag.quad3.bank1.tag_way1;
364assign tag_way15_c1_5 = tb_top.cpu.l2t5.tag.quad3.bank1.tag_way1;
365assign tag_way15_c1_6 = tb_top.cpu.l2t6.tag.quad3.bank1.tag_way1;
366assign tag_way15_c1_7 = tb_top.cpu.l2t7.tag.quad3.bank1.tag_way1;
367
368
369
370initial
371begin
372
373
374//=================================
375// Initialize the forcing variables
376//=================================
377 stuck_to0 = 1'b0;
378 stuck_to1 = 1'b0;
379 tarand_bit_flip = 1'b0;
380inject_limit = 0;
381start_err=0;
382start_err1=0;
383
384 rand_limit_hi = 150;
385// rand_limit_lo = 0;
386// rand_seed = 0;
387
388//=================================
389// Initialize the variables used in here
390//=================================
391/**
392way = 0;
393address=0;
394lkupTag=0;
395tagEntry=0;
396errTagEntry=0;
397**/
398injectErr = 0;
399start_injection = 0;
400
401//=========================================
402// Check if forcing variables are changed by verargs
403//=========================================
404 if($test$plusargs("ta_bit_stuck_to0"))
405 begin
406 stuck_to0= 1;
407 stuck_to1= 0;
408 tarand_bit_flip = 0;
409 `PR_ALWAYS("l2_tagErrInjector", `ALWAYS, "L2 bit stuck to 0");
410 end
411 else if ($test$plusargs("ta_bit_stuck_to1"))
412 begin
413 stuck_to0= 0;
414 stuck_to1= 1;
415 tarand_bit_flip = 0;
416 `PR_ALWAYS("l2_tagErrInjector", `ALWAYS,"L2 bit stuck to 1");
417 end
418 else if ($test$plusargs("L2TA_RAND_ERR_ENABLE"))
419 begin
420 tarand_bit_flip = 1;
421 stuck_to0= 0;
422 stuck_to1= 0;
423 // if($value$plusargs("L2INJECT_LIMIT=%d",inject_limit))
424 // $display("L2InjectLimit is = %d",inject_limit);
425 // if (inject_limit > rand_limit_hi)
426 // $display("inject limit is %d greater than max allowable \n", inject_limit);
427 `PR_ALWAYS("l2_tagErrInjector", `ALWAYS,"L2 Tag Array Err injection Enabled");
428 end
429
430end
431
432/**
433always @(posedge tb_top.cpu.l2clk)
434begin
435 if(start_err < 15744276)
436 begin
437 start_err <= $time;
438 start_injection <= 0;
439 end
440 else
441 begin
442 start_err <= start_err1;
443 start_injection <= 1;
444 end
445end
446**/
447
448
449
450
451always @(posedge tb_top.cpu.l2clk)
452 // Tag array error injection
453begin
454if(!L2_INT_RST)
455begin
456 way <= 0;
457 address <= 0;
458 lkupTag <= 0;
459 tagEntry <= 0;
460 errTagEntry <= 0;
461 i <= 0;
462
463end
464else
465 if(`TOP.gOutOfBoot[63:0] === `TOP.verif_args.finish_mask[63:0] )
466 begin
467
468 if(tarand_bit_flip == 1)
469 begin
470 // if(rd_en && ($random%8 == 0)) begin // PX2 signal,PSAMPLE,in cycleN
471 if(rd_en_0 ) begin // PX2 signal,PSAMPLE,in cycleN
472 fork
473 begin
474 // wait till C1
475 @(posedge tb_top.cpu.l2clk);
476 #(PSMPL);
477 address <= arbdp_addr_c1_0; // C1 signal,PSAMPLE,in cycle N
478 i <= 0;
479
480 if(address[39:37] != 3'b101 && !decdp_inst_int_or_inval_c1_0 && inst_vld_c2_prev_0)
481 begin
482 #(PSMPL);
483 way <= ({$random(`PARGS.seed)} % 16); //<MOD> 12 to 16
484 lkupTag <= lkup_tag_d1_0;
485 // this message is printed in cycle N (C1)
486 `PR_ALWAYS("l2_tagErrInjector", `ALWAYS,"Tag array error injected into bank%0d, index%0d, way%0d",i, address[17:9], way);
487 // wait till negedge of C1
488 @(negedge tb_top.cpu.l2clk);
489 #(PSMPL);
490 // C1 sample, NSAMPLE, occurs in cycle N negedge
491 // C2 drive, PRZ, takes effect in cycle N+1
492 case(way)
493 0: begin
494 tagEntry <= tag_way0_c1_0;
495 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
496 SetTagWay0(i, errTagEntry); // This takes place at cycle N+1 (C2)
497 end
498 1: begin
499 tagEntry <= tag_way1_c1_0;
500 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
501 SetTagWay1(i, errTagEntry); // This takes place at cycle N+1 (C2)
502 end
503 2: begin
504 tagEntry <= tag_way2_c1_0;
505 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
506 SetTagWay2(i, errTagEntry); // This takes place at cycle N+1 (C2)
507 end
508 3: begin
509 tagEntry <= tag_way3_c1_0;
510 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
511 SetTagWay3(i, errTagEntry); // This takes place at cycle N+1 (C2)
512 end
513 4: begin
514 tagEntry <= tag_way4_c1_0;
515 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
516 SetTagWay4(i, errTagEntry); // This takes place at cycle N+1 (C2)
517 end
518 5: begin
519 tagEntry <= tag_way5_c1_0;
520 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
521 SetTagWay5(i, errTagEntry); // This takes place at cycle N+1 (C2)
522 end
523 6: begin
524 tagEntry <= tag_way6_c1_0;
525 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
526 SetTagWay6(i, errTagEntry); // This takes place at cycle N+1 (C2)
527 end
528 7: begin
529 tagEntry <= tag_way7_c1_0;
530 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
531 SetTagWay7(i, errTagEntry); // This takes place at cycle N+1 (C2)
532 end
533 8: begin
534 tagEntry <= tag_way8_c1_0;
535 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
536 SetTagWay8(i, errTagEntry); // This takes place at cycle N+1 (C2)
537 end
538 9: begin
539 tagEntry <= tag_way9_c1_0;
540 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
541 SetTagWay9(i, errTagEntry); // This takes place at cycle N+1 (C2)
542 end
543 10: begin
544 tagEntry <= tag_way10_c1_0;
545 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
546 SetTagWay10(i, errTagEntry); // This takes place at cycle N+1 (C2)
547 end
548 11: begin
549 tagEntry <= tag_way11_c1_0;
550 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
551 SetTagWay11(i, errTagEntry); // This takes place at cycle N+1 (C2)
552 end
553 12: begin
554 tagEntry <= tag_way12_c1_0;
555 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
556 SetTagWay12(i, errTagEntry); // This takes place at cycle N+1 (C2)
557 end
558 13: begin
559 tagEntry <= tag_way13_c1_0;
560 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
561 SetTagWay13(i, errTagEntry); // This takes place at cycle N+1 (C2)
562 end
563 14: begin
564 tagEntry <= tag_way14_c1_0;
565 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
566 SetTagWay14(i, errTagEntry); // This takes place at cycle N+1 (C2)
567 end
568 15: begin
569 tagEntry <= tag_way15_c1_0;
570 errTagEntry <= (tagEntry ^ (28'b1 << (({$random(`PARGS.seed)} % 27) + 1)));
571 SetTagWay15(i, errTagEntry); // This takes place at cycle N+1 (C2)
572 end
573 endcase // case(way)
574 if (lkupTag == errTagEntry[27:1])
575 SetWaySel(i, way); // This takes place at cycle N+1 (C2)
576
577 // set tag error bit for 1 cycle in C2 while erroneous value is forced on the
578 // tag array output so that InitErrorHandling() knows the tag contains an error
579 // @(negedge tb_top.cpu.l2clk);
580
581
582 @(posedge tb_top.cpu.l2clk);
583 #(PSMPL);
584 case(way)
585 0: ReleaseTagWay0(i);
586 1: ReleaseTagWay1(i);
587 2: ReleaseTagWay2(i);
588 3: ReleaseTagWay3(i);
589 4: ReleaseTagWay4(i);
590 5: ReleaseTagWay5(i);
591 6: ReleaseTagWay6(i);
592 7: ReleaseTagWay7(i);
593 8: ReleaseTagWay8(i);
594 9: ReleaseTagWay9(i);
595 10: ReleaseTagWay10(i);
596 11: ReleaseTagWay11(i);
597 12: ReleaseTagWay12(i);
598 13: ReleaseTagWay13(i);
599 14: ReleaseTagWay14(i);
600 15: ReleaseTagWay15(i);
601 endcase // case(way)
602 ReleaseWaySel(i);
603
604 // reset tag error bit after erroneous value is no longer forced
605 @(negedge tb_top.cpu.l2clk);
606 end // if(address[39:37] != 3'b101 &&!decdp_inst_int_or_inval_c1 && inst_vld_c2_prev)
607 end
608 join
609 end // if(rd_en && $random%8 == 0)
610
611 @(posedge tb_top.cpu.l2clk);
612end // if(start_injection==1)
613end // OutOfBoot
614end //always block
615
616// Tasks for forcing error
617
618task SetTagWay0;
619input bank;
620input [27:0] value;
621integer bank;
622reg [27:0] value;
623begin
624 case (bank)
625 0: force tb_top.cpu.l2t0.tag.quad0.bank0.tag_way0 = value;
626 1: force tb_top.cpu.l2t1.tag.quad0.bank0.tag_way0 = value;
627 2: force tb_top.cpu.l2t2.tag.quad0.bank0.tag_way0 = value;
628 3: force tb_top.cpu.l2t3.tag.quad0.bank0.tag_way0 = value;
629 4: force tb_top.cpu.l2t4.tag.quad0.bank0.tag_way0 = value;
630 5: force tb_top.cpu.l2t5.tag.quad0.bank0.tag_way0 = value;
631 6: force tb_top.cpu.l2t6.tag.quad0.bank0.tag_way0 = value;
632 7: force tb_top.cpu.l2t7.tag.quad0.bank0.tag_way0 = value;
633 endcase
634end
635endtask
636
637task ReleaseTagWay0;
638input bank;
639integer bank;
640begin
641 case (bank)
642 0: release tb_top.cpu.l2t0.tag.quad0.bank0.tag_way0;
643 1: release tb_top.cpu.l2t1.tag.quad0.bank0.tag_way0;
644 2: release tb_top.cpu.l2t2.tag.quad0.bank0.tag_way0;
645 3: release tb_top.cpu.l2t3.tag.quad0.bank0.tag_way0;
646 4: release tb_top.cpu.l2t4.tag.quad0.bank0.tag_way0;
647 5: release tb_top.cpu.l2t5.tag.quad0.bank0.tag_way0;
648 6: release tb_top.cpu.l2t6.tag.quad0.bank0.tag_way0;
649 7: release tb_top.cpu.l2t7.tag.quad0.bank0.tag_way0;
650 endcase
651end
652endtask
653
654
655
656task SetTagWay1;
657input bank;
658input [27:0] value;
659integer bank;
660reg [27:0] value;
661begin
662 case (bank)
663 0: force tb_top.cpu.l2t0.tag.quad0.bank0.tag_way1 = value;
664 1: force tb_top.cpu.l2t1.tag.quad0.bank0.tag_way1 = value;
665 2: force tb_top.cpu.l2t2.tag.quad0.bank0.tag_way1 = value;
666 3: force tb_top.cpu.l2t3.tag.quad0.bank0.tag_way1 = value;
667 4: force tb_top.cpu.l2t4.tag.quad0.bank0.tag_way1 = value;
668 5: force tb_top.cpu.l2t5.tag.quad0.bank0.tag_way1 = value;
669 6: force tb_top.cpu.l2t6.tag.quad0.bank0.tag_way1 = value;
670 7: force tb_top.cpu.l2t7.tag.quad0.bank0.tag_way1 = value;
671 endcase
672end
673endtask
674
675task ReleaseTagWay1;
676input bank;
677integer bank;
678begin
679 case (bank)
680 0: release tb_top.cpu.l2t0.tag.quad0.bank0.tag_way1;
681 1: release tb_top.cpu.l2t1.tag.quad0.bank0.tag_way1;
682 2: release tb_top.cpu.l2t2.tag.quad0.bank0.tag_way1;
683 3: release tb_top.cpu.l2t3.tag.quad0.bank0.tag_way1;
684 4: release tb_top.cpu.l2t4.tag.quad0.bank0.tag_way1;
685 5: release tb_top.cpu.l2t5.tag.quad0.bank0.tag_way1;
686 6: release tb_top.cpu.l2t6.tag.quad0.bank0.tag_way1;
687 7: release tb_top.cpu.l2t7.tag.quad0.bank0.tag_way1;
688 endcase
689end
690endtask
691
692
693task SetTagWay2;
694input bank;
695input [27:0] value;
696integer bank;
697reg [27:0] value;
698begin
699 case (bank)
700 0: force tb_top.cpu.l2t0.tag.quad0.bank1.tag_way0 = value;
701 1: force tb_top.cpu.l2t1.tag.quad0.bank1.tag_way0 = value;
702 2: force tb_top.cpu.l2t2.tag.quad0.bank1.tag_way0 = value;
703 3: force tb_top.cpu.l2t3.tag.quad0.bank1.tag_way0 = value;
704 4: force tb_top.cpu.l2t4.tag.quad0.bank1.tag_way0 = value;
705 5: force tb_top.cpu.l2t5.tag.quad0.bank1.tag_way0 = value;
706 6: force tb_top.cpu.l2t6.tag.quad0.bank1.tag_way0 = value;
707 7: force tb_top.cpu.l2t7.tag.quad0.bank1.tag_way0 = value;
708 endcase
709end
710endtask
711
712
713task ReleaseTagWay2;
714input bank;
715integer bank;
716begin
717 case (bank)
718 0: release tb_top.cpu.l2t0.tag.quad0.bank1.tag_way0;
719 1: release tb_top.cpu.l2t1.tag.quad0.bank1.tag_way0;
720 2: release tb_top.cpu.l2t2.tag.quad0.bank1.tag_way0;
721 3: release tb_top.cpu.l2t3.tag.quad0.bank1.tag_way0;
722 4: release tb_top.cpu.l2t4.tag.quad0.bank1.tag_way0;
723 5: release tb_top.cpu.l2t5.tag.quad0.bank1.tag_way0;
724 6: release tb_top.cpu.l2t6.tag.quad0.bank1.tag_way0;
725 7: release tb_top.cpu.l2t7.tag.quad0.bank1.tag_way0;
726 endcase
727end
728endtask
729
730task SetTagWay3;
731input bank;
732input [27:0] value;
733integer bank;
734reg [27:0] value;
735begin
736 case (bank)
737 0: force tb_top.cpu.l2t0.tag.quad0.bank1.tag_way1 = value;
738 1: force tb_top.cpu.l2t1.tag.quad0.bank1.tag_way1 = value;
739 2: force tb_top.cpu.l2t2.tag.quad0.bank1.tag_way1 = value;
740 3: force tb_top.cpu.l2t3.tag.quad0.bank1.tag_way1 = value;
741 4: force tb_top.cpu.l2t4.tag.quad0.bank1.tag_way1 = value;
742 5: force tb_top.cpu.l2t5.tag.quad0.bank1.tag_way1 = value;
743 6: force tb_top.cpu.l2t6.tag.quad0.bank1.tag_way1 = value;
744 7: force tb_top.cpu.l2t7.tag.quad0.bank1.tag_way1 = value;
745 endcase
746end
747endtask
748
749task ReleaseTagWay3;
750input bank;
751integer bank;
752begin
753 case (bank)
754 0: release tb_top.cpu.l2t0.tag.quad0.bank1.tag_way1;
755 1: release tb_top.cpu.l2t1.tag.quad0.bank1.tag_way1;
756 2: release tb_top.cpu.l2t2.tag.quad0.bank1.tag_way1;
757 3: release tb_top.cpu.l2t3.tag.quad0.bank1.tag_way1;
758 4: release tb_top.cpu.l2t4.tag.quad0.bank1.tag_way1;
759 5: release tb_top.cpu.l2t5.tag.quad0.bank1.tag_way1;
760 6: release tb_top.cpu.l2t6.tag.quad0.bank1.tag_way1;
761 7: release tb_top.cpu.l2t7.tag.quad0.bank1.tag_way1;
762 endcase
763end
764endtask
765
766
767
768task SetTagWay4;
769input bank;
770input [27:0] value;
771integer bank;
772reg [27:0] value;
773begin
774 case (bank)
775 0: force tb_top.cpu.l2t0.tag.quad1.bank0.tag_way0 = value;
776 1: force tb_top.cpu.l2t1.tag.quad1.bank0.tag_way0 = value;
777 2: force tb_top.cpu.l2t2.tag.quad1.bank0.tag_way0 = value;
778 3: force tb_top.cpu.l2t3.tag.quad1.bank0.tag_way0 = value;
779 4: force tb_top.cpu.l2t4.tag.quad1.bank0.tag_way0 = value;
780 5: force tb_top.cpu.l2t5.tag.quad1.bank0.tag_way0 = value;
781 6: force tb_top.cpu.l2t6.tag.quad1.bank0.tag_way0 = value;
782 7: force tb_top.cpu.l2t7.tag.quad1.bank0.tag_way0 = value;
783 endcase
784end
785endtask
786
787task ReleaseTagWay4;
788input bank;
789integer bank;
790begin
791 case (bank)
792 0: release tb_top.cpu.l2t0.tag.quad1.bank0.tag_way0;
793 1: release tb_top.cpu.l2t1.tag.quad1.bank0.tag_way0;
794 2: release tb_top.cpu.l2t2.tag.quad1.bank0.tag_way0;
795 3: release tb_top.cpu.l2t3.tag.quad1.bank0.tag_way0;
796 4: release tb_top.cpu.l2t4.tag.quad1.bank0.tag_way0;
797 5: release tb_top.cpu.l2t5.tag.quad1.bank0.tag_way0;
798 6: release tb_top.cpu.l2t6.tag.quad1.bank0.tag_way0;
799 7: release tb_top.cpu.l2t7.tag.quad1.bank0.tag_way0;
800 endcase
801end
802endtask
803
804task SetTagWay5;
805input bank;
806input [27:0] value;
807integer bank;
808reg [27:0] value;
809begin
810 case (bank)
811 0: force tb_top.cpu.l2t0.tag.quad1.bank0.tag_way1 = value;
812 1: force tb_top.cpu.l2t1.tag.quad1.bank0.tag_way1 = value;
813 2: force tb_top.cpu.l2t2.tag.quad1.bank0.tag_way1 = value;
814 3: force tb_top.cpu.l2t3.tag.quad1.bank0.tag_way1 = value;
815 4: force tb_top.cpu.l2t4.tag.quad1.bank0.tag_way1 = value;
816 5: force tb_top.cpu.l2t5.tag.quad1.bank0.tag_way1 = value;
817 6: force tb_top.cpu.l2t6.tag.quad1.bank0.tag_way1 = value;
818 7: force tb_top.cpu.l2t7.tag.quad1.bank0.tag_way1 = value;
819 endcase
820end
821endtask
822
823
824task ReleaseTagWay5;
825input bank;
826integer bank;
827begin
828 case (bank)
829 0: release tb_top.cpu.l2t0.tag.quad1.bank0.tag_way1;
830 1: release tb_top.cpu.l2t1.tag.quad1.bank0.tag_way1;
831 2: release tb_top.cpu.l2t2.tag.quad1.bank0.tag_way1;
832 3: release tb_top.cpu.l2t3.tag.quad1.bank0.tag_way1;
833 4: release tb_top.cpu.l2t4.tag.quad1.bank0.tag_way1;
834 5: release tb_top.cpu.l2t5.tag.quad1.bank0.tag_way1;
835 6: release tb_top.cpu.l2t6.tag.quad1.bank0.tag_way1;
836 7: release tb_top.cpu.l2t7.tag.quad1.bank0.tag_way1;
837 endcase
838end
839endtask
840
841task SetTagWay6;
842input bank;
843input [27:0] value;
844integer bank;
845reg [27:0] value;
846begin
847 case (bank)
848 0: force tb_top.cpu.l2t0.tag.quad1.bank1.tag_way0 = value;
849 1: force tb_top.cpu.l2t1.tag.quad1.bank1.tag_way0 = value;
850 2: force tb_top.cpu.l2t2.tag.quad1.bank1.tag_way0 = value;
851 3: force tb_top.cpu.l2t3.tag.quad1.bank1.tag_way0 = value;
852 4: force tb_top.cpu.l2t4.tag.quad1.bank1.tag_way0 = value;
853 5: force tb_top.cpu.l2t5.tag.quad1.bank1.tag_way0 = value;
854 6: force tb_top.cpu.l2t6.tag.quad1.bank1.tag_way0 = value;
855 7: force tb_top.cpu.l2t7.tag.quad1.bank1.tag_way0 = value;
856 endcase
857end
858endtask
859
860task ReleaseTagWay6;
861input bank;
862integer bank;
863begin
864 case (bank)
865 0: release tb_top.cpu.l2t0.tag.quad1.bank1.tag_way0;
866 1: release tb_top.cpu.l2t1.tag.quad1.bank1.tag_way0;
867 2: release tb_top.cpu.l2t2.tag.quad1.bank1.tag_way0;
868 3: release tb_top.cpu.l2t3.tag.quad1.bank1.tag_way0;
869 4: release tb_top.cpu.l2t4.tag.quad1.bank1.tag_way0;
870 5: release tb_top.cpu.l2t5.tag.quad1.bank1.tag_way0;
871 6: release tb_top.cpu.l2t6.tag.quad1.bank1.tag_way0;
872 7: release tb_top.cpu.l2t7.tag.quad1.bank1.tag_way0;
873 endcase
874end
875endtask
876
877
878
879task SetTagWay7;
880input bank;
881input [27:0] value;
882integer bank;
883reg [27:0] value;
884begin
885 case (bank)
886 0: force tb_top.cpu.l2t0.tag.quad1.bank1.tag_way1 = value;
887 1: force tb_top.cpu.l2t1.tag.quad1.bank1.tag_way1 = value;
888 2: force tb_top.cpu.l2t2.tag.quad1.bank1.tag_way1 = value;
889 3: force tb_top.cpu.l2t3.tag.quad1.bank1.tag_way1 = value;
890 4: force tb_top.cpu.l2t4.tag.quad1.bank1.tag_way1 = value;
891 5: force tb_top.cpu.l2t5.tag.quad1.bank1.tag_way1 = value;
892 6: force tb_top.cpu.l2t6.tag.quad1.bank1.tag_way1 = value;
893 7: force tb_top.cpu.l2t7.tag.quad1.bank1.tag_way1 = value;
894 endcase
895end
896endtask
897
898task ReleaseTagWay7;
899input bank;
900integer bank;
901begin
902 case (bank)
903 0: release tb_top.cpu.l2t0.tag.quad1.bank1.tag_way1;
904 1: release tb_top.cpu.l2t1.tag.quad1.bank1.tag_way1;
905 2: release tb_top.cpu.l2t2.tag.quad1.bank1.tag_way1;
906 3: release tb_top.cpu.l2t3.tag.quad1.bank1.tag_way1;
907 4: release tb_top.cpu.l2t4.tag.quad1.bank1.tag_way1;
908 5: release tb_top.cpu.l2t5.tag.quad1.bank1.tag_way1;
909 6: release tb_top.cpu.l2t6.tag.quad1.bank1.tag_way1;
910 7: release tb_top.cpu.l2t7.tag.quad1.bank1.tag_way1;
911 endcase
912end
913endtask
914
915task SetTagWay8;
916input bank;
917input [27:0] value;
918integer bank;
919reg [27:0] value;
920begin
921 case (bank)
922 0: force tb_top.cpu.l2t0.tag.quad2.bank0.tag_way0 = value;
923 1: force tb_top.cpu.l2t1.tag.quad2.bank0.tag_way0 = value;
924 2: force tb_top.cpu.l2t2.tag.quad2.bank0.tag_way0 = value;
925 3: force tb_top.cpu.l2t3.tag.quad2.bank0.tag_way0 = value;
926 4: force tb_top.cpu.l2t4.tag.quad2.bank0.tag_way0 = value;
927 5: force tb_top.cpu.l2t5.tag.quad2.bank0.tag_way0 = value;
928 6: force tb_top.cpu.l2t6.tag.quad2.bank0.tag_way0 = value;
929 7: force tb_top.cpu.l2t7.tag.quad2.bank0.tag_way0 = value;
930 endcase
931end
932endtask
933
934
935task ReleaseTagWay8;
936input bank;
937integer bank;
938begin
939 case (bank)
940 0: release tb_top.cpu.l2t0.tag.quad2.bank0.tag_way0;
941 1: release tb_top.cpu.l2t1.tag.quad2.bank0.tag_way0;
942 2: release tb_top.cpu.l2t2.tag.quad2.bank0.tag_way0;
943 3: release tb_top.cpu.l2t3.tag.quad2.bank0.tag_way0;
944 4: release tb_top.cpu.l2t4.tag.quad2.bank0.tag_way0;
945 5: release tb_top.cpu.l2t5.tag.quad2.bank0.tag_way0;
946 6: release tb_top.cpu.l2t6.tag.quad2.bank0.tag_way0;
947 7: release tb_top.cpu.l2t7.tag.quad2.bank0.tag_way0;
948 endcase
949end
950endtask
951
952task SetTagWay9;
953input bank;
954input [27:0] value;
955integer bank;
956reg [27:0] value;
957begin
958 case (bank)
959 0: force tb_top.cpu.l2t0.tag.quad2.bank0.tag_way1 = value;
960 1: force tb_top.cpu.l2t1.tag.quad2.bank0.tag_way1 = value;
961 2: force tb_top.cpu.l2t2.tag.quad2.bank0.tag_way1 = value;
962 3: force tb_top.cpu.l2t3.tag.quad2.bank0.tag_way1 = value;
963 4: force tb_top.cpu.l2t4.tag.quad2.bank0.tag_way1 = value;
964 5: force tb_top.cpu.l2t5.tag.quad2.bank0.tag_way1 = value;
965 6: force tb_top.cpu.l2t6.tag.quad2.bank0.tag_way1 = value;
966 7: force tb_top.cpu.l2t7.tag.quad2.bank0.tag_way1 = value;
967 endcase
968end
969endtask
970
971task ReleaseTagWay9;
972input bank;
973integer bank;
974begin
975 case (bank)
976 0: release tb_top.cpu.l2t0.tag.quad2.bank0.tag_way1;
977 1: release tb_top.cpu.l2t1.tag.quad2.bank0.tag_way1;
978 2: release tb_top.cpu.l2t2.tag.quad2.bank0.tag_way1;
979 3: release tb_top.cpu.l2t3.tag.quad2.bank0.tag_way1;
980 4: release tb_top.cpu.l2t4.tag.quad2.bank0.tag_way1;
981 5: release tb_top.cpu.l2t5.tag.quad2.bank0.tag_way1;
982 6: release tb_top.cpu.l2t6.tag.quad2.bank0.tag_way1;
983 7: release tb_top.cpu.l2t7.tag.quad2.bank0.tag_way1;
984 endcase
985end
986endtask
987
988
989
990task SetTagWay10;
991input bank;
992input [27:0] value;
993integer bank;
994reg [27:0] value;
995begin
996 case (bank)
997 0: force tb_top.cpu.l2t0.tag.quad2.bank1.tag_way0 = value;
998 1: force tb_top.cpu.l2t1.tag.quad2.bank1.tag_way0 = value;
999 2: force tb_top.cpu.l2t2.tag.quad2.bank1.tag_way0 = value;
1000 3: force tb_top.cpu.l2t3.tag.quad2.bank1.tag_way0 = value;
1001 4: force tb_top.cpu.l2t4.tag.quad2.bank1.tag_way0 = value;
1002 5: force tb_top.cpu.l2t5.tag.quad2.bank1.tag_way0 = value;
1003 6: force tb_top.cpu.l2t6.tag.quad2.bank1.tag_way0 = value;
1004 7: force tb_top.cpu.l2t7.tag.quad2.bank1.tag_way0 = value;
1005 endcase
1006end
1007endtask
1008
1009task ReleaseTagWay10;
1010input bank;
1011integer bank;
1012begin
1013 case (bank)
1014 0: release tb_top.cpu.l2t0.tag.quad2.bank1.tag_way0;
1015 1: release tb_top.cpu.l2t1.tag.quad2.bank1.tag_way0;
1016 2: release tb_top.cpu.l2t2.tag.quad2.bank1.tag_way0;
1017 3: release tb_top.cpu.l2t3.tag.quad2.bank1.tag_way0;
1018 4: release tb_top.cpu.l2t4.tag.quad2.bank1.tag_way0;
1019 5: release tb_top.cpu.l2t5.tag.quad2.bank1.tag_way0;
1020 6: release tb_top.cpu.l2t6.tag.quad2.bank1.tag_way0;
1021 7: release tb_top.cpu.l2t7.tag.quad2.bank1.tag_way0;
1022 endcase
1023end
1024endtask
1025
1026
1027task SetTagWay11;
1028input bank;
1029input [27:0] value;
1030integer bank;
1031reg [27:0] value;
1032begin
1033 case (bank)
1034 0: force tb_top.cpu.l2t0.tag.quad2.bank1.tag_way1 = value;
1035 1: force tb_top.cpu.l2t1.tag.quad2.bank1.tag_way1 = value;
1036 2: force tb_top.cpu.l2t2.tag.quad2.bank1.tag_way1 = value;
1037 3: force tb_top.cpu.l2t3.tag.quad2.bank1.tag_way1 = value;
1038 4: force tb_top.cpu.l2t4.tag.quad2.bank1.tag_way1 = value;
1039 5: force tb_top.cpu.l2t5.tag.quad2.bank1.tag_way1 = value;
1040 6: force tb_top.cpu.l2t6.tag.quad2.bank1.tag_way1 = value;
1041 7: force tb_top.cpu.l2t7.tag.quad2.bank1.tag_way1 = value;
1042 endcase
1043end
1044endtask
1045
1046task ReleaseTagWay11;
1047input bank;
1048integer bank;
1049begin
1050 case (bank)
1051 0: release tb_top.cpu.l2t0.tag.quad2.bank1.tag_way1;
1052 1: release tb_top.cpu.l2t1.tag.quad2.bank1.tag_way1;
1053 2: release tb_top.cpu.l2t2.tag.quad2.bank1.tag_way1;
1054 3: release tb_top.cpu.l2t3.tag.quad2.bank1.tag_way1;
1055 4: release tb_top.cpu.l2t4.tag.quad2.bank1.tag_way1;
1056 5: release tb_top.cpu.l2t5.tag.quad2.bank1.tag_way1;
1057 6: release tb_top.cpu.l2t6.tag.quad2.bank1.tag_way1;
1058 7: release tb_top.cpu.l2t7.tag.quad2.bank1.tag_way1;
1059 endcase
1060end
1061endtask
1062
1063
1064task SetTagWay12;
1065input bank;
1066input [27:0] value;
1067integer bank;
1068reg [27:0] value;
1069begin
1070 case (bank)
1071 0: force tb_top.cpu.l2t0.tag.quad3.bank0.tag_way0 = value;
1072 1: force tb_top.cpu.l2t1.tag.quad3.bank0.tag_way0 = value;
1073 2: force tb_top.cpu.l2t2.tag.quad3.bank0.tag_way0 = value;
1074 3: force tb_top.cpu.l2t3.tag.quad3.bank0.tag_way0 = value;
1075 4: force tb_top.cpu.l2t4.tag.quad3.bank0.tag_way0 = value;
1076 5: force tb_top.cpu.l2t5.tag.quad3.bank0.tag_way0 = value;
1077 6: force tb_top.cpu.l2t6.tag.quad3.bank0.tag_way0 = value;
1078 7: force tb_top.cpu.l2t7.tag.quad3.bank0.tag_way0 = value;
1079 endcase
1080end
1081endtask
1082
1083task ReleaseTagWay12;
1084input bank;
1085integer bank;
1086begin
1087 case (bank)
1088 0: release tb_top.cpu.l2t0.tag.quad3.bank0.tag_way0;
1089 1: release tb_top.cpu.l2t1.tag.quad3.bank0.tag_way0;
1090 2: release tb_top.cpu.l2t2.tag.quad3.bank0.tag_way0;
1091 3: release tb_top.cpu.l2t3.tag.quad3.bank0.tag_way0;
1092 4: release tb_top.cpu.l2t4.tag.quad3.bank0.tag_way0;
1093 5: release tb_top.cpu.l2t5.tag.quad3.bank0.tag_way0;
1094 6: release tb_top.cpu.l2t6.tag.quad3.bank0.tag_way0;
1095 7: release tb_top.cpu.l2t7.tag.quad3.bank0.tag_way0;
1096 endcase
1097end
1098endtask
1099
1100
1101task SetTagWay13;
1102input bank;
1103input [27:0] value;
1104integer bank;
1105reg [27:0] value;
1106begin
1107 case (bank)
1108 0: force tb_top.cpu.l2t0.tag.quad3.bank0.tag_way1 = value;
1109 1: force tb_top.cpu.l2t1.tag.quad3.bank0.tag_way1 = value;
1110 2: force tb_top.cpu.l2t2.tag.quad3.bank0.tag_way1 = value;
1111 3: force tb_top.cpu.l2t3.tag.quad3.bank0.tag_way1 = value;
1112 4: force tb_top.cpu.l2t4.tag.quad3.bank0.tag_way1 = value;
1113 5: force tb_top.cpu.l2t5.tag.quad3.bank0.tag_way1 = value;
1114 6: force tb_top.cpu.l2t6.tag.quad3.bank0.tag_way1 = value;
1115 7: force tb_top.cpu.l2t7.tag.quad3.bank0.tag_way1 = value;
1116 endcase
1117end
1118endtask
1119
1120task ReleaseTagWay13;
1121input bank;
1122integer bank;
1123begin
1124 case (bank)
1125 0: release tb_top.cpu.l2t0.tag.quad3.bank0.tag_way1;
1126 1: release tb_top.cpu.l2t1.tag.quad3.bank0.tag_way1;
1127 2: release tb_top.cpu.l2t2.tag.quad3.bank0.tag_way1;
1128 3: release tb_top.cpu.l2t3.tag.quad3.bank0.tag_way1;
1129 4: release tb_top.cpu.l2t4.tag.quad3.bank0.tag_way1;
1130 5: release tb_top.cpu.l2t5.tag.quad3.bank0.tag_way1;
1131 6: release tb_top.cpu.l2t6.tag.quad3.bank0.tag_way1;
1132 7: release tb_top.cpu.l2t7.tag.quad3.bank0.tag_way1;
1133 endcase
1134end
1135endtask
1136
1137
1138task SetTagWay14;
1139input bank;
1140input [27:0] value;
1141integer bank;
1142reg [27:0] value;
1143begin
1144 case (bank)
1145 0: force tb_top.cpu.l2t0.tag.quad3.bank1.tag_way0 = value;
1146 1: force tb_top.cpu.l2t1.tag.quad3.bank1.tag_way0 = value;
1147 2: force tb_top.cpu.l2t2.tag.quad3.bank1.tag_way0 = value;
1148 3: force tb_top.cpu.l2t3.tag.quad3.bank1.tag_way0 = value;
1149 4: force tb_top.cpu.l2t4.tag.quad3.bank1.tag_way0 = value;
1150 5: force tb_top.cpu.l2t5.tag.quad3.bank1.tag_way0 = value;
1151 6: force tb_top.cpu.l2t6.tag.quad3.bank1.tag_way0 = value;
1152 7: force tb_top.cpu.l2t7.tag.quad3.bank1.tag_way0 = value;
1153 endcase
1154end
1155endtask
1156
1157task ReleaseTagWay14;
1158input bank;
1159integer bank;
1160begin
1161 case (bank)
1162 0: release tb_top.cpu.l2t0.tag.quad3.bank1.tag_way0;
1163 1: release tb_top.cpu.l2t1.tag.quad3.bank1.tag_way0;
1164 2: release tb_top.cpu.l2t2.tag.quad3.bank1.tag_way0;
1165 3: release tb_top.cpu.l2t3.tag.quad3.bank1.tag_way0;
1166 4: release tb_top.cpu.l2t4.tag.quad3.bank1.tag_way0;
1167 5: release tb_top.cpu.l2t5.tag.quad3.bank1.tag_way0;
1168 6: release tb_top.cpu.l2t6.tag.quad3.bank1.tag_way0;
1169 7: release tb_top.cpu.l2t7.tag.quad3.bank1.tag_way0;
1170 endcase
1171end
1172endtask
1173
1174task SetTagWay15;
1175input bank;
1176input [27:0] value;
1177integer bank;
1178reg [27:0] value;
1179begin
1180 case (bank)
1181 0: force tb_top.cpu.l2t0.tag.quad3.bank1.tag_way1 = value;
1182 1: force tb_top.cpu.l2t1.tag.quad3.bank1.tag_way1 = value;
1183 2: force tb_top.cpu.l2t2.tag.quad3.bank1.tag_way1 = value;
1184 3: force tb_top.cpu.l2t3.tag.quad3.bank1.tag_way1 = value;
1185 4: force tb_top.cpu.l2t4.tag.quad3.bank1.tag_way1 = value;
1186 5: force tb_top.cpu.l2t5.tag.quad3.bank1.tag_way1 = value;
1187 6: force tb_top.cpu.l2t6.tag.quad3.bank1.tag_way1 = value;
1188 7: force tb_top.cpu.l2t7.tag.quad3.bank1.tag_way1 = value;
1189 endcase
1190end
1191endtask
1192
1193
1194task ReleaseTagWay15;
1195input bank;
1196integer bank;
1197begin
1198 case (bank)
1199 0: release tb_top.cpu.l2t0.tag.quad3.bank1.tag_way1;
1200 1: release tb_top.cpu.l2t1.tag.quad3.bank1.tag_way1;
1201 2: release tb_top.cpu.l2t2.tag.quad3.bank1.tag_way1;
1202 3: release tb_top.cpu.l2t3.tag.quad3.bank1.tag_way1;
1203 4: release tb_top.cpu.l2t4.tag.quad3.bank1.tag_way1;
1204 5: release tb_top.cpu.l2t5.tag.quad3.bank1.tag_way1;
1205 6: release tb_top.cpu.l2t6.tag.quad3.bank1.tag_way1;
1206 7: release tb_top.cpu.l2t7.tag.quad3.bank1.tag_way1;
1207 endcase
1208end
1209endtask
1210
1211task SetWaySel;
1212input bank;
1213input way;
1214integer bank;
1215integer way;
1216begin
1217 case (bank)
1218 0: force tb_top.cpu.l2t0.tag.way_hit = (1'b1 << way);
1219 1: force tb_top.cpu.l2t1.tag.way_hit = (1'b1 << way);
1220 2: force tb_top.cpu.l2t2.tag.way_hit = (1'b1 << way);
1221 3: force tb_top.cpu.l2t3.tag.way_hit = (1'b1 << way);
1222 4: force tb_top.cpu.l2t4.tag.way_hit = (1'b1 << way);
1223 5: force tb_top.cpu.l2t5.tag.way_hit = (1'b1 << way);
1224 6: force tb_top.cpu.l2t6.tag.way_hit = (1'b1 << way);
1225 7: force tb_top.cpu.l2t7.tag.way_hit = (1'b1 << way);
1226 endcase
1227end
1228endtask
1229
1230task ReleaseWaySel;
1231input bank;
1232integer bank;
1233begin
1234 case (bank)
1235 0: release tb_top.cpu.l2t0.tag.way_hit;
1236 1: release tb_top.cpu.l2t1.tag.way_hit;
1237 2: release tb_top.cpu.l2t2.tag.way_hit;
1238 3: release tb_top.cpu.l2t3.tag.way_hit;
1239 4: release tb_top.cpu.l2t4.tag.way_hit;
1240 5: release tb_top.cpu.l2t5.tag.way_hit;
1241 6: release tb_top.cpu.l2t6.tag.way_hit;
1242 7: release tb_top.cpu.l2t7.tag.way_hit;
1243 endcase
1244end
1245endtask
1246
1247
1248
1249endmodule