"""Custom exception hierarchy for neurocore.""" class NeurocoreError(Exception): """Base exception for all neurocore errors.""" class NetworkTooLargeError(NeurocoreError): """Network exceeds hardware capacity (cores * neurons_per_core).""" class PoolOverflowError(NeurocoreError): """Per-core CSR connection pool exhausted (>POOL_DEPTH entries).""" # Legacy alias — P13a replaced fixed fanout with CSR pool FanoutOverflowError = PoolOverflowError class RouteOverflowError(NeurocoreError): """A source neuron exceeds ROUTE_FANOUT (8) multicast slots.""" class WeightOutOfRangeError(NeurocoreError): """Weight value outside signed 16-bit range [-32768, 32767].""" class InvalidParameterError(NeurocoreError): """Invalid neuron parameter ID or value.""" class PlacementError(NeurocoreError): """Compiler could not place or route the network onto hardware.""" class ChipCommunicationError(NeurocoreError): """UART communication failure with hardware."""