# Overview

**Design Parameters** are key design considerations that determine the options available to Quilter when generating layout candidates. These parameters cover everything from high-level questions, such as *who will manufacture your board,* to low-level details, like *where to place a capacitor.*

Once your board's Design Parameters are fully defined, your layout candidate is complete. Your input file is the main way to tell Quilter which Design Parameters (design elements) are fixed and which remain flexible for Quilter to explore.

We typically categorize Design Parameters into three main groups:

1. **Fabrication parameters** – who will manufacture your board, and what fabrication capabilities and materials do they have?
2. **Placement parameters** – where do components go on your design?
3. **Routing parameters** – how should components be connected?

As mentioned in [our introduction](https://docs.quilter.ai/using-quilter/select-your-stackup), Design Parameters can be either requirements that Quilter *must* follow or *preferences* that act as filters on the solution space Quilter explores.

Check out the tables below to learn how to control Quilter's options and key parameters of the candidates it generates.

### Fabrication

In a traditional design workflow, fabrication parameters are fixed before the design process starts. Quilter reverses this approach, allowing you to consider the fabricator, fabrication rules, and even the stack-up as variables within the solution space that Quilter can explore and optimize.

By switching fabrication parameters from constraints to optimization variables, you can do amazing things with Quilter, including:

1. **Compile for multiple fabricators.** Create a single design that can be compiled for multiple fabricators and stack-ups, then send it to the manufacturer with the lowest cost or fastest turnaround time.
2. **Analyze performance vs. speed and cost.** Compile the same design with different fabrication rules (3.5 mil, 5 mil, and 6 mil) to explore the trade-offs between physics performance, layer count, and fabrication cost/speed.
3. **Optimize board density.** Compile the same design with various board outlines to examine the relationship between board size, component density, and layer count/routability.

<table><thead><tr><th width="161.1875">Parameter</th><th width="328.14453125">Description</th><th>Preference</th><th width="134.65625">Requirement</th></tr></thead><tbody><tr><td><a data-mention href="fabricators">fabricators</a></td><td>The PCB manufacturer that a specific layout candidate (stack-up and fabrication ruleset) is designed for. </td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Filter by fabricator</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Enteprise customers only</td></tr><tr><td><a data-mention href="stackups">stackups</a></td><td>The stack-up that Quilter uses when generating your candidate, including layer count, copper weight, material properties, and more.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Layer count only</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Stackup from input files</td></tr><tr><td><a data-mention href="../using-quilter/fabricator-constraints">fabricator-constraints</a></td><td>Basic design rules that ensure your board can be manufactured without issue – trace, space, drill, via, edge clearances, etc</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Trace and space</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Design rules from input files</td></tr></tbody></table>

### Placement

Placement parameters let you control where Quilter places components on your board, ensuring the layout candidates it generates meet your design requirements and preferences. Specifically, you can use placement parameters to:

1. **Restrict placement to one side** for easy assembly and testing
2. **Enforce a specific "floor plan"** that meets 3D spatial requirements and signal flow
3. **Lock components** in place during iterations so that you can save your work throughout the design process

<table><thead><tr><th width="161.1875">Parameter</th><th width="328.14453125">Description</th><th>Preference</th><th>Requirement</th></tr></thead><tbody><tr><td><a data-mention href="pre-placed-components">pre-placed-components</a></td><td>Lock the location of location-sensitive components so Quilter can't modify it.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2b07">⬇️</span> Use "placement regions"</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Place within board outline in input file</td></tr><tr><td><a data-mention href="placement-regions">placement-regions</a></td><td>Restrict Quilter's placement of unplaced components to a designated area within your board outline.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> Placement regions are always respected</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Add to input board file</td></tr><tr><td><a data-mention href="single-sided-placement">single-sided-placement</a></td><td>Limit placement to one side of the PCB.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Filter for single-sided designs.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2b06">⬆️</span> Use "placement regions"</td></tr></tbody></table>

### Routing

Routing Parameters help you influence and control how Quilter implements your board's netlist, to ensure that the layout candidates Quilter generates meet all of your electrical requirements and preferences.

Routing parameters can be used to:

1. **Define a custom stack-up** that includes power planes dedicated to specific nets within your design (coming soon)
2. **Assert custom net widths** for specific nets or net classes to override or supplement the [fabricator-constraints](https://docs.quilter.ai/using-quilter/fabricator-constraints "mention")for a particular layout job
3. **Lock routing strategies** during iteration, so you can "save your work" throughout the design process

<table><thead><tr><th width="161.1875">Parameter</th><th width="328.14453125">Description</th><th>Preference</th><th>Requirement</th></tr></thead><tbody><tr><td><a data-mention href="pre-routed-traces">pre-routed-traces</a></td><td>Lock the routing path of sensitive signals.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> Pre-routed traces are always preserved</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Leave within board outline in input file</td></tr><tr><td><a data-mention href="preserved-pours">preserved-pours</a></td><td>Preserve existing copper pours from your input pile for Quilter to use when generating candidates.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> Preserved pours are always respected</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> "Lock" pours you want to preserve in input ful</td></tr><tr><td><a data-mention href="keepouts">keepouts</a></td><td>Prevent Quilter from routing traces through specific geometric areas within your design.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> Keepouts are always respected</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Add keepout to your input file</td></tr><tr><td><a data-mention href="net-widths">net-widths</a></td><td>Manually specify net widths for individual nets or net classes in your design.</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span> Net widths are always respected</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Specify "Net Width" in during job setup</td></tr></tbody></table>
