@@ -57,19 +57,22 @@ def __init__(self, i, o, *, o_domain="sync", stages=2, reset=0, reset_less=True)
5757 self .i = i
5858 self .o = o
5959
60- self ._o_domain = o_domain
61- self ._stages = [ Signal ( self . i . shape (), name = "stage{}" . format ( index ),
62- reset = reset , reset_less = reset_less )
63- for index in range ( stages )]
60+ self ._reset = reset
61+ self ._reset_less = reset_less
62+ self . _o_domain = o_domain
63+ self . _stages = stages
6464
6565 def elaborate (self , platform ):
6666 if hasattr (platform , "get_ff_sync" ):
6767 return platform .get_ff_sync (self )
6868
6969 m = Module ()
70- for i , o in zip ((self .i , * self ._stages ), self ._stages ):
70+ flops = [Signal (self .i .shape (), name = "stage{}" .format (index ),
71+ reset = self ._reset , reset_less = self ._reset_less )
72+ for index in range (self ._stages )]
73+ for i , o in zip ((self .i , * flops ), flops ):
7174 m .d [self ._o_domain ] += o .eq (i )
72- m .d .comb += self .o .eq (self . _stages [- 1 ])
75+ m .d .comb += self .o .eq (flops [- 1 ])
7376 return m
7477
7578
@@ -82,20 +85,21 @@ def __init__(self, arst, *, domain="sync", stages=2):
8285 self .arst = arst
8386
8487 self ._domain = domain
85- self ._stages = [Signal (1 , name = "stage{}" .format (i ), reset = 1 )
86- for i in range (stages )]
88+ self ._stages = stages
8789
8890 def elaborate (self , platform ):
8991 if hasattr (platform , "get_reset_sync" ):
9092 return platform .get_reset_sync (self )
9193
9294 m = Module ()
9395 m .domains += ClockDomain ("reset_sync" , async_reset = True , local = True )
94- for i , o in zip ((0 , * self ._stages ), self ._stages ):
96+ flops = [Signal (1 , name = "stage{}" .format (index ), reset = 1 )
97+ for index in range (self ._stages )]
98+ for i , o in zip ((0 , * flops ), flops ):
9599 m .d .reset_sync += o .eq (i )
96100 m .d .comb += [
97101 ClockSignal ("reset_sync" ).eq (ClockSignal (self ._domain )),
98102 ResetSignal ("reset_sync" ).eq (self .arst ),
99- ResetSignal (self ._domain ).eq (self . _stages [- 1 ])
103+ ResetSignal (self ._domain ).eq (flops [- 1 ])
100104 ]
101105 return m
0 commit comments