@@ -815,7 +815,52 @@ def process():
815
815
sim .add_clock (1e-6 )
816
816
sim .add_sync_process (process )
817
817
818
- def test_memory_transparency (self ):
818
+ def test_memory_transparency_simple (self ):
819
+ m = Module ()
820
+ init = [0x11 , 0x22 , 0x33 , 0x44 ]
821
+ m .submodules .memory = memory = Memory (width = 8 , depth = 4 , init = init )
822
+ rdport = memory .read_port ()
823
+ wrport = memory .write_port (granularity = 8 )
824
+ with self .assertSimulation (m ) as sim :
825
+ def process ():
826
+ yield rdport .addr .eq (0 )
827
+ yield
828
+ yield Settle ()
829
+ self .assertEqual ((yield rdport .data ), 0x11 )
830
+ yield rdport .addr .eq (1 )
831
+ yield
832
+ yield Settle ()
833
+ self .assertEqual ((yield rdport .data ), 0x22 )
834
+ yield wrport .addr .eq (0 )
835
+ yield wrport .data .eq (0x44444444 )
836
+ yield wrport .en .eq (1 )
837
+ yield
838
+ yield Settle ()
839
+ self .assertEqual ((yield rdport .data ), 0x22 )
840
+ yield wrport .addr .eq (1 )
841
+ yield wrport .data .eq (0x55 )
842
+ yield wrport .en .eq (1 )
843
+ yield
844
+ yield Settle ()
845
+ self .assertEqual ((yield rdport .data ), 0x55 )
846
+ yield wrport .addr .eq (1 )
847
+ yield wrport .data .eq (0x66 )
848
+ yield wrport .en .eq (1 )
849
+ yield rdport .en .eq (0 )
850
+ yield
851
+ yield Settle ()
852
+ self .assertEqual ((yield rdport .data ), 0x55 )
853
+ yield wrport .addr .eq (2 )
854
+ yield wrport .data .eq (0x77 )
855
+ yield wrport .en .eq (1 )
856
+ yield rdport .en .eq (1 )
857
+ yield
858
+ yield Settle ()
859
+ self .assertEqual ((yield rdport .data ), 0x66 )
860
+ sim .add_clock (1e-6 )
861
+ sim .add_sync_process (process )
862
+
863
+ def test_memory_transparency_multibit (self ):
819
864
m = Module ()
820
865
init = [0x11111111 , 0x22222222 , 0x33333333 , 0x44444444 ]
821
866
m .submodules .memory = memory = Memory (width = 32 , depth = 4 , init = init )
0 commit comments