Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
357d57bfcThis file is pinned to the selected release. Download the original to open it in your design tool.
# akcli.toml — reference configuration
#
# Copy to your project root as `akcli.toml`. `akcli` discovers it by walking up from the
# current directory; override with `-C/--config <path>`. Paths are resolved relative to THIS file's
# directory. Unknown keys are rejected with ERROR: BAD_CONFIG.
[project]
# Designator of the MCU whose pin->net mapping `akcli pinmap` reports.
mcu_designator = "U3"
# Schematic pin grid the net checks measure against: bare number = mils, or "Nmil"/"Nmm".
grid = "50mil"
# Rotated undo-backup depth under .akcli/backups/ (1..99; default 3).
backup_depth = 3
# One [[rail]] table per power rail. `akcli power` enumerates rails and sanity-checks voltages;
# `akcli check` uses rail names for net-name-based power/ground detection.
[[rail]]
name = "RAIL_A"
voltage = 3.3
tolerance_pct = 5
# Input file locations, resolved relative to this file's directory.
# [paths] accepts arbitrary keys (string values); an entry ending in .kicad_sym
# is additionally offered to the writer as a symbol source.
[paths]
schematic = "hardware/altium/main.SchDoc"
# dts / pinout_md are reserved — nothing reads them today; feed pin tables to
# `akcli pinmap --expected` (via `akcli expected`) instead.
dts = "firmware/boards/mcu/board.dts"
pinout_md = "hardware/docs/pinout.md"
# Design-intent snapshot `akcli check --intent` / `akcli gate` fall back to when no value/flag is given.
intent = "intent.json"
# `akcli gate`'s sch-pcb-gate board, when --pcb is not given.
pcb = "hardware/altium/main.kicad_pcb"
# `akcli gate`'s bom-lock-gate lockfile (`jlc bom --lock`), when --lock is not given.
bom_lock = "bom.lock.json"
# Where `jlc add`, `library import-altium` and `library new-symbol` place
# converted libraries when --out is not given (a committed asset dir). Without
# this key, only `jlc add` defaults to ./akcli-parts; the `library` commands
# write into the current directory.
parts_dir = "hardware/libs"
# ERC waivers suppress a specific rule on a specific net, with a recorded reason. Each waiver is a
# [[erc_waiver]] table. Waived findings are downgraded to NOTE and tagged with the reason.
[[erc_waiver]]
net = "LED1_GPIO_RD"
rule = "driver_conflict"
reason = "LED1 shares the charger's open-drain STAT output by design; FW reads it as input"
# BOM policy: sourcing-coverage thresholds, stock floor, assembly economics
# and the structural refdes classes that never carry an orderable part.
[bom]
coverage_floor = 0.5 # BOM_MPN_COVERAGE fires below this (fitted parts)
coverage_min_parts = 10 # boards smaller than this skip the coverage check
min_stock = 1 # `jlc bom` low-stock floor
extended_fee = 3.0 # per-Extended-line feeder fee estimate (USD)
[bom.classes]
no_part = ["TP", "FID", "MH", "H", "LOGO"]
# Checker-agnostic waivers, applied centrally to EVERY checker's findings. `code` is a finding
# code or fnmatch glob; `severity` downgrades to note/info or drops with "off".
[[waiver]]
code = "PAIR_INCOMPLETE"
refs = ["USB_D_P"]
severity = "off"
reason = "single-ended debug tap by design"
# Check-family tuning: diff-pair/bus continuity and the group-clearance layout floor.
[check]
pairs = true # keep `--pairs` in the default check set
pair_suffixes = [["_P", "_N"]] # replaces the built-in suffix table
bus_min_family = 4 # BUS_GAP fires for families >= this size
group_clearance = 1000 # mils between functional groups (0 = off)
# Group-layout policy for `arrange --groups` (mils; per-invocation flags override).
[arrange]
group_margin = 200 # clearance between bundles inside a group
group_gap = 1000 # channel between group blocks, both axes
row_width = 4000 # wrap a group's internal shelf past this width
page_width = 20000 # pack blocks side by side, wrapping past this width