Design feedback
Design a board that is cheap to make, and read what a quote says you could change to pay less.
Design feedback tells you how to make a design cheaper to manufacture. Read this page before you start designing a board, and read a quote's designFeedback after you request one.
Grid Proto
On small runs, board fabrication and assembly are mostly fixed costs per job, so a board's specification decides its price more than its size or part count. Grid Proto is a large discount on the board fabrication and assembly of the Priority offer, for 1 to 10 boards, and it ships fast. A design qualifies when it meets every rule on this page. Grid Proto also depends on factory capacity, so a design that meets every rule can still be quoted without it when the factory is full.
Check the rules before you design. Some of them, such as the layer count, trace gaps and part packages, are fixed by the design files: getting one wrong means changing the design and uploading a new revision. Others are board settings that you can change on the revision at any time.
Checklist
- Board: 1 to 4 layers, at most 380 mm per side, FR-4, 1.6 mm thick, 1 oz copper, ENIG finish, black solder mask and white silkscreen.
- Limits: trace width and trace gap at least 0.127 mm, drills at least 0.15 mm.
- Settings: panelization Any or Tab-Route, and vias not marked conductive.
- Not allowed: impedance control, gold fingers, via plugging, via fill and cap, blind or buried vias, castellated edges, a custom stackup or custom requirements.
- Parts: surface-mount only (a connector with through-hole pegs counts as through-hole), nothing in an 0201 or 01005 package, and nothing you supply yourself.
- Quantity: 1 to 10 boards.
A board CircuitHub has left CAM comments on is also quoted without Grid Proto until CircuitHub clears them.
Settings and redesigns
Board settings can be changed on a revision with PATCH /v1/revisions/:revisionId/board: thickness, material, copper weight, finish, colours, gold fingers, via plugging, fill and conductivity, panelization, custom requirements and custom stackup. Each change names the board it read, by boardId and version. Use PUT /v1/revisions/:revisionId/board/impedances for impedance requirements. Everything else is a property of the design files: layer count, board size, trace width and gap, drill size, and the parts' packages and mounting. Design those in from the start, because fixing one means a new revision. Through-hole and small parts can instead be left unfitted, and parts you supply can be bought by CircuitHub instead.
Blind or buried vias, castellated edges, impedance control and a custom stackup are board settings, but they describe the design. Turning one off is only right when the design does not need it; a design that has blind vias or castellations needs to be changed instead.
Choosing parts
Check stock as usual. For Grid Proto, every part must also be surface-mount only, in an 0402 or larger package, and must fit a 1.6 mm board. Check the last one for connectors that mount on or over the board edge. For example, one ESP32-S3 USB-C dongle used a straddle-mount USB-C plug made for 0.8 mm boards. That one part forced a 0.8 mm board, which ruled out Grid Proto; a USB-C connector that surface-mounts on a 1.6 mm board would have kept it.
Rules
These are the rules a quote checks, and what to do about each one that fails. The panel limits each side to 380 mm, which is tighter than the 400 mm board size rule.
Design these in from the start. A failing one needs a change to the design files and a new revision, or for parts, leaving them unfitted.
| Requirement | How to fix |
|---|---|
| Board must have 1 to 4 layers, inclusive | Change the design files and upload a new revision |
| Board width must be less than or equal to 400mm | Change the design files and upload a new revision |
| Board length must less than or equal to 400mm | Change the design files and upload a new revision |
| Minimum trace width cannot be less than 0.127mm | Change the design files and upload a new revision |
| Minimum trace gap cannot be less than 0.127mm | Change the design files and upload a new revision |
| Minimum drill size cannot be less than 0.15mm | Change the design files and upload a new revision |
| Board outline must be known and at most 380mm per side to fit the panel | Change the design files and upload a new revision |
| Use surface-mount parts only; a part with through-hole pins or pegs counts as through-hole | Replace the parts in the design files and upload a new revision, or mark their placements DNP |
| Use no 0201 or 01005 packages | Replace the parts in the design files and upload a new revision, or mark their placements DNP |
Board settings. A failing one can be changed on the revision with PATCH /v1/revisions/:revisionId/board, sending the board's boardId and version as expectedBoardId and expectedVersion.
| Requirement | How to fix |
|---|---|
| Silkscreen must be White | Send "silkscreenColor": "white" |
| Soldermask must be Black | Send "soldermaskColor": "black" |
| Board thickness must be 1.6mm | Send "boardThickness": 1.6 |
| Dielectric material must be FR4 | Send "dielectricMaterial": "FR4" |
| Outer copper weight must be 1oz | Send "outerCopperWeightOz": 1 |
| Inner copper weight must be 1oz | Send "innerCopperWeightOz": 1 |
| Surface finish must be ENIG | Send "surfaceFinish": "ENIG" |
| No gold fingers allowed | Send "goldFingers": false |
| No via plugging allowed | Send "viaPlugging": "" |
| No via fill and cap allowed | Send "viaFillAndCap": "" |
| No blind or buried layers allowed | Send "blindBuriedLayerSets": 0 |
| Panelization method must be Any or Tab-Route | Send "panelizationMethod": "Any" |
| No castellated edges allowed | Send "needsCastellatedEdges": false |
| No impedance control allowed | Clear the impedance requirements with PUT /v1/revisions/:revisionId/board/impedances |
| No custom requirements allowed | Send "hasCustomRequirements": "" |
| No custom stackups allowed | Send "hasCustomStackup": "" |
| Via is set as conductive requiring a manual quote | Send "viaIsConductive": false |
The order, and CircuitHub's review of the board.
| Requirement | How to fix |
|---|---|
| CAM comments prevent automatic quotes | Contact CircuitHub |
| Order 1 to 10 boards | Request a quote for 10 boards or fewer |
| Use only parts CircuitHub buys, none you supply | Have CircuitHub buy the parts, or mark their placements DNP |
Check a design
Request a quote and read its designFeedback. When the design would qualify for Grid Proto with changes, the quote has a grid_proto entry: its reasons say what to change and how, and potential is the price and ship date of the changed design. Parts the reasons list are priced as left unfitted. potential is null when the quote could not price the changed design, which is the case whenever a design-file rule other than the parts fails, or the board has CAM comments. There is no entry when the design already qualifies, since the discount is then in the Priority offer's discounts, when only factory capacity stands in the way, or when the changed design would cost no less.
circuithub quote request --revision 99001 --quantity 5 --workspace acme-electronicsOutput:
Quote: 50002
Revision: 99001 (3)
Quantity: 5
Currency: USD
Orderable: yes
Expires: 2026-11-03T11:00:00Z
OFFER SERVICE SHIP DATE MANUFACTURING TOTAL PER BOARD
880011 priority 2026-11-10 $931.27 $186.25
880012 standard 2026-11-17 $686.93 $137.39
Manufacturing total excludes shipping and tax.
Design feedback: This design doesn't qualify for Grid Proto. Fix the reasons below to pay $273.20 instead of $931.27 and ship on 2026-11-10.
- Board thickness must be 1.6mm; this board is 0.8mm thick. Change it on this revision: read the board with GET /v1/revisions/99001/board, then send PATCH /v1/revisions/99001/board with "boardThickness": 1.6 and the board's boardId and version as expectedBoardId and expectedVersion (https://api.circuithub.com/docs/guides/board#update-board-configuration).
More: https://api.circuithub.com/docs/guides/design-feedback#grid-protocurl -X POST -H "Authorization: Bearer $CIRCUITHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"revisionId": 99001, "quantity": 5}' \
https://api.circuithub.com/v1/quotesResponse: 200 OK, with the quote's other fields as in the quoting guide:
{
"designFeedback": [
{
"type": "grid_proto",
"summary": "This design doesn't qualify for Grid Proto. Fix the reasons below to pay $273.20 instead of $931.27 and ship on 2026-11-10.",
"reasons": [
"Board thickness must be 1.6mm; this board is 0.8mm thick. Change it on this revision: read the board with GET /v1/revisions/99001/board, then send PATCH /v1/revisions/99001/board with \"boardThickness\": 1.6 and the board's boardId and version as expectedBoardId and expectedVersion (https://api.circuithub.com/docs/guides/board#update-board-configuration)."
],
"potential": {
"totalPrice": "273.20",
"shipDate": "2026-11-10",
"leadTimeBusinessDays": 3,
"savings": "658.07"
},
"docsUrl": "https://api.circuithub.com/docs/guides/design-feedback#grid-proto"
}
]
}After uploading a new revision, read its board settings again before quoting it: settings you changed on the old revision may not carry over.