Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Sign in
C
CERN BE-CO-HT contribution to KiCad
  • Project
    • Project
    • Details
    • Activity
    • Cycle Analytics
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • Wiki
    • Wiki
  • image/svg+xml
    Discourse
    • Discourse
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Create a new issue
  • Issue Boards
  • Projects
  • CERN BE-CO-HT contribution to KiCad
  • Wiki
  • Dem remarks

Dem remarks

Last edited by Projects Oct 29, 2019
Page history

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.
Clone repository
  • Dem remarks
  • Documents
  • Home
  • News
  • Outdated not used anymore
  • Ui improvements
  • Buildpns
  • Donor recognition
  • Faq
  • Geometryspec
  • Documents
    • Articles
    • Project attachments
    • Push and shove blueprint
    • Tool framework specification
    • View component specification
More Pages

New Wiki Page

Tip: You can specify the full path for the new file. We will automatically create any missing directories.