fides

package module
v0.0.0-...-1e52cae Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2024 License: BSD-2-Clause Imports: 11 Imported by: 0

README

FIDES reliability library for Go

This library is based on FIDES edition 2022. It is not a comprehensive implementation (see the notes below).

Although FIDES and all reliability methods derived from or similar to MIL-HDBK-217 are currently not accurate according to reports from different sources, NASA included (see the references), some kind of failure estimation for electronic devices is necessary. FIDES is considered here as a starting point, and as models evolve, eventually also this library will do.

FIDES adopts a constant failure rate for components but not for subassemblies, which is a contradiction. In future releases, it is to be expected that more failure models will adopt a Weibull or some other distribution that more accurately reflects the life expectancy under the given mission profiles.

Install

# git clone https://github.com/rveen/fides
# cd fides/cmd/fides
# go build
# ./fides bom.csv db.csv mission.csv

This will do a FIT calculation on the sample BOM provided and print it on screen.

Input file formats

Input files are in CSV format, with the first row containing the field names. The examples given are self-explanatory.

Class and tags

Components are identified by the fields 'class' and 'tags'. Class takes the values L, C, R, D, Q, U, X and PCB. Tags identify types within a class:

  • All: smd (default), tht, analog, interface, power
  • C / Electrolithic capacitors: alu, elco
  • C / Tantalium capacitors: tant, tantalium
  • L / Inductors, transformers: trafo, power, multilayer/ferrite
  • C / Ceramic capacitors: cer, x5r, x5s, x6r, x6s, x7r, x7s, x8r, x8s, np0, c0g, y5v
  • R / Resistors: ww, melf, pot/potmeter, thick
  • D / Diodes: zener, tvs
  • Q / Transistors: gaas, gan, mos/mosfet, jfet, igbt, triac, thyristor
  • U / ICs, ASICs: digital, analog, mixed, complex, dram, sram, fpga/cpld/pal, flash/eprom/eeprom
  • U / Optocouplers: opto, optocoupler, photodiode, phototrasistor
  • X / Resonators
  • PCB / fr4 (default)

If the assembly style is not defined (smd or tht), then smd is assumed.

Notes on this implementation

  • ASICs are treated as normal ICs (handled through tags: complex, analog, digital)

  • Unsupported components:

    • COTS
    • LEDs
    • Fuses
    • Piezos, crystals, resonators, oscillators
    • Relays
    • Switches
    • Hybrids
    • Microwave components
    • Subassemblies
    • Batteries
    • Fans
    • Deep sub-micron components
  • Process factors are set to default values:

    • 𝚷Ruggedized = 1.7
    • 𝚷PM = 1.7
    • 𝚷Process = 4
    • 𝚷LF = 1
  • The parts count method is not implemented

References

Documentation

Index

Constants

View Source
const InvBoltzman float64 = 11604.518

Variables

This section is empty.

Functions

func Arrhenius

func Arrhenius(ea, t1, t0 float64) float64

Arrhenius law

func Arrhenius25

func Arrhenius25(ea, temp float64) float64

Arrhenius25 (in ºC, reference 25ºC)

func ArrheniusK

func ArrheniusK(ea, t0, t1 float64) float64

Arrhenius (in K)

func CapacitorFIT

func CapacitorFIT(comp *Component, mission *Mission) (float64, error)

func ConnectorFIT

func ConnectorFIT(comp *Component, mission *Mission) (float64, error)

PCB connectors, SMD, less that one insertion/year

func Cs

func Cs(class string, tags []string) float64

FIDES 2022

func FIT

func FIT(comp *Component, mission *Mission) (float64, error)

func InductorFIT

func InductorFIT(comp *Component, mission *Mission) (float64, error)

InductorFIT

func IsSmd

func IsSmd(c *Component) bool

func Lbase_Pcb

func Lbase_Pcb(nLayers, nConn, class int, tech float64) float64

func Lbase_resistor

func Lbase_resistor(c *Component) (float64, float64, float64, float64, float64, float64)

returning lbase, A, lth, ltc, lmech, lrh

func Lchip_th

func Lchip_th(c *Component) float64

func NorrisLandzberg

func NorrisLandzberg(tdeltaRef, tdeltaUse, tmaxRef, tmaxUse, fRef, fUse float64, a, b, c float64) float64

Norris-Landberg, general form

For SAC305 lead-free solder: a=2.3, b=0.3, c=4562 See "Norris–Landzberg Acceleration Factors and Goldmann Constants for SAC305 Lead-Free Electronics" (Journal of Electronic Packaging · September 2012) See also: https://www.lamar.edu/engineering/_files/documents/mechanical/dr.-fan-publications/2008/Fan%202008_13%20ECTC_3.pdf

func OptoFIT

func OptoFIT(comp *Component, mission *Mission) (float64, error)

func PcbFIT

func PcbFIT(mission *Mission, nLayers, nConn int) (float64, error)

func PiInduced

func PiInduced(comp *Component, phase *Phase) (float64, error)

func PiInducedPcb

func PiInducedPcb(phase *Phase) float64

func PiMech

func PiMech(grms float64) float64

Basquin's law

func PiPM

func PiPM() float64

Quality and technical control over manufacturing of the item (Use default value)

func PiProcess

func PiProcess() float64

quality and technical control over the development, manufacturing and usage process for the product containing the item (Use default value)

func PiRH

func PiRH(ea, rh, temp float64) float64

Peck’s model

func PiRH2

func PiRH2(ea, rh, temp float64, on bool) float64

Same as PiRH, but return 0 in on mode

func PiRuggedising

func PiRuggedising() float64

PiRuggedising represents the influence of the policy for taking account of overstresses in the product development. (Use default value)

func PiTCCase

func PiTCCase(nc int, time, tdelta, tmax float64) float64

Temperature cycling, case, Norris-Landzberg model (semiconductor cases)

func PiTCSolder

func PiTCSolder(nc int, time, duration, tdelta, tmax float64) float64

Temperature cycling,solder joints, Norris-Landzberg model See https://www.lamar.edu/engineering/_files/documents/mechanical/dr.-fan-publications/2008/Fan%202008_13%20ECTC_3.pdf (The 1.9 factor is OK for lead-free also, according to this paper)

func PiTV

func PiTV(tamb float64) float64

func PiThermal

func PiThermal(ea, temp float64, on bool) float64

PiThermal for ICs is 0 in non-operating mode

func PiThermal_cap

func PiThermal_cap(ea, tamb, sref, ratio float64) float64

func PiThermal_voltageFactor

func PiThermal_voltageFactor(v, vmax float64) float64

Applies to diodes < 1A (not zener or tvs)

func PiezoFIT

func PiezoFIT(comp *Component, mission *Mission) (float64, error)

func ResistorFIT

func ResistorFIT(comp *Component, mission *Mission) (float64, error)

func Rthja_semi

func Rthja_semi(pkg string, k bool) (int, float64, float64)

func SemiconductorFIT

func SemiconductorFIT(comp *Component, mission *Mission) (float64, error)

Types

type Bom

type Bom struct {
	Components []*Component
}

func (*Bom) FromCsv

func (bom *Bom) FromCsv(file string) error

type Component

type Component struct {
	Name        string  // Denominator or reference
	Value       float64 // Value in SI unit
	Tolerance   float64
	Code        string // Part number
	Description string // Free description

	Class string
	Tags  []string
	Block string // For classifying per block or function

	Package string
	N       int // Number of devices
	Np      int // TODO Number of pins
	Rtha    float64

	Vp, V, P, I, T                float64 // Working conditions
	Vpmax, Vmax, Pmax, Imax, Tmax float64 // Device limits

	// Temperature coefficient. Set to NaN for undefined
	TC float64

	FIT float64
}

func (*Component) ToCsv

func (c *Component) ToCsv() string

type Design

type Design struct {
	Components []*Component
	Mission    *Mission
}

func NewDesign

func NewDesign() *Design

type Mission

type Mission struct {
	Phases []*Phase
}

func NewMission

func NewMission() *Mission

func (*Mission) AddPhase

func (mission *Mission) AddPhase(ph *Phase)

func (*Mission) FromCsv

func (mission *Mission) FromCsv(file string) error

func (*Mission) ToCsv

func (m *Mission) ToCsv() string

type Package

type Package struct {
	Name  string
	Npins int
	Tags  []string
	// contains filtered or unexported fields
}

func NewPackage

func NewPackage(name string) *Package

func (*Package) FitBase

func (p *Package) FitBase() (float64, float64, float64, float64)

func (*Package) Rtha

func (p *Package) Rtha(tcSusbtrate float64) float64

type Phase

type Phase struct {
	Name          string
	Duration      float64
	NCycles       int
	CycleDuration float64
	On            bool
	Tamb          float64
	Tdelta        float64
	Tmax          float64
	RH            float64
	Grms          float64

	// 1 = weak, 3 = strong
	SalinePollution float64

	// 1 = weak, 2 = moderate, 3 = strong
	AmbientPollution float64

	// 1 = weak, 2 = moderate, 3 = strong
	ApplicationPollution float64

	// Ingress protection (true = hermetic, sealed)
	IP   bool
	Tags string

	// Application factor
	AppFactor float64
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL