2 from nmigen
.hdl
.ast
import Past
3 from nmigen
.asserts
import Assert
, Assume
4 from lambdasoc
.periph
import Peripheral
6 from gram
.dfii
import *
7 from gram
.phy
.dfi
import Interface
10 class CSRHost(Peripheral
, Elaboratable
):
11 def __init__(self
, name
="csrhost"):
12 super().__init
__(name
=name
)
13 self
.bank
= self
.csr_bank()
15 def init_bridge(self
):
16 self
._bridge
= self
.bridge(data_width
=32, granularity
=8, alignment
=2)
17 self
.bus
= self
._bridge
.bus
19 def elaborate(self
, platform
):
21 m
.submodules
+= self
._bridge
24 class PhaseInjectorTestCase(FHDLTestCase
):
25 def generate_phaseinjector(self
):
26 dfi
= Interface(12, 8, 1, 8, 1)
28 dut
= PhaseInjector(csrhost
.bank
, dfi
.phases
[0])
31 m
.submodules
+= csrhost
34 return (m
, dfi
, csrhost
)
36 def test_initialstate(self
):
37 m
, dfi
, csrhost
= self
.generate_phaseinjector()
40 self
.assertTrue((yield dfi
.phases
[0].cas_n
))
41 self
.assertTrue((yield dfi
.phases
[0].ras_n
))
42 self
.assertTrue((yield dfi
.phases
[0].we_n
))
43 self
.assertTrue((yield dfi
.phases
[0].act_n
))
45 runSimulation(m
, process
, "test_phaseinjector.vcd")
47 def test_setaddress(self
):
48 m
, dfi
, csrhost
= self
.generate_phaseinjector()
51 yield from wb_write(csrhost
.bus
, 0x8 >> 2, 0xCDC, sel
=0xF)
52 self
.assertEqual((yield dfi
.phases
[0].address
), 0xCDC)
54 runSimulation(m
, process
, "test_phaseinjector.vcd")