Skip to content

gds_software.dependency.compile

Compiler: DependencyModel -> GDSSpec / SystemIR.

Public Functions

Compile a DependencyModel into a GDSSpec.

Source code in packages/gds-software/gds_software/dependency/compile.py
def compile_dep(model: DependencyModel) -> GDSSpec:
    """Compile a DependencyModel into a GDSSpec."""
    spec = GDSSpec(name=model.name, description=model.description)

    # 1. Register types
    spec.collect(ModuleType)

    # 2. Register spaces
    spec.collect(ModuleSpace)

    # 3. Register blocks
    for mod in model.modules:
        spec.register_block(_build_module_block(mod, model))

    # 4. Register spec wirings
    all_block_names = [b.name for b in spec.blocks.values()]
    wires: list[Wire] = []

    for dep in model.deps:
        wires.append(Wire(source=dep.target, target=dep.source, space="DG ModuleSpace"))

    spec.register_wiring(
        SpecWiring(
            name=f"{model.name} Wiring",
            block_names=all_block_names,
            wires=wires,
            description=f"Auto-generated wiring for dependency graph {model.name!r}",
        )
    )

    return spec

Compile a DependencyModel directly to SystemIR.

Source code in packages/gds-software/gds_software/dependency/compile.py
def compile_dep_to_system(model: DependencyModel) -> SystemIR:
    """Compile a DependencyModel directly to SystemIR."""
    root = _build_composition_tree(model)
    return compile_system(model.name, root)