Visualization of toolchains

How do we want to visualize the toolchain? In principle, it roughly represents the workflow, so perhaps a flowchart is a possibility?

Here I would like to present an example of a toolchain with pcb design and 3D printed parts. Primarily as a basis for discussion.

Repository

The repository (folder) contains all the source files for creating the project. For better organization, it is divided into subfolders.

MCAD

The MCAD sub-directory contains all mechanical CAD design files.

ECAD

The ECAD sub-directory contains all design files for circuit boards.

Firmware

The firmware sub-directory contains the source code that will later be embedded in the hardware.

Documentation

The documentation contains all the necessary information to build the project and possibly documentation of the design process. It is written in a markup language, such as markdown, and a Static Site Generator (SSG) uses these files to generate files for a website (.html, .css).

FreeCAD

FreeCAD is used for mechanical CAD design parts. KiCad StepUp is used to exchange 3D design files with KiCAd and vice versa. As exhange format is a STEP-file used.

KiCAD

KiCAD is used for designing PCBs.

Cura

The exported STL files must be converted into machine-readable code (g-code) for the 3D-printer, for which Cura is used.

Git/git-lfs

git and git-lfs are used as versions control systems. Git can only show its full performance with text files. For better management of binary files (cad-files, images, videos) git-lfs is used. An important feature of git-lfs is the possibility to lock files, which helps to prevent merge conflicts with binary files. This can be useful when several people are working on the same repository.

GitLab

GitLab as a web application serves with version control system via Git for collaboration with others. In addition, it also offers an issue tracking system, web hosting for documentation (GitLab Pages) and can automate work with Continuous Integration and Continuous Delivery (CI/CD) via the pipeline.

CI/CD

The main task of CI/CD in this context is to maintain a consistent quality and automate repetitive work.

Static Site Generator

The documentation written in Markdown is converted into files that can be served as a web page via a web server.

Export MCAD

This is a script that can export all needed files from 3D-CAD files. In this case it is stl files for 3d printing and images of all 3D parts for documentation.

Export ECAD

This is a script that can export all files needed for the production of the PCB (gerbers, mask, pick and place, schematic, bill of materials (BOM).

Compile Firmware

This script compiles from the source code machine readable code.

Releases/Assets

Here all files generated by the pipeline are collected for further processing.

GitLab Pages

With gitlab Pages it is possible to host a website in gitlab itself. No additional webhoster is needed to present the project and its documentation.

2 Likes