49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# processors/process_sr.py
|
|
# -*- coding: utf-8 -*-
|
|
import sympy
|
|
import traceback
|
|
from .processor_utils import (
|
|
get_sympy_representation,
|
|
sympy_expr_to_scl,
|
|
get_target_scl_name,
|
|
format_variable_name,
|
|
)
|
|
from .symbol_manager import SymbolManager
|
|
|
|
SCL_SUFFIX = "_sympy_processed"
|
|
|
|
|
|
def process_sr(instruction, network_id, sympy_map, symbol_manager: SymbolManager, data):
|
|
"""
|
|
Genera SCL para Set/Reset flip-flop (Sr).
|
|
Por ahora, marca como procesado sin generar código específico.
|
|
"""
|
|
instr_uid = instruction["instruction_uid"]
|
|
instr_type_original = instruction.get("type", "Sr")
|
|
if instr_type_original.endswith(SCL_SUFFIX) or "_error" in instr_type_original:
|
|
return False
|
|
|
|
# Verificar si la instrucción tiene conexiones válidas
|
|
inputs = instruction.get("inputs", {})
|
|
outputs = instruction.get("outputs", {})
|
|
|
|
# Si no tiene conexiones, marcar como procesado sin generar código
|
|
if not inputs and not outputs:
|
|
instruction["scl"] = (
|
|
"// Sr flip-flop sin conexiones - procesado como placeholder"
|
|
)
|
|
instruction["type"] = instr_type_original + SCL_SUFFIX
|
|
return True
|
|
|
|
# TODO: Implementar lógica completa para Sr cuando se encuentren casos con conexiones
|
|
# Por ahora, marcar como error para casos más complejos
|
|
instruction["scl"] = f"// ERROR: Sr {instr_uid} con conexiones no implementado aún."
|
|
instruction["type"] = instr_type_original + "_error"
|
|
return True
|
|
|
|
|
|
# --- Processor Information Function ---
|
|
def get_processor_info():
|
|
"""Devuelve la información para el procesador Sr."""
|
|
return {"type_name": "sr", "processor_func": process_sr, "priority": 4}
|