3 based on Anton Blanchard microwatt common.vhdl
6 from nmutil
.iocontrol
import RecordObject
7 from nmigen
import Signal
10 class DCacheToLoadStore1Type(RecordObject
):
11 def __init__(self
, name
=None):
12 super().__init
__(name
=name
)
14 self
.data
= Signal(64)
15 self
.store_done
= Signal()
17 self
.cache_paradox
= Signal()
20 class DCacheToMMUType(RecordObject
):
21 def __init__(self
, name
=None):
22 super().__init
__(name
=name
)
26 self
.data
= Signal(64)
29 class Fetch1ToICacheType(RecordObject
):
30 def __init__(self
, name
=None):
31 super().__init
__(name
=name
)
33 self
.virt_mode
= Signal()
34 self
.priv_mode
= Signal()
35 self
.stop_mark
= Signal()
36 self
.sequential
= Signal()
40 class ICacheToDecode1Type(RecordObject
):
41 def __init__(self
, name
=None):
42 super().__init
__(name
=name
)
44 self
.stop_mark
= Signal()
45 self
.fetch_failed
= Signal()
47 self
.insn
= Signal(32)
50 class LoadStore1ToDCacheType(RecordObject
):
51 def __init__(self
, name
=None):
52 super().__init
__(name
=name
)
54 self
.load
= Signal() # this is a load
57 self
.reserve
= Signal()
58 self
.virt_mode
= Signal()
59 self
.priv_mode
= Signal()
60 self
.addr
= Signal(64)
61 self
.data
= Signal(64)
62 self
.byte_sel
= Signal(8)
65 class LoadStore1ToMMUType(RecordObject
):
66 def __init__(self
, name
=None):
67 super().__init
__(name
=name
)
75 self
.sprn
= Signal(10)
76 self
.addr
= Signal(64)
80 class MMUToLoadStore1Type(RecordObject
):
81 def __init__(self
, name
=None):
82 super().__init
__(name
=name
)
85 self
.invalid
= Signal()
86 self
.badtree
= Signal()
87 self
.segerr
= Signal()
88 self
.perm_error
= Signal()
89 self
.rc_error
= Signal()
90 self
.sprval
= Signal(64)
93 class MMUToDCacheType(RecordObject
):
94 def __init__(self
, name
=None):
95 super().__init
__(name
=name
)
100 self
.addr
= Signal(64)
101 self
.pte
= Signal(64)
104 class MMUToICacheType(RecordObject
):
105 def __init__(self
, name
=None):
106 super().__init
__(name
=name
)
107 self
.tlbld
= Signal()
108 self
.tlbie
= Signal()
109 self
.doall
= Signal()
110 self
.addr
= Signal(64)
111 self
.pte
= Signal(64)