Source code for padrick.Generators.FuseSoCGenerator.FuseSoCGeneratorConfigFileModel

from enum import Enum
from pathlib import Path
from typing import Optional, List, Union

from typing_extensions import Literal, Annotated

from pydantic import BaseModel, Field, Extra

from padrick.Generators.GeneratorSettings import GeneratorSettings
from padrick.Model.Padframe import Padframe

[docs]class GeneratorKind(str, Enum): rtl = "rtl" driver = "driver" padlist = "padlist" constraints = "constraints" custom = "custom"
[docs]class GenerateStep(BaseModel): kind: str def __str__(self): return f"step generate {self.kind}"
[docs]class RTLGenerateStep(GenerateStep): kind: Literal[GeneratorKind.rtl]
[docs]class DriverGenerateStep(GenerateStep): kind: Literal[GeneratorKind.driver]
[docs]class PadlistGenerateStep(GenerateStep): kind: Literal[GeneratorKind.padlist]
[docs]class ConstraintsGenerateStep(GenerateStep): kind: Literal[GeneratorKind.constraints]
[docs]class CustomGenerateStep(GenerateStep): kind: Literal[GeneratorKind.custom] template_file: Path output_filename: Path def __str__(self): return f"step generate custom template {self.template_file}"
GenerateStepType = Annotated[Union[ RTLGenerateStep, CustomGenerateStep #DriverGenerateStep, # Currently not supported #PadlistGenerateStep, # Currently not supported #ConstraintsGenerateStep, # Currently not supported ], Field(discriminator='kind')]
[docs]class ConfigFileParameters(BaseModel): generator_settings: Optional[Path] padframe_manifest: Path generate_steps: List[GenerateStepType] padrick_cmd: Optional[str]
[docs]class ConfigFileModel(BaseModel): """ A pydantic data validation class to validate the generator config files supplied by FuseSoC to padrick's 'fusesoc_gen' command. """ files_root: Path gapi: Literal['1.0'] vlnv: str parameters: ConfigFileParameters
[docs] class Config: extra = Extra.allow