home

MOSFET

The metal-oxide-semiconductor field-effect transistor, or MOSFET for short, is the most frequently manufactured device in history, with an estimated 1.3 × 10^22 MOSFETs produced between 1960 and 2018. This cross-section shows an n-channel device: n-type source and drain wells in a p-type substrate, with the gate separated from the channel region by a dielectric layer. As the basic building block of almost all modern electronics, it revolutionized the world economy and triggered our ascent into the information age.


MOSFET

Download

PNG PDF SVG

Code

mosfet.typ (78 lines)
#import "@preview/cetz:0.5.3": canvas, draw
#import draw: content, line, rect

#set page(width: auto, height: auto, margin: 8pt, fill: none)
#set text(size: 12pt)

#canvas({
  // Substrate width, dielectric x-span and the substrate surface height
  let (width, start-x, end-x, start-y) = (11, 3.8, 7.2, 2)

  // Body contact (base)
  rect((0, 0), (width, -0.25), fill: rgb("#008080"), name: "board")
  content("board.south", [body (substrate) contact], anchor: "north", padding: (top: 3pt))

  // Dielectric layer with brick pattern (5 rows of 0.4 x 0.2 bricks, odd rows offset by half a brick)
  let (brick-width, brick-height) = (0.4, 0.2)
  let brick-red = rgb("#f00")
  rect(
    (start-x, start-y),
    (end-x, start-y + 1),
    fill: rgb("#cdd3da"),
    stroke: brick-red,
    name: "dielectric-box",
  )
  for row in range(5) {
    let y-start = start-y + row * brick-height
    line((start-x, y-start), (end-x, y-start), stroke: brick-red)
    for col in range(9) {
      let x-pos = start-x + col * brick-width + calc.rem(row, 2) * brick-width / 2
      if x-pos < end-x {
        line((x-pos, y-start), (x-pos, y-start + brick-height), stroke: brick-red)
      }
    }
  }

  // P-type semiconductor substrate
  rect((0, 0), (width, start-y), fill: rgb("#ffa500").lighten(50%), name: "substrate")
  content((width / 2, 0.6), align(center)[$p$-type\ semiconductor])
  // Inversion layer induced under the dielectric when the gate voltage exceeds threshold
  // spans the gap between the source well (x 1 to 4) and the drain well (x 7 to 10)
  rect((4, start-y - 0.14), (7, start-y), fill: rgb("#90ee90"), stroke: (dash: "dashed"))

  // n-type wells, each topped by its metal contact
  for (well-x, inset, name) in ((1, 0.25, "source"), (7, 1, "drain")) {
    rect((well-x, 1), (rel: (3, start-y - 1)), fill: rgb("#90ee90"), name: name + "-n")
    content(name + "-n", align(center)[$n$-type\ semiconductor])
    rect((well-x + inset, start-y), (rel: (1.75, 0.5)), fill: rgb("#c8c8e1"), name: name + "-metal")
    content(name + "-metal", name)
  }

  content(
    "dielectric-box",
    [dielectric],
    frame: "rect",
    padding: 2pt,
    fill: rgb("#cdd3da"),
    stroke: .5pt,
  )

  // Gate contact on top of the dielectric
  rect((start-x + 0.2, start-y + 1), (rel: (3, 0.5)), fill: rgb("#c8c8e1"), name: "gate-metal")
  content("gate-metal", [gate])

  content(
    (width / 2, start-y - 0.14),
    text(size: 10pt)[$n$ inversion channel],
    anchor: "north",
    padding: (top: 2pt),
  )

  // Title
  content(
    "gate-metal.north",
    [gate voltage $V_G > V_"th"$ induces the channel],
    anchor: "south",
    padding: (bottom: 2mm),
  )
})