hdl.ast: allow sampling ClockSignal, ResetSignal.

This commit is contained in:
whitequark 2019-01-17 05:23:06 +00:00
parent 8c96675580
commit fa8e876356
3 changed files with 9 additions and 3 deletions

View file

@ -844,7 +844,7 @@ class Sample(Value):
self.value = Value.wrap(expr)
self.clocks = int(clocks)
self.domain = domain
if not isinstance(self.value, (Const, Signal)):
if not isinstance(self.value, (Const, Signal, ClockSignal, ResetSignal)):
raise TypeError("Sampled value may only be a signal or a constant, not {!r}"
.format(self.value))
if self.clocks < 0:

View file

@ -364,6 +364,10 @@ class SampleLowerer(FragmentTransformer, ValueTransformer, StatementTransformer)
return "c${}".format(value.value), value.value
elif isinstance(value, Signal):
return "s${}".format(value.name), value.reset
elif isinstance(value, ClockSignal):
return "clk", 0
elif isinstance(value, ResetSignal):
return "rst", 1
else:
raise NotImplementedError # :nocov: