Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / env / common / pli / cache / c / src / l2warm.h
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: l2warm.h
5* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
6* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
7*
8* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; version 2 of the License.
13*
14* This program is distributed in the hope that it will be useful,
15* but WITHOUT ANY WARRANTY; without even the implied warranty of
16* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17* GNU General Public License for more details.
18*
19* You should have received a copy of the GNU General Public License
20* along with this program; if not, write to the Free Software
21* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22*
23* For the avoidance of doubt, and except that if any non-GPL license
24* choice is available it will apply instead, Sun elects to use only
25* the General Public License version 2 (GPLv2) at this time for any
26* software where a choice of GPL license versions is made
27* available with the language indicating that GPLv2 or any later version
28* may be used, or where a choice of which version of the GPL is applied is
29* otherwise unspecified.
30*
31* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32* CA 95054 USA or visit www.sun.com if you need additional information or
33* have any questions.
34*
35*
36* ========== Copyright Header End ============================================
37*/
38#ifndef _L2WARM_H_
39#define _L2WARM_H_
40#include "global.h"
41#include "b_ary.h"
42#include "list.h"
43#include "utility.h"
44
45//macro here.
46
47
48//=========================================================================
49// N2 L2 address map
50// 8 Banks 4 Banks 2 Banks
51// Tag : 39:18 38:17 37:16
52// Set 17:9 16:8 15:7
53// Bank 8:6 7:6 6
54// DATA 5:0 5:0 5:0
55//
56//DATA SECTION
57//top_left: top_right: bot_left: bot_right:
58// way07_00:
59// set_bot :32
60// set_top :32
61// way70_01:
62// set_bot :32
63// set_top :32
64// way158_00:
65// set_bot :32
66// set_top :32
67// way158_01:
68// set_bot :32
69// set_top :32
70static struct l2warm_variables l2warm_vars;
71//vuad temporay data.
72void l2warm_set_init();
73void l2warm_slam_data(int row);
74void l2warm_parts(int row, int etc, char* unpk);
75//generate tag & data ecc.
76int l2warm_tecc(int tag);
77int l2warm_decc(int data);
78//slam tag, data, and vuad
79void l2warm_fillerOdd(char* aval, char*bval, int val, int num);
80void l2warm_fillerEven(char* aval, char*bval, int val, int add);
81void l2warm_filler13(char* aval, char*bval, int cval, int num);
82void l2warm_filler13o(char* aval, char*bval, int cval);
83void l2warm_slam_tag();
84void l2warm_slam_real_data(char* data, int subbank);
85void l2warm_slam_vuad();
86void l2warm_slam_value(int num);
87void l2warm_extract_vuad(int vuad_idx);
88void l2warm_integrate_vuad(int vuad_idx, int ecc);
89void l2warm_unpack();
90void l2warm_pack();
91void l2warm_adjust_data(int which_shift);
92void l2warm_updated_ua(int idx, int vuadarray, int vuad);
93void l2warm_updated_vd(int idx, int vuadarray, int vuad);
94void l2warm_get_Mode(KeyType* addr);
95void l2warm_setRdancy(int arg);
96
97void l2warm_replace(char* str);
98void l2warm_rmhexa(char* buf);
99 //modify vuad bits
100int l2warm_percent(int* taken, int* not_taken);
101int l2warm_used(int vuad);
102int l2warm_alloc(int vuad);
103//modify vuad bits
104int l2warm_valid(int vuad);
105int l2warm_dirty(int vuad);
106int l2warm_even_parity(int data, int num);
107void l2warm_error_enject_three(char* data, int low, int high, int parity);
108void l2warm_error_enject_two(int* data, int low, int high);
109int l2warm_error_enject_one(int);
110long long l2warm_error_enject_long(long long bits);
111int l2warm_check_parity_two(long long bits, int num);
112int l2warm_check_parity();
113int l2warm_range(int max);
114//do invalidate
115
116void l2warm_clean_reg(int loc);
117void l2warm_get_tag();
118void l2warm_get_data();
119void l2warm_gen_addr();
120void l2warm_pack_data(char*);
121void l2warm_pack_4bytes(int idx, char* unpk);
122int l2warm_copy(char* buf, char* cbuf, int idx);
123long long l2warm_getEight(char *buf);
124void l2warm_l2_tag_update(int loc);
125void l2warm_slam_tag_error();
126void l2warm_slam_data_error();
127void l2warm_l2_data_update(int wren, int loc);
128long long l2warm_get_long(int loc);
129void l2warm_set();
130//slam tag and data into memory.
131bool l2warm_slam(KeyType addr, char* data);
132void l2warm_l2_clear_vuad(int bank);
133void l2warm_warm_all_cache(b_tree_node_ptr* mem);
134//run time
135void l2warm_error_enject_void();
136void l2warm_l2_invalidate(int bank);
137void l2warm_l1_invalidate(int ivld, int dvld, int cp_loc);
138//when bypass is deasserted, slam ramdom data into dram.
139void l2warm_stale_data(int loc);
140void l2warm_debug();
141
142#endif