def GetCoreIRModule(cirb: CoreIRBackend, circuit: DefineCircuitKind): """ Get the CoreIR module corresponding to the Magma circuit or circuit instance :param cirb: The CoreIR backend currently be used. :param circuit: The magma circuit to get the coreIR backend for :return: A CoreIR module """ if (hasattr(circuit, "wrappedModule")): return circuit.wrappedModule else: # if this is an instance, compile the class, as that is the circuit if circuit.is_instance: circuitNotInstance = circuit.__class__ else: circuitNotInstance = circuit return cirb.compile(circuitNotInstance)[circuitNotInstance.name]
def GetCoreIRModule(cirb: CoreIRBackend, circuit: DefineCircuitKind): """ Get the CoreIR module corresponding to the Magma circuit or circuit instance :param cirb: The CoreIR backend currently be used. :param circuit: The magma circuit to get the coreIR backend for :return: A CoreIR module """ if (hasattr(circuit, "wrappedModule")): return circuit.wrappedModule else: # if this is an instance, compile the class, as that is the circuit if hasattr(circuit, 'is_instance') and circuit.is_instance: circuitNotInstance = circuit.__class__ else: circuitNotInstance = circuit moduleOrGenerator = cirb.compile(circuitNotInstance)[circuitNotInstance.name] # compile can giv eme back the coreIR module or the coreIR generator. if this is # the CoreIR generator, call it with the Magma arguments converted to CoreIR ones. if isinstance(moduleOrGenerator, Generator): return moduleOrGenerator(**circuitNotInstance.coreir_genargs) else: return moduleOrGenerator