kibot:
  version: 1

filters:
  - name: 'exclude_tht'
    type: 'generic'
    comment: 'Exclude thru-hole parts'
    exclude_tht: true
  - name: 'fix_rotation'
    comment: 'Adjust rotation for JLC'
    type: rot_footprint
    rotations:
      - ["^TSOP-II", 270.0]
      - ["^SOT-89", 180.0]


variants:
  - name: rotated
    comment: 'Just a place holder for the rotation filter'
    type: kibom
    variant: rotated
    pre_transform: 'fix_rotation'

preflight:
  check_zone_fills: true
  fill_zones: false
  run_drc: true
  run_erc: true
  update_xml: true
  ignore_unconnected: true
  filters:
    - error: 'pin_not_connected'
      filter: 'Pin not connected'
    - error: 'silk_overlap'
      filter: 'Silkscreen overlap'
    - error: 'pin_not_driven'
      filter: 'Input pin not driven by output'
      regex: 'Input pin not driven by any Output pins'

outputs:
  - name: Gerbers
    comment: "Generate gerber files"
    type: gerber
    dir: '../Gerbers'
    options:
      exclude_edge_layer: true
      exclude_pads_from_silkscreen: true
      plot_sheet_reference: false
      plot_footprint_refs: true
      plot_footprint_values: false
      force_plot_invisible_refs_vals: false
      tent_vias: true
      use_protel_extensions: false
      create_gerber_job_file: false
      disable_aperture_macros: true
      gerber_precision: 4.6
      use_gerber_x2_attributes: false
      use_gerber_net_attributes: false
      line_width: 0.1
      subtract_mask_from_silk: true
      inner_extension_pattern: '.gbr'
      use_aux_axis_as_origin: true

    layers:
      - F.Cu
      - B.Cu
      - In1.Cu
      - In2.Cu
      - F.SilkS
      - B.SilkS
      - F.Paste
      - B.Paste
      - F.Mask
      - B.Mask
      - Edge.Cuts

  - name: Drills
    comment: Drill files
    type: excellon
    dir: '../Gerbers'
    options:
      pth_id: '-PTH'
      npth_id: '-NPTH'
      metric_units: true
      route_mode_for_oval_holes: false
      pth_and_npth_single_file: false
      use_aux_axis_as_origin: true
      output: "%f%i.%x"

  - name: Schematic
    comment: "Output PDF Schematic"
    type: pdf_sch_print
    options:
      frame: true
      output: "../Docs/Schematic.pdf"

  - name: IBOM
    type: ibom
    comment: "Generate HTML Interactive BOM"
    dir: ../ibom
    options:
      output: 'ibom.html'
      include_tracks: true
      layer_view: FB
      blacklist: 'CN1,J1'
      highlight_pin1: true
      include_nets: true
      dark_mode: true

  - name: 3dImage
    type: render_3d
    comment: "3D Render"
    run_by_default: true
    options:
      ray_tracing: false
      output: ../Docs/PCB.png
      zoom: 8
      view: top
      no_tht: true
      orthographic: true
      download: false
      width: 1300
      height: 530

  - name: Image
    type: pcbdraw
    comment: "Draw PCB"
    options:
      output: ../Docs/PCB.png
      format: png
      show_components: none

  - name: 'JLCPCB_position'
    comment: "Pick and place file, JLCPCB style"
    type: position
    options:
      variant: rotated
      output: '../Gerbers/%f_cpl_jlc.%x'
      format: CSV
      units: millimeters
      separate_files_for_front_and_back: false
      use_aux_axis_as_origin: true
      only_smd: true
      columns:
        - id: Ref
          name: Designator
        - Val
        - Package
        - id: PosX
          name: "Mid X"
        - id: PosY
          name: "Mid Y"
        - id: Rot
          name: Rotation
        - id: Side
          name: Layer

  - name: 'JLCPCB_bom'
    comment: "BoM for JLCPCB"
    type: bom
    options:
      output: '../Gerbers/%f_%i_jlc.%x'
      exclude_filter: 'exclude_tht'
      ref_separator: ','
      columns:
        - field: Value
          name: Comment
        - field: References
          name: Designator
        - Footprint
        - field: 'LCSC #'
          name: 'LCSC Part #'
      csv:
        hide_pcb_info: true
        hide_stats_info: true
        quote_all: true
