---
title: "DfmConfig"
description: "Configuration for DFM prediction."
canonical_url: "https://www.rosette.dev/docs/api-reference/DfmConfig"
markdown_url: "https://www.rosette.dev/docs/api-reference/DfmConfig.md"
source_url: "https://github.com/PreFab-Photonics/rosette/blob/f086d7670645fd36c05362d696d442a2b2e74850/www/content/docs/api-reference/DfmConfig.mdx"
docs_channel: "main"
docs_revision: "f086d7670645fd36c05362d696d442a2b2e74850"
---

# DfmConfig

Configuration for DFM prediction.

Import with `from rosette.dfm import DfmConfig`.

Controls rasterization resolution, padding, contour extraction, and
tolerance thresholds for pass/fail checking. Use `set_layer_config()` to
override settings for specific layers.

```python
# Basic usage
config = DfmConfig(resolution=0.01, padding=1.0)
result = run_dfm(cell, layers=[Layer(1)], config=config)

# With tolerances for pass/fail checking
config = DfmConfig(resolution=0.01, max_area_deviation=0.10, severity="error")
config.set_layer_config(Layer(1, 0), sigma=0.05, max_area_deviation=0.05)
config.set_layer_config(Layer(2, 0), sigma=0.15)
```

## Attributes



### `resolution`

```python
resolution: float
```

Rasterization resolution in design units per pixel.





### `padding`

```python
padding: float
```

Padding around the geometry bounding box in design units.





### `contour_threshold`

```python
contour_threshold: float
```

Threshold for binarizing the prediction output. Values above this
threshold are treated as fabricated.





### `keep_raster`

```python
keep_raster: bool
```

Whether to retain raw raster data in the result. When `True`, each
`LayerPrediction` includes `raster_data`, `raster_width`, `raster_height`,
and `raster_origin`.





### `max_area_deviation`

```python
max_area_deviation: float | None
```

Global maximum allowed relative area deviation. Set to `None` to skip
area deviation checking.





### `has_tolerances`

```python
has_tolerances: bool
```

`True` if any tolerance thresholds are configured (global or per-layer).



## Methods



### `__init__`

```python
__init__(resolution=0.01, padding=1.0, contour_threshold=0.5, keep_raster=False, max_area_deviation=None, severity='error') -> None
```

Create a new DFM configuration.



- **`resolution`** (`float`, default `0.01`)

  Rasterization resolution in design units per pixel. Smaller values give
  higher fidelity but use more memory and time.





- **`padding`** (`float`, default `1.0`)

  Padding around the geometry bounding box in design units.





- **`contour_threshold`** (`float`, default `0.5`)

  Threshold for binarizing the prediction. Values in `[0.0, 1.0]`.





- **`keep_raster`** (`bool`, default `False`)

  Whether to retain raw raster data in the result.





- **`max_area_deviation`** (`float | None`, default `None`)

  Global maximum allowed relative area deviation (e.g., `0.10` for 10%).
  Set to `None` to skip area deviation checking.





- **`severity`** (`str`, default `"error"`)

  Default severity for violations: `"error"` or `"warning"`.





**Returns:** `None`





### `set_layer_config`

```python
set_layer_config(layer, sigma=None, max_area_deviation=None, severity=None) -> None
```

Set per-layer model and tolerance overrides.

Per-layer settings override the global defaults for a specific layer.
Parameters left as `None` fall back to the global config. If `sigma` is
provided, a per-layer `GaussianModel` is created with the specified sigma.



> **Example**
>
> ```python
> config = DfmConfig(resolution=0.01)
> config.set_layer_config(Layer(1, 0), sigma=0.05, max_area_deviation=0.05)
> config.set_layer_config(Layer(2, 0), sigma=0.15)
> ```





- **`layer`** (`Layer | int | tuple[int, int]`)

  Target layer.





- **`sigma`** (`float | None`, default `None`)

  Gaussian blur sigma for this layer. Creates a per-layer `GaussianModel`.





- **`max_area_deviation`** (`float | None`, default `None`)

  Maximum allowed relative area deviation for this layer.





- **`severity`** (`str | None`, default `None`)

  Severity override for this layer: `"error"` or `"warning"`.





**Returns:** `None`