class MaximumSpaceDesignRule(__LayerDesignRule__): """ Maximum allowed space between two edges or vertices in a single layer """ maximum_space = PositiveNumberProperty(required=True) def __str__(self): return "Maximum space %.3f on layer %s" % (self.maximum_space, self.layer)
class MaximumWidthDesignRule(__LayerDesignRule__): """ Maximum allowed width between two edges or vertices in a single layer """ maximum_width = PositiveNumberProperty(required=True) def __str__(self): return "Maximum width %.3f on layer %s" % (self.maximum_width, self.layer)
class MinimumDiameterDesignRule(__LayerDesignRule__): """ Minimum allowed width between two edges or vertices in a single layer """ minimum_diameter = PositiveNumberProperty(required=True) def __str__(self): return "Minimum diameter %.3f on layer %s" % (self.minimum_diameter, self.layer)
class RibWaveguide(StripWaveguide): depth = PositiveNumberProperty(default=1.0)
class StripWaveguide(SlabWaveguide): width = PositiveNumberProperty(default=1.0)
class SlabWaveguide(Waveguide): thickness = PositiveNumberProperty(default=1.0)
class MinimumEnclosureDesignRule(__TwoLayerDesignRule__): minimum_enclosure = PositiveNumberProperty(required=True) def __str__(self): return "Layer %s must be enclosed by layer %s by at least %.3f micron" % ( self.layer1, self.layer2, self.minimum_enclosure)