General
High priority
Medium priority
- Automated Altium library conversion
The conversion process currently consists of two steps: running two Altium scripts (footprint conversion and symbol templates generation) and symbol library generation (using the database information and symbol templates).
It is easy to automate the symbol library generation, but running Altium scripts requires launching the software and a few clicks. Due to that, the library conversion process still involves a human and conversion is done upon a request.
Low priority
- ODB** or IPC-2581 (IPC-D-356?) export
Currently GenCAD export is sufficient, in the future it would be better to export layout in one of the two formats.
Eeschema
High priority
Medium priority
- Copy/paste (between different project sheets, possibly via system
clipboard)
Especially for drawings. One can export a drawing and import it to a schematic sheet, but is very cumbersome.
- Display field names
Now only the values are displayed, so for boolean type fields it is not clear what does it mean (e.g. "No" vs "Mounted: No").
- Place custom power symbols
Any symbol placed on a schematic sheet needs to be available in the symbol library, including power supply symbols. The power symbol library contains a limited set of voltages and usually is stored in a read-only file, making it even harded to add custom voltages. The most convenient solution would be to create a requested voltage power symbol and place in the schematic. It will be much easier to implement when the new schematic file format is in place.
Low priority
- Default fields for new components (symbol library editor)
Currently there are a few default fields (name, value, footprint), so for each new component others have to be added manually (e.g. datasheet link, mounted, tolerance).
These fields should be used by the BOM generator. A possible solution is to import .csv files with a list of pins and their properties.
There are external tools that already exploit this approach.
- Custom fields for worksheet templates
The fields might store only basic and predefined information (author/date/a few lines of comments). One should be able to add custom fields that could be displayed in a worksheet template (page layout), using e.g. FieldName format.
Pcbnew
High priority
- Object Inspector
Modifying a single property for a number of items is a tedious task that could be alleviated with this tool.
Medium priority
- Enable snapping to characteristic points for the measurement tool
It is hard to accurately measure distance relying solely on vision. Snapping could be enabled for other tools as well (e.g. drawing).
- Layer mapping when importing DXF files
Right now KiCad imports all DXF layers and places them on a selected layer, which is not always convenient. A dialog to select and map imported DXF layers to pcbnew layers would solve the problem.
- Export multiple PCB layers to a single DXF file
-
Improved dimensioning tools
It is a large package that would need a proper specification. Generally speaking, it would be great to have dimension lines associated with certain points, so the dimensions are automatically updated when the associated point coordinate changes.
There should be an option to change the relative text position.
Update: Tom is already working on this. -
DRC
KiCad and Altium DRC capabilities are two different worlds at the moment. Unfortunately, it might be a long process to introduce more complex DRC rules in KiCad, especially that it requires model refactor to
use the geometry library.Rule types:
- Track width/via size: min/preferred/max values, instead of a single one
- Net antennae (dangling tracks)
- Matched/max track length
- Component height
- Power plane/polygon connect style (direct/relief)
Principles: - Assigning priorities to rules
- More detailed target specification (net/net class/layer/board area/component/item type or properties? possibly combined using logical operators)
- Export/import rules
-
Enable plotting multiple layers to a single file
PCB designs often contain a small frame with additional informations about the board (e.g. layers or drill table) that could be included in all output files, if it is drawn on a dedicated layer.
Export board to a single DXF file using multiple layers.
- Tool to place an information about the board stack-up and used
drills.
Could be easily done with a Python script, but the board stack-up information requires adding such feature to KiCad first (model, UI).
- Improved footprint courtyard recognition
If a footprint courtyard contains other shapes than closed polygons, it is not correctly recognized by DRC. For some reason the CERN footprint libraries contain crosses that render the courtyard invalid during DRC.
- Push and Shover router
Add autofinish option.
Low priority
- Enable 'append board' function when pcbnew runs in project mode
- Reset grid & auxiliary origin
It might be done via hot keys, but needs a menu entry.
- Flex PCB support
Different DRC rules/layer sets for a selected region?
- Additional general purpose mechanical layers in pcbnew
Scripting
The two major roles of a scripting interface is to easily select items and modify their properties. It should also provide means to read/write files, ask the user for input using dialogs (doable with bare Python).
Example scripts:
- Verification
Check minimum annular ring for all pads and check if all pads have ratio equal to 1 (same size for copper and soldermask/pastemask).
Change all refdes text size/format if ICs or connectors (IC/J) and another if small discrete parts (R/C/L).
- Automatize tasks to do on each designs
All EDA numbers (or other project codes) are modified in one step for each working directory. This is a way to avoid invalid/incoherent numbers that could be manually updated in a few places, but not everywhere.
- Component renaming using custom rules (e.g. sorting by X/Y coordinates)
- Extract information for other tools
A routine to see all not mounted parts, so it is easier to see not mounted part on a PCB when the schematic is on several pages.
It also makes it easier to notice a mounted component in the middle of a group of not mounted parts, it is likely that the single mounted component should not be mounted too.
Bugs (to be confirmed and posted on the bug tracker)
- Create array does not work correctly when lowercase letters are used for requested range
- 'Invisible' texts should disappear not only after unchecking 'Hidden text' checkbox in the Render tab, but also after disabling the original layer visibility.
- When saving a footprint with a different name, the 'Value' field is not updated.
- 3D models might not be displayed until one opens the path configuration dialog and closes it.
- Opening the path configuration dialog causes round pads to be displayed as squares in the 3D viewer.