---
title: "DrcPolicy"
description: "Explicit per-run DRC suppression policy keyed by cell name."
canonical_url: "https://www.rosette.dev/docs/api-reference/DrcPolicy"
markdown_url: "https://www.rosette.dev/docs/api-reference/DrcPolicy.md"
source_url: "https://github.com/PreFab-Photonics/rosette/blob/f086d7670645fd36c05362d696d442a2b2e74850/www/content/docs/api-reference/DrcPolicy.mdx"
docs_channel: "main"
docs_revision: "f086d7670645fd36c05362d696d442a2b2e74850"
---

# DrcPolicy

Explicit per-run DRC suppression policy keyed by cell name.

Import with `from rosette.drc import DrcPolicy` and pass the policy to
[`run_drc(..., policy=policy)`](/docs/api-reference#run_drc). Policies are
separate from Cell geometry and hierarchy.

```python
from rosette import BBox, Point
from rosette.drc import DrcPolicy, run_drc

policy = DrcPolicy()
policy.skip_cell("trusted_pdk_cell")
policy.waive_region("taper", BBox(Point(9, -1), Point(11, 1)))

result = run_drc(cell, rules, policy=policy)
```

## Methods



### `__init__`

```python
__init__() -> None
```

Create an empty DRC policy.



**Returns:** `None`





### `skip_cell`

```python
skip_cell(cell_name) -> None
```

Suppress violations attributed entirely to the named cell or its reachable
subtree. Violations involving an unskipped cell remain visible.



- **`cell_name`** (`str`)

  Name of the cell whose subtree should be skipped.





**Returns:** `None`





### `waive_region`

```python
waive_region(cell_name, region) -> None
```

Add a region waiver in the named cell's local coordinate system. A violation
is waived only when its location is fully contained by the region after the
region is transformed for that cell placement.



- **`cell_name`** (`str`)

  Name of the cell that owns the local waiver region.





- **`region`** (`BBox`)

  Finite bounding box with ordered corners.





**Returns:** `None`





### `skips`

```python
skips(cell_name) -> bool
```

Return whether the named cell was explicitly passed to `skip_cell`. This does
not report cells included only because they are descendants of a skipped cell.



- **`cell_name`** (`str`)

  Cell name to query.





**Returns:** `bool`





### `waiver_regions`

```python
waiver_regions(cell_name) -> list[BBox]
```

Return a copy of the local waiver regions registered for the named cell.



- **`cell_name`** (`str`)

  Cell name to query.





**Returns:** `list[BBox]`