punk@1
|
1 signature Processor where {
|
punk@1
|
2 import ¶Assert®¶;
|
punk@1
|
3
|
punk@1
|
4 import ¶ConfigReg®¶;
|
punk@1
|
5
|
punk@1
|
6 import ¶Counter®¶;
|
punk@1
|
7
|
punk@1
|
8 import ¶FIFOF_®¶;
|
punk@1
|
9
|
punk@1
|
10 import ¶FIFOF®¶;
|
punk@1
|
11
|
punk@1
|
12 import ¶FIFO®¶;
|
punk@1
|
13
|
punk@1
|
14 import ¶Inout®¶;
|
punk@1
|
15
|
punk@1
|
16 import ¶List®¶;
|
punk@1
|
17
|
punk@1
|
18 import BFIFO;
|
punk@1
|
19
|
punk@1
|
20 import ¶Clocks®¶;
|
punk@1
|
21
|
punk@1
|
22 import ¶ListN®¶;
|
punk@1
|
23
|
punk@1
|
24 import ¶Monad®¶;
|
punk@1
|
25
|
punk@1
|
26 import ¶PrimArray®¶;
|
punk@1
|
27
|
punk@1
|
28 import ¶RWire®¶;
|
punk@1
|
29
|
punk@1
|
30 import ¶RegFile®¶;
|
punk@1
|
31
|
punk@1
|
32 import SFIFO;
|
punk@1
|
33
|
punk@1
|
34 import ¶Vector®¶;
|
punk@1
|
35
|
punk@1
|
36 import ¶Connectable®¶;
|
punk@1
|
37
|
punk@1
|
38 import ¶GetPut®¶;
|
punk@1
|
39
|
punk@1
|
40 import ¶ClientServer®¶;
|
punk@1
|
41
|
punk@1
|
42 import Trace;
|
punk@1
|
43
|
punk@1
|
44 import MemTypes;
|
punk@1
|
45
|
punk@1
|
46 import ProcTypes;
|
punk@1
|
47
|
punk@1
|
48 import BRegFile;
|
punk@1
|
49
|
punk@1
|
50 import BranchPred;
|
punk@1
|
51
|
punk@1
|
52 interface (Processor.ProcStats :: *) = {
|
punk@1
|
53 Processor.num_cycles :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat;
|
punk@1
|
54 Processor.num_inst :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat
|
punk@1
|
55 };
|
punk@1
|
56
|
punk@1
|
57 instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.ProcStats;
|
punk@1
|
58
|
punk@1
|
59 instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.ProcStats;
|
punk@1
|
60
|
punk@1
|
61 instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.ProcStats;
|
punk@1
|
62
|
punk@1
|
63 interface (Processor.CPUToHost :: *) = {
|
punk@1
|
64 Processor.cpuToHost :: ¶Prelude®¶.¶Int®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [req] #-}
|
punk@1
|
65 };
|
punk@1
|
66
|
punk@1
|
67 instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.CPUToHost;
|
punk@1
|
68
|
punk@1
|
69 instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.CPUToHost;
|
punk@1
|
70
|
punk@1
|
71 instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.CPUToHost;
|
punk@1
|
72
|
punk@1
|
73 interface (Processor.Proc :: *) = {
|
punk@1
|
74 Processor.dmem_client :: ¶ClientServer®¶.¶Client®¶ MemTypes.DataReq MemTypes.DataResp;
|
punk@1
|
75 Processor.imem_client :: ¶ClientServer®¶.¶Client®¶ MemTypes.InstReq MemTypes.InstResp;
|
punk@1
|
76 Processor.statsEn_get :: ¶GetPut®¶.¶Get®¶ ¶Prelude®¶.¶Bool®¶;
|
punk@1
|
77 Processor.stats :: Processor.ProcStats;
|
punk@1
|
78 Processor.tohost :: Processor.CPUToHost
|
punk@1
|
79 };
|
punk@1
|
80
|
punk@1
|
81 instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.Proc;
|
punk@1
|
82
|
punk@1
|
83 instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.Proc;
|
punk@1
|
84
|
punk@1
|
85 instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.Proc;
|
punk@1
|
86
|
punk@1
|
87 data (Processor.Stage :: *) = Processor.PCgen () | Processor.Exec () | Processor.Writeback ();
|
punk@1
|
88
|
punk@1
|
89 instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.Stage;
|
punk@1
|
90
|
punk@1
|
91 instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.Stage;
|
punk@1
|
92
|
punk@1
|
93 instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.Stage;
|
punk@1
|
94
|
punk@1
|
95 instance Processor ¶Prelude®¶.¶Eq®¶ Processor.Stage;
|
punk@1
|
96
|
punk@1
|
97 instance Processor ¶Prelude®¶.¶Bits®¶ Processor.Stage 2;
|
punk@1
|
98
|
punk@1
|
99 interface (Processor.BRFile :: *) = {
|
punk@1
|
100 Processor.wr :: ProcTypes.Rindx ->
|
punk@1
|
101 ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Action®¶ {-# arg_names = [rindx, ¡data¡] #-};
|
punk@1
|
102 Processor.rd1 :: ProcTypes.Rindx -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [rindx] #-};
|
punk@1
|
103 Processor.rd2 :: ProcTypes.Rindx -> ¶Prelude®¶.¶Bit®¶ 32 {-# arg_names = [rindx] #-}
|
punk@1
|
104 };
|
punk@1
|
105
|
punk@1
|
106 instance Processor ¶Prelude®¶.¶PrimMakeUndefined®¶ Processor.BRFile;
|
punk@1
|
107
|
punk@1
|
108 instance Processor ¶Prelude®¶.¶PrimDeepSeqCond®¶ Processor.BRFile;
|
punk@1
|
109
|
punk@1
|
110 instance Processor ¶Prelude®¶.¶PrimMakeUninitialized®¶ Processor.BRFile;
|
punk@1
|
111
|
punk@1
|
112 Processor.mkBRFile :: (¶Prelude®¶.¶IsModule®¶ _m__ _c__) => _m__ Processor.BRFile;
|
punk@1
|
113
|
punk@1
|
114 Processor.slt :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32;
|
punk@1
|
115
|
punk@1
|
116 Processor.sltu :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32;
|
punk@1
|
117
|
punk@1
|
118 Processor.rshft :: ¶Prelude®¶.¶Bit®¶ 32 -> ¶Prelude®¶.¶Bit®¶ 32;
|
punk@1
|
119
|
punk@1
|
120 Processor.findwbf :: ProcTypes.Rindx -> ProcTypes.WBResult -> ¶Prelude®¶.¶Bool®¶;
|
punk@1
|
121
|
punk@1
|
122 Processor.stall :: ProcTypes.Instr ->
|
punk@1
|
123 SFIFO.SFIFO ProcTypes.WBResult ProcTypes.Rindx -> ¶Prelude®¶.¶Bool®¶;
|
punk@1
|
124
|
punk@1
|
125 Processor.mkProc :: (¶Prelude®¶.¶IsModule®¶ _m__ _c__) => _m__ Processor.Proc
|
punk@1
|
126 }
|