Slice Naming Convention
Slice modules follow a structured naming format to remain compact yet descriptive:
Slice_<FUNCTION>_(<ID>)_[<REVISION>]
General Rules
<FUNCTION>: A short, uppercase code that identifies the slice’s primary role (e.g.TEMPfor templates,PRTOfor prototyping,THRMfor thermocouple reading,DCMTfor DC motor control).<ID>: A concise identifier used only when multiple versions of a slice exist. This may reflect a specific sensor model (e.g.31855) for function cards or layout type (e.g.S2Lfor small 2-layer) and controller platform (e.g.NUCLfor Nucleo) for template boards.<REVISION>: An optional suffix (-r2,-revB, etc.) for tracking major hardware revisions or forks. Only used when divergence cannot be handled via standard versioning.
Additional guidance:
- If the slice has only one known version, no
<ID>is required.
Example:Slice_RLHT - If a slice is extended or forked into multiple variants, suffix the name to indicate:
- A different sensor or IC (e.g.
31856) - A different layout or platform (e.g.
NANO,NUCL, orS2L)
- A different sensor or IC (e.g.
The goal is to balance descriptive clarity with compact naming, supporting consistent tracking of hardware variants across repositories and documentation.
Variant Naming Patterns
🔌 Component-Based Slices
Used when multiple revisions of the function-specific slice exist with different hardware implementations:
| Example | Meaning |
|---|---|
Slice_THRM_6675 |
Thermocouple reader using MAX6675 |
Slice_THRM_31855 |
Uses MAX31855 |
Slice_THRM_31856 |
Uses MAX31856 |
🧩 Template/Generic Slices (by layout or controller)
Used for general-purpose template and prototyping slices that vary in size, complexity, or host MCU:
| Example | Meaning |
|---|---|
Slice_TEMP_NANO_S2L |
Small board, Arduino Nano, 2-layer template |
Slice_TEMP_NUCL_L4L |
Large board, STM32 Nucleo, 4-layer template |
Slice_PRTO_CONN_S2L |
Small 2-layer prototyping board with connectors |
Slice_PRTO_SMT_S2L |
Small 2-layer prototyping board with SMT components |
Note:
-
Template slices should specify the host platform (e.g.
NANO,NUCLEO) as most designs are tightly coupled to the specific MCU footprint. -
Prototyping slices (e.g.
PRTO) should be platform-agnostic when possible and designed to accommodate all currently supported platforms (e.g.NANOandNUCLEO32), unless the design intentionally targets a platform-specific feature or constraint. -
Always include board dimensions and layer count for hardware selection clarity.
🔄 Revision Tracking
For major design forks or internal revisions of the same variant:
| Example | Meaning |
|---|---|
Slice_THRM_31856-r2 |
Second revision of the 31856-based slice |
Slice_TEMP_NANO_S2L-r1 |
Initial rev of small Nano template |
Slice_TEMP_NANO_S2L-revB |
Parallel variant diverging from revA |
➡️ Use suffixes like -r2, -r3, etc. for serial revisions of the same design.
➡️ Use suffixes like -revB, -revC, etc. for parallel forks that share a function but differ in layout, constraints, or development path.
The preferred convention is to use a single Git repository and Semantic Versioning (SemVer) via tags/releases for minor design iterations and bugfixes (e.g.
v1.0.0,v1.1.1, etc.).
However, if a design change:
- Diverges significantly in layout, controller, or feature scope
- Needs to be developed in parallel with an existing slice
- Is intended to phase out or replace a legacy board gradually
- Or cannot be meaningfully versioned within the same repo
➡️ Then it should be assigned a unique suffix and placed in a separate repository.
This approach supports long-term clarity, traceability, and modular development while allowing flexibility during hardware iteration and community contribution.