def visit_Part(self, node): value_proxy = node.value offset_proxy = node.offset if not isinstance(node.value, Signal): value_proxy = Signal(value_bits_sign(node.value)) if self.target_context: a = _Assign(node.value, value_proxy) else: a = _Assign(value_proxy, node.value) self.comb.append(self.visit_Assign(a)) if not isinstance(node.offset, Signal): offset_proxy = Signal(value_bits_sign(node.offset)) if self.target_context: a = _Assign(node.offset, offset_proxy) else: a = _Assign(offset_proxy, node.offset) self.comb.append(self.visit_Assign(a)) node = _Part(value_proxy, offset_proxy, node.width) return NodeTransformer.visit_Part(self, node)
def visit_Part(self, node): return _Part(self.visit(node.value), self.visit(node.offset), node.width)