Skip to main content
Glama

design_suggest_partition

Computes a min-cut partition of a design plan into balanced functional groups by minimizing crossing nets, helping decide schematic sheet or PCB room groupings.

Instructions

Suggest how to split a design into balanced functional groups.

Computes a min-cut partition (Kernighan-Lin style) of the plan's components into n_groups balanced groups that MINIMISE the number of nets crossing between groups -- so each group is internally well-connected and few signals span the boundary. Use it to group a PCB into functional ROOMS, or to decide how to break a design with SEPARABLE blocks across schematic sheets.

Note: a HUB-centric design (one IC fanning out to many peripherals) does not separate cleanly -- the hub is connected to everything, so the cut stays high and per-sheet density barely drops. Partitioning helps when the netlist has genuinely distinct functional blocks; read cut_nets (low = clean) and group_sizes to judge before acting.

Power/ground rails (nets touching more than max_fanout parts) are excluded from the connectivity graph -- they route as planes and connect nearly everything, so the split follows the SIGNAL structure.

Pure data; touches nothing. Assign the returned groups to part sheet (or zone) fields yourself if you act on the suggestion.

Args: plan_json: A DesignPlan (dict or JSON string). n_groups: Number of groups to split into (default 2). max_fanout: Nets above this pin count are treated as rails and ignored for partitioning (default 8).

Returns: {ok, n_groups, groups: {idx: [refdes...]}, cut_nets, boundary_nets: [names...], group_sizes, summary}. cut_nets is how many nets cross the boundary (lower is cleaner); boundary_nets names them -- those become cross-sheet labels or off-sheet connectors if you split there.

Input Schema

NameRequiredDescriptionDefault
n_groupsNo
plan_jsonYes
max_fanoutNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so well: it declares the tool is pure data and touches nothing, explains the min-cut algorithm, discloses that power/ground rails above max_fanout are excluded, and warns about poor separation in hub-centric designs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured and front-loaded: purpose first, then caveats, then Args and Returns. Most sentences add value, though the prose is more expansive than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description adds useful interpretation of the result fields: cut_nets as a cleanliness metric, boundary_nets as cross-sheet/off-sheet candidates, and group_sizes for judging splits. The combination of purpose, caveats, parameters, and return guidance is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates fully by explaining plan_json as a DesignPlan dict or JSON string, n_groups as the number of balanced groups (default 2), and max_fanout as the rail-exclusion threshold (default 8).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource: it suggests how to split a design into balanced functional groups using a min-cut partition. It also explains the algorithm and intended outcomes (rooms/schematic sheets), making the tool's niche clear even without naming siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance (grouping a PCB into rooms, splitting separable blocks across sheets) and an explicit when-not caveat about hub-centric designs. It does not name alternative sibling tools such as hierarchy-planning tools, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools