hdl.rec: add basic record support.

This commit is contained in:
whitequark 2018-12-28 13:22:10 +00:00
parent d66bbb0df8
commit 92a96e1644
9 changed files with 242 additions and 19 deletions

View file

@ -72,7 +72,12 @@ class _State:
normalize = Const.normalize
class _RHSValueCompiler(ValueVisitor):
class _ValueCompiler(ValueVisitor):
def on_Record(self, value):
return self(Cat(value.fields.values()))
class _RHSValueCompiler(_ValueCompiler):
def __init__(self, signal_slots, sensitivity=None, mode="rhs"):
self.signal_slots = signal_slots
self.sensitivity = sensitivity
@ -202,7 +207,7 @@ class _RHSValueCompiler(ValueVisitor):
return eval
class _LHSValueCompiler(ValueVisitor):
class _LHSValueCompiler(_ValueCompiler):
def __init__(self, signal_slots, rhs_compiler):
self.signal_slots = signal_slots
self.rhs_compiler = rhs_compiler

View file

@ -305,6 +305,9 @@ class _ValueCompiler(xfrm.ValueVisitor):
def on_ResetSignal(self, value):
raise NotImplementedError # :nocov:
def on_Record(self, value):
return self(Cat(value.fields.values()))
def on_Cat(self, value):
return "{{ {} }}".format(" ".join(reversed([self(o) for o in value.parts])))