# KiBot configuration file for Asymworks_KiBot Template
# KiCad 9.0

kibot:
  version: 1

variants: []

# ============================================================================
# Output Groups

groups:

  # Top-Level Groups =========================================================

  # Pre-Process Group (generates Notes and Netlist for set_text_variables) ---
  - name: preprocess_group
    outputs:
      - @NETLIST_OUTPUT@
      - @TXT_SCH_NOTES_OUTPUT@
      - @TXT_FAB_NOTES_OUTPUT@
      - @TXT_ASSY_NOTES_OUTPUT@
      - tables

  # Draft Outputs Group (used in DRAFT state only) ---------------------------
  - name: draft_group
    outputs:
      - @NETLIST_OUTPUT@
      - @TXT_SCH_NOTES_OUTPUT@
      - @PDF_SCHEMATIC_OUTPUT@
      - @CSV_BOM_OUTPUT@
      - @HTML_BOM_OUTPUT@

  # All Outputs Group (used in all other states) -----------------------------
  - name: all_group
    outputs:
      - bom
      - renders
      - models
      - fab
      - jlcpcb
      - panels
      - assembly
      - @PDF_SCHEMATIC_OUTPUT@
      - @HTML_NAV_RES_OUTPUT@

  # All Outputs Group, including KiRi (not enabled by default) ---------------
  - name: all_group_kiri
    outputs:
      - bom
      - renders
      - models
      - fab
      - jlcpcb
      - panels
      - assembly
      - @PDF_SCHEMATIC_OUTPUT@
      - @HTML_KIRI_OUTPUT@
      - @HTML_NAV_RES_OUTPUT@

  # Panel Fabrication Outputs Group (not used in DRAFT state) ----------------
  - name: panel_fab_jlcpcb_group
    outputs: []

  # Output Sub-Groups ========================================================

  # Bill of Material Outputs -------------------------------------------------
  - name: bom
    outputs:
      - @CSV_BOM_OUTPUT@
      - @HTML_BOM_OUTPUT@
      - @HTML_IBOM_OUTPUT@

  # PCB Render Outputs -------------------------------------------------------
  - name: renders
    outputs:
      - @PCBDRAW_2D_TOP_PCB_OUTPUT@
      - @PCBDRAW_2D_BOT_PCB_OUTPUT@
      - @PNG_3D_VIEWER_TOP@
      - @PNG_3D_VIEWER_BOT@
      - @PNG_3D_VIEWER_ANGLED_TOP@
      - @PNG_3D_VIEWER_ANGLED_BOT@
      - @BLENDER_3D_TOP@
      - @BLENDER_3D_BOT@
      - @BLENDER_3D_ANGLED_TOP@
      - @BLENDER_3D_ANGLED_BOT@

  # PCB 3d Model Outputs -----------------------------------------------------
  - name: models
    outputs:
      - @STEP_OUTPUT@
      - @GLB_OUTPUT@

  # Fabrication Outputs ------------------------------------------------------
  - name: fab
    outputs:
      - @GERBER_OUTPUT@
      - @EXCELLON_DRILL_OUTPUT@
      - @ODB_OUTPUT@
      - @PDF_DRILL_MAP_OUTPUT@
      - @PDF_FABRICATION_OUTPUT@
      - @ZIP_COMPRESS_FAB_OUTPUT@

  - name: tables
    outputs:
      - @CSV_COMP_COUNT_OUPUT@
      - @CSV_IMPEDANCE_TABLE_OUTPUT@
      - @CSV_DRILL_TABLE_OUTPUT@
      - testpoints

  - name: testpoints
    outputs:
      - @CSV_TP_OUTPUT@
      - @CSV_TP_TOP_OUTPUT@
      - @CSV_TP_BOTTOM_OUTPUT@

  # JLCPCB Fabrication and Assembly Outputs ----------------------------------
  - name: jlcpcb
    outputs:
      - @JLCPCB_GERBER_OUTPUT@
      - @JLCPCB_FABPACK_OUTPUT@
      - @JLCPCB_BOM_OUTPUT@
      - @JLCPCB_CPL_OUTPUT@

  # Assembly Outputs ---------------------------------------------------------
  - name: assembly
    outputs:
      - @CSV_POS_OUTPUT@
      - @PDF_ASSEMBLY_OUTPUT@

  # Panelization Outputs -----------------------------------------------------
  - name: panels
    outputs: [ @PANEL_800_OUTPUT@ ]

# ============================================================================
# Imports

import:

  # Global Parameters ========================================================
  - file: kibot_globals.yaml
    definitions:
      OUTPUT_DIR: @OUTPUT_DIR@
      LAYER_DNP_TOP: @LAYER_DNP_TOP@
      LAYER_DNP_BOT: @LAYER_DNP_BOTTOM@

  # Filters ==================================================================
  
  - file: kibot_filt_field_rename.yaml
    definitions:
      NAME: @FILT_FIELD_RENAME@
      COMMENT: Rename fields
      MPN_FIELD: @MPN_FIELD@
      MAN_FIELD: @MAN_FIELD@

  - file: kibot_filt_testpoints.yaml
    definitions:
      NAME: @FILT_TP_ONLY@
      COMMENT: Include only testpoints

  - file: kibot_filt_exclude_testpoints.yaml
    definitions:
      NAME: @FILT_TP_EXCLUDE@
      COMMENT: Exclude only testpoints
    
  - file: kibot_filt_testpoints.yaml
    definitions:
      NAME: @FILT_TP_TOP_ONLY@
      COMMENT: Select only top testpoints
      EXCLUDE_BOTTOM: true
      EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"

  - file: kibot_filt_testpoints.yaml
    definitions:
      NAME: @FILT_TP_BOTTOM_ONLY@
      COMMENT: Select only bottom testpoints
      EXCLUDE_TOP: true
      EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"

  - file: kibot_filt_lcsc_parts.yaml
    definitions:
      NAME: @FILT_LCSC_PARTS@
      COMMENT: Only parts with LCSC Part Number

  # Preflights ===============================================================
  - file: kibot_pre_set_text_variables.yaml
    definitions:
      PROJECT_CODE: @PROJECT_CODE@
      ASSEMBLY_NUMBER: @ASSEMBLY_NUMBER@
      ASSEMBLY_NAME: @ASSEMBLY_NAME@
      COMPANY: @COMPANY@
      DESIGNER: @DESIGNER@
      SCRIPTS_DIR: @SCRIPTS_DIR@
      FABRICATION_DIR: @FABRICATION_DIR@
      ASSEMBLY_DIR: @ASSEMBLY_DIR@

  # Generate ERC Report
  - file: kibot_pre_erc_report.yaml
    definitions:
      DIR: @REPORT_DIR@

  # Generate DRC Report
  - file: kibot_pre_drc_report.yaml
    definitions:
      CHECK_ZONE_FILLS: @CHECK_ZONE_FILLS@
      DIR: @REPORT_DIR@

  # Draw stackup table in PCB. Needs gerber output
  - file: kibot_pre_draw_stackup.yaml
    definitions:
      GERBER_OUTPUT: @GERBER_OUTPUT@
      NOTE: @STACKUP_TABLE_NOTE@

  # Include tables for PCB and Assembly Drawings
  - file: kibot_pre_include_table.yaml
    definitions:
      NAME_TP_TOP: @CSV_TP_TOP_OUTPUT@
      NAME_TP_BOTTOM: @CSV_TP_BOTTOM_OUTPUT@
      NAME_COMP_COUNT: @CSV_COMP_COUNT_OUPUT@
      NAME_CSV_DRILL_TABLE: @CSV_DRILL_TABLE_OUTPUT@
      NAME_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@

  # Generated Outputs ========================================================

  # Schematic Netlist --------------------------------------------------------
  - file: kibot_out_netlist.yaml
    definitions:
      NAME: @NETLIST_OUTPUT@
      COMMENT: Schematic netlist in KiCad format

  # Drawings in PDF format ---------------------------------------------------
  - file: kibot_out_pdf_schematic.yaml
    definitions:
      NAME: @PDF_SCHEMATIC_OUTPUT@
      COMMENT: Schematic in PDF format
      COLOR_THEME: @COLOR_THEME@
      DIR: @SCHEMATIC_DIR@
      DEFAULT_FONT: 'Arial Narrow'
      SHEET_WKS: @SHEET_WKS_SCH@

  # Bills of Materials (BOMs) ------------------------------------------------
  - file: kibot_out_csv_bom.yaml
    definitions:
      NAME: @CSV_BOM_OUTPUT@
      COMMENT: Bill of Materials in CSV format
      DIR: @ASSEMBLY_DIR@
      IPN_FIELD: @IPN_FIELD@
      MPN_FIELD: @MPN_FIELD@
      MAN_FIELD: @MAN_FIELD@

  - file: kibot_out_html_bom.yaml
    definitions:
      NAME: @HTML_BOM_OUTPUT@
      COMMENT: Bill of Materials in HTML format
      DIR: @ASSEMBLY_DIR@
      IPN_FIELD: @IPN_FIELD@
      MPN_FIELD: @MPN_FIELD@
      MAN_FIELD: @MAN_FIELD@

  - file: kibot_out_html_ibom.yaml
    definitions:
      NAME: @HTML_IBOM_OUTPUT@
      COMMENT: Bill of Materials in HTML format
      DIR: @ASSEMBLY_DIR@
      IPN_FIELD: @IPN_FIELD@
      MPN_FIELD: @MPN_FIELD@
      MAN_FIELD: @MAN_FIELD@

  # Generate Webpage with Diff's ---------------------------------------------
  - file: kibot_out_html_kiri.yaml
    definitions:
      NAME: @HTML_KIRI_OUTPUT@
      COMMENT: KiRI webpage
      DIR: kiri

  # Generate HTML Navigation of Outputs --------------------------------------
  - file: kibot_out_navigate_results.yaml
    definitions:
      NAME: @HTML_NAV_RES_OUTPUT@
      COMMENT: Results webpage in HTML format
      DIR: html
      TITLE: '@ASSEMBLY_NUMBER@ (@ASSEMBLY_NAME@)'
      # LOGO: @LOGO@
      # LOGO_URL: @GIT_URL@

  # PCB 2D Renders (Bare Board) ------------------------------------------
  - file: kibot_out_pcbdraw.yaml
    definitions:
      NAME: @PCBDRAW_2D_TOP_PCB_OUTPUT@
      COMMENT: PCB 2D Render (Top)
      DIR: @RENDER_DIR@
      FORMAT: svg
      BOTTOM: false
      COMPONENTS: none

  - file: kibot_out_pcbdraw.yaml
    definitions:
      NAME: @PCBDRAW_2D_BOT_PCB_OUTPUT@
      COMMENT: PCB 2D Render (Bottom)
      DIR: @RENDER_DIR@
      FORMAT: svg
      BOTTOM: true
      COMPONENTS: none

  # PCBA 3D Renders (Populated Board; KiCad Viewer) --------------------------
  - file: kibot_out_png_3d_viewer.yaml
    definitions:
      NAME: @PNG_3D_VIEWER_TOP@
      COMMENT: Top 3D viewer PCB render in PNG format
      DIR: @RENDER_DIR@
      SUFFIX: top
      VIEW: top
      KEY_COLOR: '@KEY_COLOR@'

  - file: kibot_out_png_3d_viewer.yaml
    definitions:
      NAME: @PNG_3D_VIEWER_BOT@
      COMMENT: Bottom 3D viewer PCB render in PNG format
      DIR: @RENDER_DIR@
      SUFFIX: bottom
      VIEW: bottom
      KEY_COLOR: '@KEY_COLOR@'

  - file: kibot_out_png_3d_viewer.yaml
    definitions:
      NAME: @PNG_3D_VIEWER_ANGLED_TOP@
      COMMENT: Top (angled) 3D viewer PCB render in PNG format
      DIR: @RENDER_DIR@
      SUFFIX: angled_top
      VIEW: top
      ROTATE_X: @3D_VIEWER_ROT_X@
      ROTATE_Y: @3D_VIEWER_ROT_Y@
      ROTATE_Z: @3D_VIEWER_ROT_Z@
      ZOOM: @3D_VIEWER_ZOOM@
      KEY_COLOR: '@KEY_COLOR@'

  - file: kibot_out_png_3d_viewer.yaml
    definitions:
      NAME: @PNG_3D_VIEWER_ANGLED_BOT@
      COMMENT: Bottom (angled) 3D viewer PCB render in PNG format
      DIR: @RENDER_DIR@
      SUFFIX: angled_bottom
      VIEW: bottom
      ROTATE_X: @3D_VIEWER_ROT_X@
      ROTATE_Y: @3D_VIEWER_ROT_Y@
      ROTATE_Z: -@3D_VIEWER_ROT_Z@
      ZOOM: @3D_VIEWER_ZOOM@
      KEY_COLOR: '@KEY_COLOR@'

  # PCBA 3D Renders (Populated Board; Blender) -------------------------------
  - file: kibot_out_blender.yaml
    definitions:
      NAME: @BLENDER_3D_TOP@
      COMMENT: High Quality 3D Render (Top)
      DIR: @RENDER_DIR@
      VIEW: top
      ROTATE_X: 0
      ROTATE_Y: 0
      ROTATE_Z: 0
      SAMPLES: @BLENDER_SAMPLES@
      RESOLUTION_X: @BLENDER_RESOLUTION_X@
      RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
      TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
      DNF_FILTER: @RENDER_DNF_FILTER@
      BACK_LIGHT: 0
      POINT_LIGHT: 0.001

  - file: kibot_out_blender.yaml
    definitions:
      NAME: @BLENDER_3D_BOT@
      COMMENT: High Quality 3D Render (Bottom)
      DIR: @RENDER_DIR@
      VIEW: bottom
      ROTATE_X: 0
      ROTATE_Y: 0
      ROTATE_Z: 0
      SAMPLES: @BLENDER_SAMPLES@
      RESOLUTION_X: @BLENDER_RESOLUTION_X@
      RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
      TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
      DNF_FILTER: @RENDER_DNF_FILTER@
      BACK_LIGHT: 0
      POINT_LIGHT: 0.001

  - file: kibot_out_blender.yaml
    definitions:
      NAME: @BLENDER_3D_ANGLED_TOP@
      COMMENT: High Quality 3D Render (Angled Top)
      DIR: @RENDER_DIR@
      VIEW: top
      ROTATE_X: @BLENDER_ROT_X@
      ROTATE_Y: @BLENDER_ROT_Y@
      ROTATE_Z: @BLENDER_ROT_Z@
      SAMPLES: @BLENDER_SAMPLES@
      RESOLUTION_X: @BLENDER_RESOLUTION_X@
      RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
      TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
      DNF_FILTER: @RENDER_DNF_FILTER@
      BACK_LIGHT: 1
      POINT_LIGHT: 0

  - file: kibot_out_blender.yaml
    definitions:
      NAME: @BLENDER_3D_ANGLED_BOT@
      COMMENT: High Quality 3D Render (Angled Bottom)
      DIR: @RENDER_DIR@
      VIEW: bottom
      ROTATE_X: -@BLENDER_ROT_X@
      ROTATE_Y: @BLENDER_ROT_Y@
      ROTATE_Z: @BLENDER_ROT_Z@
      SAMPLES: @BLENDER_SAMPLES@
      RESOLUTION_X: @BLENDER_RESOLUTION_X@
      RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
      TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
      DNF_FILTER: @RENDER_DNF_FILTER@
      BACK_LIGHT: 1
      POINT_LIGHT: 0

  # STEP File ----------------------------------------------------------------
  - file: kibot_out_3d_model.yaml
    definitions:
      NAME: @STEP_OUTPUT@
      COMMENT: PCB 3D model in STEP format
      FORMAT: step
      DIR: @MODELS_DIR@
      INCLUDE_SILKSCREEN: false
      INCLUDE_SOLDERMASK: false
      INCLUDE_TRACKS: false

  - file: kibot_out_3d_model.yaml
    definitions:
      NAME: @GLB_OUTPUT@
      COMMENT: PCB 3D model in GLB/gITF format
      FORMAT: glb
      DIR: @MODELS_DIR@
      INCLUDE_SILKSCREEN: true
      INCLUDE_SOLDERMASK: false
      INCLUDE_TRACKS: false

  # Fabrication Files (Non-Vendor Specific) ----------------------------------
  - file: kibot_out_gerber.yaml
    definitions:
      NAME: @GERBER_OUTPUT@
      COMMENT: Gerbers in GBR format
      DIR: @GERBERS_DIR@
      PLOT_REFS: @PLOT_REFS@
      PROTEL_EXTENSIONS: @PROTEL_EXTENSIONS@
      SUBTRACT_MASK: @SUBTRACT_MASK@

  # Excellon Drill
  - file: kibot_out_excellon_drill.yaml
    definitions:
      NAME: @EXCELLON_DRILL_OUTPUT@
      COMMENT: Drill in Excellon format
      DIR: @GERBERS_DIR@
      METRIC_UNITS: @EXCELLON_METRIC_UNITS@

  # ODB++
  - file: kibot_out_odb.yaml
    definitions:
      NAME: @ODB_OUTPUT@
      COMMENT: ODB++ in ZIP format
      DIR: @FABRICATION_DIR@

  # PDF Drill Map
  - file: kibot_out_excellon_drill.yaml
    definitions:
      NAME: @PDF_DRILL_MAP_OUTPUT@
      COMMENT: Drill Map in PDF format
      DIR: @GERBERS_DIR@
      METRIC_UNITS: @EXCELLON_METRIC_UNITS@
      GENERATE_DRILL: false
      PTH_NPTH: @GROUP_PTH_NPTH_DRL@
      MAP_FORMAT: pdf

  # CSV Drill Table
  - file: kibot_out_csv_drill_table.yaml
    definitions:
      NAME: @CSV_DRILL_TABLE_OUTPUT@
      COMMENT: Drill Table in CSV format
      DIR: @FAB_DRILL_TABLES_DIR@
      PTH_NPTH: '@GROUP_PTH_NPTH@'
      GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@

  # CSV Component Placement File
  - file: kibot_out_csv_position.yaml
    definitions:
      NAME: @CSV_POS_OUTPUT@
      COMMENT: Position file in CSV format
      DIR: @ASSEMBLY_DIR@

  # CSV Test Point Files
  - file: kibot_out_csv_testpoints.yaml
    definitions:
      NAME: @CSV_TP_OUTPUT@
      COMMENT: Testpoint report in CSV format
      DIR: @TESTPOINTS_DIR@
      EXCLUDE_FILTER: @FILT_TP_ONLY@

  - file: kibot_out_csv_testpoints_simple.yaml
    definitions:
      NAME: @CSV_TP_TOP_OUTPUT@
      COMMENT: Top testpoint report in CSV format
      DIR: @TESTPOINTS_DIR@
      SUFFIX: -top
      EXCLUDE_FILTER: @FILT_TP_TOP_ONLY@

  - file: kibot_out_csv_testpoints_simple.yaml
    definitions:
      NAME: @CSV_TP_BOTTOM_OUTPUT@
      COMMENT: Bottom testpoint report in CSV format
      DIR: @TESTPOINTS_DIR@
      SUFFIX: -bottom
      EXCLUDE_FILTER: @FILT_TP_BOTTOM_ONLY@

  # Fabrication and Assembly Drawings
  - file: kibot_out_pdf_fabrication.yaml
    definitions:
      NAME: @PDF_FABRICATION_OUTPUT@
      COMMENT: Fabrication document in PDF format
      DIR: @FABRICATION_DIR@
      COLOR_THEME: @COLOR_THEME@
      SHEET_WKS: @SHEET_WKS_PCB@
      SCALING: @FAB_SCALING@
      PTH_NPTH: '@GROUP_PTH_NPTH@'
      GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@
      FAB_EXCLUDE_FILTER: @FILT_TP_ONLY@
      LAYER_DRILL_MAP: @LAYER_DRILL_MAP@
      LAYER_TP_LIST_TOP: @LAYER_TP_LIST_TOP@
      LAYER_TP_LIST_BOTTOM: @LAYER_TP_LIST_BOTTOM@
      NAME_TP_TOP: @CSV_TP_TOP_OUTPUT@
      NAME_TP_BOTTOM: @CSV_TP_BOTTOM_OUTPUT@
      NAME_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@
      NAME_DRILL_TABLE: @CSV_DRILL_TABLE_OUTPUT@

  - file: kibot_out_pdf_assembly.yaml
    definitions:
      NAME: @PDF_ASSEMBLY_OUTPUT@
      COMMENT: Assembly document in PDF format
      DIR: @ASSEMBLY_DIR@
      COLOR_THEME: @COLOR_THEME@
      SHEET_WKS: @SHEET_WKS_ASSY@
      SCALING: @ASSEMBLY_SCALING@
      FAB_EXCLUDE_FILTER: @FILT_TP_EXCLUDE@
      LAYER_TITLE_PAGE: @LAYER_TITLE_PAGE@
      LAYER_ASSEMBLY_TEXT_TOP: @LAYER_ASSEMBLY_TEXT_TOP@
      LAYER_ASSEMBLY_TEXT_BOTTOM: @LAYER_ASSEMBLY_TEXT_BOTTOM@
      LAYER_DNP_CROSS_TOP: @LAYER_DNP_CROSS_TOP@
      LAYER_DNP_CROSS_BOTTOM: @LAYER_DNP_CROSS_BOTTOM@
      NAME_COMP_COUNT: @CSV_COMP_COUNT_OUPUT@

  # Zip File of Fabrication Data
  - file: kibot_out_compress_fab.yaml
    definitions:
      NAME: @ZIP_COMPRESS_FAB_OUTPUT@
      COMMENT: Generates a ZIP file with gerbers, drill and fabrication document
      DIR: @FABRICATION_DIR@
      GERBER_OUTPUT: @GERBER_OUTPUT@
      DRILL_MAP_OUTPUT: @PDF_DRILL_MAP_OUTPUT@
      DRILL_OUTPUT: @EXCELLON_DRILL_OUTPUT@
      FABRICATION_OUTPUT: @PDF_FABRICATION_OUTPUT@

  # Fabrication and Assembly Files (JLCPCB) ----------------------------------
  - file: kibot_out_gerber.yaml
    definitions:
      NAME: @JLCPCB_GERBER_OUTPUT@
      COMMENT: Gerbers in GBR format for JLCPCB
      DIR: @JLCPCB_GERBERS_DIR@
      PLOT_REFS: true
      PROTEL_EXTENSIONS: true
      SUBTRACT_MASK: false

  - file: kibot_out_jlcpcb_fabpack.yaml
    definitions:
      NAME: @JLCPCB_FABPACK_OUTPUT@
      COMMENT: Zipped Fabpack for JLCPCB
      DIR: @JLCPCB_FAB_DIR@
      GERBER_OUTPUT: @JLCPCB_GERBER_OUTPUT@
      DRILL_OUTPUT: @EXCELLON_DRILL_OUTPUT@

  - file: kibot_out_jlcpcb_bom.yaml
    definitions:
      NAME: @JLCPCB_BOM_OUTPUT@
      COMMENT: Bill of Materials for JLCPCB
      DIR: @JLCPCB_ASSY_DIR@
      EXCLUDE_FILTER: @FILT_LCSC_PARTS@

  - file: kibot_out_jlcpcb_cpl.yaml
    definitions:
      NAME: @JLCPCB_CPL_OUTPUT@
      COMMENT: Component Placement File for JLCPCB
      DIR: @JLCPCB_ASSY_DIR@
      EXCLUDE_FILTER: @FILT_LCSC_PARTS@

  # Notes and Reports --------------------------------------------------------
  - file: kibot_out_csv_report.yaml
    definitions:
      NAME: @CSV_COMP_COUNT_OUPUT@
      COMMENT: Component report (count) in CSV format
      DIR: @ASSEMBLY_DIR@
      OUTPUT_ID: components_count
      TEMPLATE: total_components

  - file: kibot_out_csv_report.yaml
    definitions:
      NAME: @CSV_IMPEDANCE_TABLE_OUTPUT@
      COMMENT: Impedance table in CSV format
      DIR: @FABRICATION_DIR@
      OUTPUT_ID: impedance_table
      TEMPLATE: @REPORT_TEMPLATE_DIR@/impedance_table.txt

  - file: kibot_out_txt_report.yaml
    definitions:
      NAME: @TXT_SCH_NOTES_OUTPUT@
      COMMENT: Schematic notes in TXT format
      DIR: @SCHEMATIC_DIR@
      OUTPUT_ID: schematic_notes
      TEMPLATE: @REPORT_TEMPLATE_DIR@/schematic_notes.txt

  - file: kibot_out_txt_report.yaml
    definitions:
      NAME: @TXT_FAB_NOTES_OUTPUT@
      COMMENT: Fabrication notes in TXT format
      DIR: @FABRICATION_DIR@
      OUTPUT_ID: fabrication_notes
      TEMPLATE: @REPORT_TEMPLATE_DIR@/fabrication_notes.txt

  - file: kibot_out_txt_report.yaml
    definitions:
      NAME: @TXT_ASSY_NOTES_OUTPUT@
      COMMENT: Assembly notes in TXT format
      DIR: @ASSEMBLY_DIR@
      OUTPUT_ID: fabrication_notes
      TEMPLATE: @REPORT_TEMPLATE_DIR@/assembly_notes.txt

  # Panelization Outputs -----------------------------------------------------
  - file: kibot_out_panelize.yaml
    definitions:
      NAME: @PANEL_800_OUTPUT@
      DIR: '@PANELS_DIR@/panel-800'
      CONFIG: '@PANEL_800_CONFIG@'
      TITLE: '@PANEL_800_TITLE@'

# ============================================================================
# Definitions

...
definitions:

  # Project Metadata =========================================================
  PROJECT_CODE: P99
  ASSEMBLY_NUMBER: A99-9000
  ASSEMBLY_NAME: Assembly Name
  GIT_URL: /jkrauss/Test_4

  COMPANY: Asymworks, LLC
  DESIGNER: JPK

  DWG_NUMBER_SCH: S99-9000
  DWG_TITLE_SCH: Schematic, Assembly Name
  DWG_NUMBER_PCB: P99-9000
  DWG_TITLE_PCB: PCB, Assembly Name
  DWG_TITLE_ASSY: PCB Assembly, Assembly Name

  # Panel Configurations -----------------------------------------------------
  PANEL_800_OUTPUT: panel_801
  PANEL_800_CONFIG: '@PANELS_DIR@/panel-800.json'
  PANEL_800_TITLE: Panel Fabrication (Panel -800)

  # Preflight ================================================================

  CHECK_ZONE_FILLS: false
  STACKUP_TABLE_NOTE: external layer thicknesses are specified after plating

  # BOM ======================================================================

  IPN_FIELD: 'Asymworks IPN'
  MPN_FIELD: 'Manufacturer PN'
  MAN_FIELD: 'Manufacturer'

  # Drill Table and Drill Map Parameters =====================================

  GROUP_ROUND_SLOTS: true  # whether or not to group round holes and slots
  GROUP_PTH_NPTH: 'no'  # for drill tables (CSV, PCB Print)
  GROUP_PTH_NPTH_DRL: false  # for .drl files

  # Gerber Parameters ========================================================

  PLOT_REFS: true # reference designators
  PROTEL_EXTENSIONS: false # use Protel extensions
  SUBTRACT_MASK: false # subtract Solder Mask from Silkscreen
  EXCELLON_METRIC_UNITS: true # use Metric units for Excellon drill file

  # References to exclude from testpoint highlighting ========================
  
  TP_EXCLUDE_REFS: '[MB*]' # for components on the PCB but not on the schematic

  # Schematic parameters =====================================================

  COLOR_THEME: Altium_Theme
  SHEET_WKS_SCH: templates/Asymworks_SCH.kicad_wks
  SHEET_WKS_PCB: KIPRJMOD/templates/Asymworks_PCB.kicad_wks
  SHEET_WKS_ASSY: KIPRJMOD/templates/Asymworks_PCBA.kicad_wks
  FAB_SCALING: 1
  ASSEMBLY_SCALING: 1

  # 3D Render parameters =====================================================

  RENDER_DNF_FILTER: _kibom_dnf_Config

  3D_VIEWER_ROT_X: 2
  3D_VIEWER_ROT_Y: -1
  3D_VIEWER_ROT_Z: 1
  3D_VIEWER_ZOOM: -1
  KEY_COLOR: '#00FF00' # Background color to remove. Use a color different from your PCB

  BLENDER_SAMPLES: 20 # Overridden to 2 samples for WORKING state by CI Script
  BLENDER_ROT_X: 30
  BLENDER_ROT_Y: 10
  BLENDER_ROT_Z: 10

  BLENDER_RESOLUTION_X: 1500
  BLENDER_RESOLUTION_Y: 1500
  BLENDER_TEXTURE_DPI: 1031.0

  # Directories ==============================================================

  # Root
  OUTPUT_DIR: ./

  # Relative to root
  REPORT_DIR: reports
  SCHEMATIC_DIR: schematic
  MANUFACTURING_DIR: mfg
  ASSEMBLY_DIR: '@MANUFACTURING_DIR@/assembly'
  FABRICATION_DIR: '@MANUFACTURING_DIR@/fab'
  GERBERS_DIR: '@FABRICATION_DIR@/gerbers'
  FAB_DRILL_TABLES_DIR: '@FABRICATION_DIR@/drill-tables'
  TESTING_DIR: test
  TESTPOINTS_DIR: '@TESTING_DIR@/testpoints'
  RESOURCES_DIR: kibot
  MODELS_DIR: models
  RENDER_DIR: renders
  REPORT_TEMPLATE_DIR: '@RESOURCES_DIR@/templates'
  SCRIPTS_DIR: '@RESOURCES_DIR@/scripts'
  PANELS_DIR: panels
  PANEL_FAB_DIR: '@FABRICATION_DIR@/panels'
  JLCPCB_FAB_DIR: '@MANUFACTURING_DIR@/jlcpcb'
  JLCPCB_ASSY_DIR: '@MANUFACTURING_DIR@/jlcpcb'
  JLCPCB_GERBERS_DIR: '@MANUFACTURING_DIR@/jlcpcb/gerbers'

  # Layer Names - should match user-defined names in the PCB.  ===============

  LAYER_TITLE_PAGE: AssyTitlePage
  LAYER_DNP_TOP: F.DNP
  LAYER_DNP_BOTTOM: B.DNP
  LAYER_DRILL_MAP: DrillMap
  LAYER_TP_LIST_TOP: F.TestPointList
  LAYER_TP_LIST_BOTTOM: B.TestPointList
  LAYER_ASSEMBLY_TEXT_TOP: F.AssemblyText
  LAYER_ASSEMBLY_TEXT_BOTTOM: B.AssemblyText
  LAYER_DNP_CROSS_TOP: F.DNP
  LAYER_DNP_CROSS_BOTTOM: B.DNP

  # Filter Names =============================================================

  FILT_FIELD_RENAME: field_rename
  FILT_LCSC_PARTS: only_lcsc_parts
  FILT_TP_ONLY: only_testpoints
  FILT_TP_EXCLUDE: exclude_testpoints
  FILT_TP_TOP_ONLY: only_testpoints_top
  FILT_TP_BOTTOM_ONLY: only_testpoints_bottom

  # Output Names  ============================================================

  NETLIST_OUTPUT: netlist

  PDF_SCHEMATIC_OUTPUT: pdf_schematic
  PDF_FABRICATION_OUTPUT: pdf_fabrication
  PDF_ASSEMBLY_OUTPUT: pdf_assembly

  CSV_BOM_OUTPUT: csv_bom
  HTML_IBOM_OUTPUT: html_bom_interactive
  HTML_BOM_OUTPUT: html_bom
  CSV_COMP_COUNT_OUPUT: csv_comp_count
  CSV_IMPEDANCE_TABLE_OUTPUT: csv_impedance_table

  GERBER_OUTPUT: gbr_gerbers
  ODB_OUTPUT: zip_odb
  EXCELLON_DRILL_OUTPUT: drl_excellon
  PDF_DRILL_MAP_OUTPUT: pdf_drill_map
  DXF_DRILL_MAP_OUTPUT: dxf_drill_map
  CSV_DRILL_TABLE_OUTPUT: csv_drill_table
  CSV_POS_OUTPUT: csv_position

  CSV_TP_OUTPUT: csv_testpoints
  CSV_TP_TOP_OUTPUT: csv_testpoints_top
  CSV_TP_BOTTOM_OUTPUT: csv_testpoints_bottom

  ZIP_COMPRESS_FAB_OUTPUT: zip_compress_fab

  STEP_OUTPUT: step
  GLB_OUTPUT: glb

  PCBDRAW_2D_TOP_PCB_OUTPUT: pcbdraw_top
  PCBDRAW_2D_BOT_PCB_OUTPUT: pcbdraw_bottom

  PNG_3D_VIEWER_TOP: png_3d_viewer_top
  PNG_3D_VIEWER_BOT: png_3d_viewer_bottom
  PNG_3D_VIEWER_ANGLED_TOP: png_3d_viewer_angled_top
  PNG_3D_VIEWER_ANGLED_BOT: png_3d_viewer_angled_bottom

  BLENDER_3D_TOP: blender_3d_top
  BLENDER_3D_BOT: blender_3d_bottom
  BLENDER_3D_ANGLED_TOP: blender_3d_angled_top
  BLENDER_3D_ANGLED_BOT: blender_3d_angled_bottom

  TXT_SCH_NOTES_OUTPUT: txt_schematic_notes
  TXT_FAB_NOTES_OUTPUT: txt_fabrication_notes
  TXT_ASSY_NOTES_OUTPUT: txt_assembly_notes

  HTML_KIRI_OUTPUT: html_kiri
  HTML_NAV_RES_OUTPUT: html_navigate_results

  JLCPCB_GERBER_OUTPUT: jlcpcb_gerbers
  JLCPCB_FABPACK_OUTPUT: jlcpcb_fabpack
  JLCPCB_BOM_OUTPUT: jlcpcb_bom
  JLCPCB_CPL_OUTPUT: jlcpcb_cpl
