-
Notifications
You must be signed in to change notification settings - Fork 0
/
KonataHelper.bsv
95 lines (81 loc) · 2.72 KB
/
KonataHelper.bsv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
typedef Bit#(48) KonataId;
typedef Bit#(8) ThreadId;
// function Action konataInit();
// action
// $display("[KONATA]Kanata\t0004");
// $display("[KONATA]C=\t1");
// endaction
// endfunction
function Action konataTic(File f);
action
$fdisplay(f, "C\t1");
endaction
endfunction
function ActionValue#(KonataId) declareKonataInst(File f, Reg#(KonataId) konataCtr,ThreadId tid);
actionvalue
konataCtr <= konataCtr + 1;
$fdisplay(f,"I\t%d\t%d\t%d",konataCtr,konataCtr,tid);
return konataCtr;
endactionvalue
endfunction
function ActionValue#(KonataId) fetch1Konata(File f, Reg#(KonataId) konataCtr,ThreadId tid);
// Include the declaration of the instr
actionvalue
konataCtr <= konataCtr + 1;
$fdisplay(f,"I\t%d\t%d\t%d",konataCtr,konataCtr,tid);
$fdisplay(f,"S\t%d\t%d\t%s",konataCtr,0,"F");
return konataCtr;
endactionvalue
endfunction
function ActionValue#(KonataId) nfetchKonata(File f, Reg#(KonataId) konataCtr,ThreadId tid, Integer k);
// Return the first id of the consecutive k id allocated
actionvalue
konataCtr <= konataCtr + fromInteger(k);
for (Integer j = 0; j < k; j = j + 1) begin
$fdisplay(f,"S\t%d\t%d\t%s",konataCtr + fromInteger(j),0,"F");
end
return konataCtr;
endactionvalue
endfunction
function Action decodeKonata(File f, KonataId konataCtr);
action
// $display("E\t%d\t%d\t%s",konataCtr,0,"F");
$fdisplay(f,"S\t%d\t%d\t%s",konataCtr,0,"D");
endaction
endfunction
function Action executeKonata(File f, KonataId konataCtr);
action
// $display("E\t%d\t%d\t%s",konataCtr,0,"D");
$fdisplay(f,"S\t%d\t%d\t%s",konataCtr,0,"E");
endaction
endfunction
function Action writebackKonata(File f, KonataId konataCtr);
action
$fdisplay(f,"S\t%d\t%d\t%s",konataCtr,0,"W");
endaction
endfunction
function Action squashKonata(File f, KonataId konataCtr);
action
// Squash have id 0
$fdisplay(f,"R\t%d\t%d\t%d", konataCtr, 0, 1);
endaction
endfunction
function Action commitKonata(File f, KonataId konataCtr, Reg#(KonataId) konataCmt);
action
konataCmt <= konataCmt + 1;
// $display("[KONATA]E\t%d\t%d\t%s",konataCtr,0,"W");
$fdisplay(f,"R\t%d\t%d\t%d", konataCtr, konataCmt,0);
endaction
endfunction
function Action labelKonataLeft(File f, KonataId konataCtr, Fmt s);
action
// Squash have id 0
$fdisplay(f, "L\t%d\t%d\t", konataCtr, 0, s);
endaction
endfunction
function Action labelKonataMouse(File f, KonataId konataCtr, Fmt s);
action
// Squash have id 0
$fdisplay(f, "L\t%d\t%d\t", konataCtr, 1, s);
endaction
endfunction