Convert Figma logo to code with AI

KiCad logokicad-source-mirror

This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.

2,109
508
2,109
0

Top Related Projects

1,177

Horizon is a free EDA package

A powerful, innovative and intuitive EDA suite for everyone!

Fritzing desktop application

Quick Overview

KiCad is an open-source Electronic Design Automation (EDA) software suite for creating schematics and printed circuit board (PCB) layouts. It provides a comprehensive set of tools for electronic engineers and hobbyists to design, simulate, and prepare electronic circuits for manufacturing.

Pros

  • Free and open-source, with a large and active community
  • Cross-platform compatibility (Windows, macOS, Linux)
  • Extensive library of components and footprints
  • Powerful 3D visualization capabilities for PCB designs

Cons

  • Steeper learning curve compared to some commercial alternatives
  • Limited built-in simulation capabilities
  • Occasional stability issues, especially with large and complex designs
  • Some advanced features may require third-party plugins

Getting Started

To get started with KiCad:

  1. Download and install KiCad from the official website: https://www.kicad.org/download/
  2. Launch KiCad and create a new project
  3. Start with the schematic editor (Eeschema) to design your circuit
  4. Use the PCB editor (Pcbnew) to create your board layout
  5. Utilize the 3D viewer to visualize your design
  6. Export Gerber files for manufacturing

For detailed tutorials and documentation, visit the official KiCad documentation: https://docs.kicad.org/

Competitor Comparisons

1,177

Horizon is a free EDA package

Pros of Horizon

  • Integrated library management system with version control
  • Faster rendering and more responsive UI for large designs
  • Built-in 3D viewer with real-time updates

Cons of Horizon

  • Smaller user community and fewer available resources
  • Less mature and potentially less stable than KiCad
  • Limited cross-platform support (primarily Linux-focused)

Code Comparison

KiCad (C++):

void SCH_EDIT_FRAME::OnOpenLibrary( wxCommandEvent& event )
{
    wxString libName = SelectLibraryFromList();
    if( !libName.IsEmpty() )
        LoadLibrary( libName );
}

Horizon (C++):

void Core::open_library(const UUID &uu)
{
    auto lib = pool->get_library(uu);
    if (lib)
        open_library_window(lib);
}

Both projects use C++ for their core functionality. KiCad's codebase is larger and more complex, reflecting its longer development history and broader feature set. Horizon's code tends to be more modern and streamlined, with a focus on performance and efficiency.

A powerful, innovative and intuitive EDA suite for everyone!

Pros of LibrePCB

  • Modern, user-friendly interface with a focus on ease of use
  • Built-in library management system for efficient component organization
  • Cross-platform compatibility with native builds for Windows, macOS, and Linux

Cons of LibrePCB

  • Smaller community and fewer resources compared to KiCad
  • Limited advanced features and customization options
  • Fewer third-party libraries and plugins available

Code Comparison

KiCad (C++):

void SCH_EDIT_FRAME::OnOpenLibraryViewer( wxCommandEvent& event )
{
    LIB_VIEW_FRAME* viewlibframe = LIB_VIEW_FRAME::ShowLibraryViewer( this );
    viewlibframe->Raise();
}

LibrePCB (C++):

void SchematicEditor::openLibraryEditor() noexcept
{
    LibraryEditor* editor = new LibraryEditor(mWorkspace, mProject);
    editor->show();
}

Both projects use C++ for their core functionality. KiCad's codebase is more extensive and complex, reflecting its longer development history and broader feature set. LibrePCB's code tends to be more modern and streamlined, focusing on simplicity and maintainability. However, KiCad offers more advanced capabilities and customization options due to its larger codebase and community contributions.

Fritzing desktop application

Pros of Fritzing

  • More beginner-friendly with an intuitive interface
  • Excellent for prototyping and breadboard visualization
  • Includes a PCB fabrication service directly from the app

Cons of Fritzing

  • Limited advanced features for complex PCB design
  • Smaller component library compared to KiCad
  • Less suitable for professional or large-scale projects

Code Comparison

KiCad (C++):

void SCH_EDIT_FRAME::OnOpenPcbnew( wxCommandEvent& event )
{
    PROJECT* project = &Prj();
    wxFileName fn = Prj().AbsolutePath( m_CurrentSheet->GetScreen()->GetFileName() );
    fn.SetExt( PCB_FILE_EXT );
    wxString path = fn.GetFullPath();

Fritzing (C++/Qt):

void MainWindow::createZoomControls(SketchAreaWidget* parent) {
    ZoomControls * zoomControls = new ZoomControls(parent);
    connect(zoomControls, SIGNAL(zoomInSignal()), this, SLOT(zoomIn()));
    connect(zoomControls, SIGNAL(zoomOutSignal()), this, SLOT(zoomOut()));
    connect(zoomControls, SIGNAL(fitInWindowSignal()), this, SLOT(fitInWindow()));

Both projects use C++, with Fritzing leveraging Qt for its GUI. KiCad's code focuses on file handling and project management, while Fritzing's example shows GUI control implementation.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

KiCad README

For specific documentation about building KiCad, policies and guidelines, and source code documentation see the Developer Documentation website.

You may also take a look into the Wiki, the contribution guide.

For general information about KiCad and information about contributing to the documentation and libraries, see our Website and our Forum.

Build state

KiCad uses a host of CI resources.

GitLab CI pipeline status can be viewed for Linux and Windows builds of the latest commits.

Release status

latest released version(s) Release status

Files

  • AUTHORS.txt - The authors, contributors, document writers and translators list
  • CMakeLists.txt - Main CMAKE build tool script
  • copyright.h - A very short copy of the GNU General Public License to be included in new source files
  • Doxyfile - Doxygen config file for KiCad
  • INSTALL.txt - The release (binary) installation instructions
  • uncrustify.cfg - Uncrustify config file for uncrustify sources formatting tool
  • _clang-format - clang config file for clang-format sources formatting tool

Subdirectories

  • 3d-viewer - Sourcecode of the 3D viewer
  • bitmap2component - Sourcecode of the bitmap to PCB artwork converter
  • cmake - Modules for the CMAKE build tool
  • common - Sourcecode of the common library
  • cvpcb - Sourcecode of the CvPCB tool
  • demos - Some demo examples
  • doxygen - Configuration for generating pretty doxygen manual of the codebase
  • eeschema - Sourcecode of the schematic editor
  • gerbview - Sourcecode of the gerber viewer
  • include - Interfaces to the common library
  • kicad - Sourcecode of the project manager
  • libs - Sourcecode of KiCad utilities (geometry and others)
  • pagelayout_editor - Sourcecode of the pagelayout editor
  • patches - Collection of patches for external dependencies
  • pcbnew - Sourcecode of the printed circuit board editor
  • plugins - Sourcecode for the 3D viewer plugins
  • qa - Unit testing framework for KiCad
  • resources - Packaging resources such as bitmaps and operating system specific files
  • scripting - Python integration for KiCad
  • thirdparty - Sourcecode of external libraries used in KiCad but not written by the KiCad team
  • tools - Helpers for developing, testing and building
  • translation - Translation data files (managed through Weblate for most languages)
  • utils - Small utils for KiCad, e.g. IDF, STEP, and OGL tools and converters