General
High priority
Medium priority
- KiCad configuration manual
We need a brief document describing steps to adapt a KiCad installation to CERN environment (setting up libraries, generating BOM and assembly documentation).
- 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
- Editable pin table
Schematic library editor currently lists pins in read-only mode. It should be modified to enable changing the properties values.
- 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
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.
- Easier BOM exporter configuration in eeschema
Check a few standard locations, so the list of available plugins is populated automatically.
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.
- Selecting anchor for imported DXF files
Pcbnew place the imported DXF graphics according to the option selected in the import dialog and do not move it. For manual placement mode, there should be another radio button.
The imported graphics should be dragged by the DXF origin. It is especially important when a few DXF files are imported, as there are cases when the final output is not aligned, or the alignment is hard to achieve.
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
- Selecting line width or reusing one when importing a DXF file
In the current version all lines are thin, not sure where is the setting to change the imported lines width.
- 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
- High contrast mode for footprint editor
- Reset grid & auxiliary origin
It might be done via hot keys, but needs a menu entry.
- Clearer error messages for STEP export
STEP export fails if the board outline is not continuous, but it is not clear where the continuity breaks. Add an error message pointing to the faulty spot.
- 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.