← Commit history

Lead with the narrated video (no dead air, captions, chapters), then the 3D render

John Lauer ·11604a1671 ·5d ago ·parent 0c50ebd
7 files changed +278−5
README.md+4−1
@@ -1,9 +1,12 @@ # OCuLink Riser for the Supermicro AIOM Slot -A passive card for Supermicro's AIOM slot (OCP NIC 3.0 small form factor) that breaks the PCIe x16 link out to four OCuLink (SFF-8611) ports, so NVMe drives or a GPU can be cabled out at PCIe Gen4. It was built for a YouTube viewer who asked for one, by Claude in Adom Hydrogen with adom-aiflow and KiCad.+::adom-video{src="/john/oculink-aiom-riser/render/video/oculink-riser.video.json"}  <p align="center"><img src="docs/renders/hero-iso.png" width="900" alt="The riser in 3D: gold fingers at the front, four OCuLink receptacles on the faceplate edge"></p> +A passive card for Supermicro's AIOM slot (OCP NIC 3.0 small form factor) that breaks the PCIe x16 link out to four OCuLink (SFF-8611) ports, so NVMe drives or a GPU can be cabled out at PCIe Gen4. It was built for a YouTube viewer who asked for one, by Claude in Adom Hydrogen with adom-aiflow and KiCad.++ **Status: designed and checked, not yet built.** The KiCad project, Gerbers, drill files, BOM and pick-and-place are all here. Nobody has fabricated or tested a card yet. If you build one, please open an issue on this page with what you found.  ## What it does
clips/README.md+4−4
@@ -2,13 +2,13 @@  The whole build, filmed off the screen while Claude worked in Adom Hydrogen, cut to 16x speed with a voice-over for each part. New clips land here as the build goes on. -## The highlight (draft, 6 min 22 s)+## The video (3 min 3 s) -::adom-video{src="/john/oculink-aiom-riser/render/clips/highlight.video.json"}+::adom-video{src="/john/oculink-aiom-riser/render/video/oculink-riser.video.json"} -What the card is for (the server, the AIOM slot, the drives and GPU docks it opens up), then the whole build in five minutes: the spec research, the 85 ohm pairs and length tuning, the board landing live in KiCad, the field-solved current check, the export and the finish line. Captions on (press C) and chapters on the timeline. [Download the highlight](clips/highlight.mp4).+What the card is for (the server, the AIOM slot, the drives and GPU docks it opens up), then the whole build: the spec research, the 85 ohm pairs and length tuning, the board landing live in KiCad, the field-solved current check, the export and the finish line. Captions on (press C) and chapters on the timeline. [Download the video](video/oculink-riser.mp4). -Product photos: Supermicro, ServeTheHome, Delock, ChargerLAB (see the credits in the video).+Product photos: Supermicro, ServeTheHome, Delock, ChargerLAB (credited in the video).  | Clip | Real time | What happens | |---|---|---|
video/oculink-riser-poster.jpgadded
⋯ 1 unchanged line ⋯
video/oculink-riser.chapters.jsonadded+34
@@ -0,0 +1,34 @@+[+ {+  "t": 0.0,+  "title": "The request"+ },+ {+  "t": 8.6,+  "title": "What this board does"+ },+ {+  "t": 85.77,+  "title": "Spec research and impedance"+ },+ {+  "t": 103.07,+  "title": "Routing the high-speed lanes"+ },+ {+  "t": 128.37,+  "title": "The board in KiCad"+ },+ {+  "t": 144.83,+  "title": "Current and thermal checks"+ },+ {+  "t": 156.1,+  "title": "Silkscreen and 3D"+ },+ {+  "t": 162.43,+  "title": "Export and the finish line"+ }+]\ No newline at end of file
video/oculink-riser.mp4added
⋯ 1 unchanged line ⋯
video/oculink-riser.video.jsonadded+39
@@ -0,0 +1,39 @@+{+ "video": "/john/oculink-aiom-riser/render/video/oculink-riser.mp4",+ "poster": "/john/oculink-aiom-riser/render/video/oculink-riser-poster.jpg",+ "chapters": [+  {+   "t": 0.0,+   "title": "The request"+  },+  {+   "t": 8.6,+   "title": "What this board does"+  },+  {+   "t": 85.77,+   "title": "Spec research and impedance"+  },+  {+   "t": 103.07,+   "title": "Routing the high-speed lanes"+  },+  {+   "t": 128.37,+   "title": "The board in KiCad"+  },+  {+   "t": 144.83,+   "title": "Current and thermal checks"+  },+  {+   "t": 156.1,+   "title": "Silkscreen and 3D"+  },+  {+   "t": 162.43,+   "title": "Export and the finish line"+  }+ ],+ "captions": "WEBVTT\n\n00:00:00.000 --> 00:00:04.429\nA YouTube viewer asked for an OCuLink\nriser for the AIOM slot on their\n\n00:00:04.429 --> 00:00:05.568\nSupermicro server.\n\n00:00:05.568 --> 00:00:08.352\nBefore we build it, here is what that\nmeans.\n\n00:00:08.600 --> 00:00:11.815\nThis is the kind of server the viewer has:\n\n00:00:11.815 --> 00:00:13.729\na Supermicro rack server.\n\n00:00:13.729 --> 00:00:19.930\nInside, besides the normal P C I e slots,\nnewer Supermicro boards have one or two\n\n00:00:19.930 --> 00:00:20.772\nAIOM slots.\n\n00:00:21.033 --> 00:00:24.263\nFrom the back, Supermicro labels them:\n\n00:00:24.263 --> 00:00:27.153\nP C I e by sixteen, AIOM, OCP 3.0.\n\n00:00:27.153 --> 00:00:33.018\nA full sixteen lane slot, the same\nbandwidth as a graphics card slot.\n\n00:00:33.267 --> 00:00:35.195\nBut only one kind of card fits:\n\n00:00:35.195 --> 00:00:37.371\nan AIOM network card like this one.\n\n00:00:37.371 --> 00:00:41.786\nIf you don't need another network card,\nthose sixteen lanes sit unused.\n\n00:00:42.033 --> 00:00:43.718\nThis board changes that.\n\n00:00:43.718 --> 00:00:49.336\nIt plugs into the AIOM slot in place of\nthe network card, and splits the sixteen\n\n00:00:49.336 --> 00:00:53.831\nlanes into four OCuLink ports, each a full\nP C I e by four link.\n\n00:00:54.067 --> 00:00:59.497\nRun an OCuLink cable from each port to a U\ndot two NVMe drive, and the server gains\n\n00:00:59.497 --> 00:01:04.665\nfour more fast drives, each running at\nfull Gen four by four speed, about eight\n\n00:01:04.665 --> 00:01:06.039\ngigabytes per second.\n\n00:01:06.300 --> 00:01:11.235\nOr cable a port to an OCuLink dock like\nthis one, and hang a graphics card or\n\n00:01:11.235 --> 00:01:14.697\nanother P C I e card off the server,\noutside the case.\n\n00:01:14.933 --> 00:01:16.181\nThere is one catch:\n\n00:01:16.181 --> 00:01:20.318\nthe server's BIOS has to support splitting\nthat slot four ways.\n\n00:01:20.318 --> 00:01:25.113\nWhen it does, an unused network slot\nbecomes four general purpose P C I e\n\n00:01:25.113 --> 00:01:25.507\nports.\n\n00:01:25.767 --> 00:01:26.777\nNow the build.\n\n00:01:26.777 --> 00:01:30.815\nWe typed that one request into Claude, in\nAdom Hydrogen.\n\n00:01:30.815 --> 00:01:36.223\nIt reads the OCP 3.0 spec and the OCuLink\nstandards, pinout tables and all.\n\n00:01:36.467 --> 00:01:41.381\nIt writes a small field solver and finds\ntrace widths for 85 ohm differential pairs\n\n00:01:41.381 --> 00:01:42.802\non a six layer stack-up.\n\n00:01:43.067 --> 00:01:47.450\nThirty six high speed pairs are routed\nfrom the gold fingers to four OCuLink\n\n00:01:47.450 --> 00:01:49.180\nconnectors, with no crossings.\n\n00:01:49.433 --> 00:01:53.881\nEvery lane in a port is tuned to arrive\nwithin a hundredth of a picosecond of its\n\n00:01:53.881 --> 00:01:54.431\nneighbors.\n\n00:01:54.667 --> 00:01:55.751\nThe design record:\n\n00:01:55.751 --> 00:02:00.631\nimpedance per layer, skew inside every\npair under two hundredths of a millimeter.\n\n00:02:00.867 --> 00:02:05.962\nOn the adom-aiflow timeline, the run moves\nthrough design rules:\n\n00:02:05.962 --> 00:02:08.111\nJLCPCB's six layer process.\n\n00:02:08.367 --> 00:02:10.584\nThen the real board opens in KiCad:\n\n00:02:10.584 --> 00:02:13.751\ngold fingers at the bottom, connectors at\nthe top.\n\n00:02:14.000 --> 00:02:18.874\nForty seven parts land live, one at a\ntime, each its own undo step.\n\n00:02:19.133 --> 00:02:23.607\nThen one hundred sixty nine traces land\nthe same way, every one checked against\n\n00:02:23.607 --> 00:02:24.570\nthe design rules.\n\n00:02:24.833 --> 00:02:27.430\nThe current check needs a real field\nsolve.\n\n00:02:27.430 --> 00:02:29.001\nClaude finds why it fails:\n\n00:02:29.001 --> 00:02:32.504\na tenth of a millimeter via ring the\nsolver could not see.\n\n00:02:32.767 --> 00:02:35.846\nWith a finer grid, current and thermal\nboth pass.\n\n00:02:36.100 --> 00:02:40.025\nClean silkscreen, and the finished board\nin KiCad's 3D viewer:\n\n00:02:40.025 --> 00:02:42.178\nevery test point and port labeled.\n\n00:02:42.433 --> 00:02:47.093\nGerbers for all six copper layers, drill\nfiles, pick and place and the bill of\n\n00:02:47.093 --> 00:02:50.438\nmaterials, each read back and checked\nagainst the board.\n\n00:02:50.700 --> 00:02:51.697\nFinish passes:\n\n00:02:51.697 --> 00:02:54.689\nzero design rule errors, zero unconnected.\n\n00:02:54.689 --> 00:03:00.175\nA manufacturable PCI Express Gen four\ncard, from a one line comment, designed\n\n00:03:00.175 --> 00:03:02.953\nand checked by Claude in Adom Hydrogen.\n\n"+}\ No newline at end of file
video/oculink-riser.vttadded+197
@@ -0,0 +1,197 @@+WEBVTT++00:00:00.000 --> 00:00:04.429+A YouTube viewer asked for an OCuLink+riser for the AIOM slot on their++00:00:04.429 --> 00:00:05.568+Supermicro server.++00:00:05.568 --> 00:00:08.352+Before we build it, here is what that+means.++00:00:08.600 --> 00:00:11.815+This is the kind of server the viewer has:++00:00:11.815 --> 00:00:13.729+a Supermicro rack server.++00:00:13.729 --> 00:00:19.930+Inside, besides the normal P C I e slots,+newer Supermicro boards have one or two++00:00:19.930 --> 00:00:20.772+AIOM slots.++00:00:21.033 --> 00:00:24.263+From the back, Supermicro labels them:++00:00:24.263 --> 00:00:27.153+P C I e by sixteen, AIOM, OCP 3.0.++00:00:27.153 --> 00:00:33.018+A full sixteen lane slot, the same+bandwidth as a graphics card slot.++00:00:33.267 --> 00:00:35.195+But only one kind of card fits:++00:00:35.195 --> 00:00:37.371+an AIOM network card like this one.++00:00:37.371 --> 00:00:41.786+If you don't need another network card,+those sixteen lanes sit unused.++00:00:42.033 --> 00:00:43.718+This board changes that.++00:00:43.718 --> 00:00:49.336+It plugs into the AIOM slot in place of+the network card, and splits the sixteen++00:00:49.336 --> 00:00:53.831+lanes into four OCuLink ports, each a full+P C I e by four link.++00:00:54.067 --> 00:00:59.497+Run an OCuLink cable from each port to a U+dot two NVMe drive, and the server gains++00:00:59.497 --> 00:01:04.665+four more fast drives, each running at+full Gen four by four speed, about eight++00:01:04.665 --> 00:01:06.039+gigabytes per second.++00:01:06.300 --> 00:01:11.235+Or cable a port to an OCuLink dock like+this one, and hang a graphics card or++00:01:11.235 --> 00:01:14.697+another P C I e card off the server,+outside the case.++00:01:14.933 --> 00:01:16.181+There is one catch:++00:01:16.181 --> 00:01:20.318+the server's BIOS has to support splitting+that slot four ways.++00:01:20.318 --> 00:01:25.113+When it does, an unused network slot+becomes four general purpose P C I e++00:01:25.113 --> 00:01:25.507+ports.++00:01:25.767 --> 00:01:26.777+Now the build.++00:01:26.777 --> 00:01:30.815+We typed that one request into Claude, in+Adom Hydrogen.++00:01:30.815 --> 00:01:36.223+It reads the OCP 3.0 spec and the OCuLink+standards, pinout tables and all.++00:01:36.467 --> 00:01:41.381+It writes a small field solver and finds+trace widths for 85 ohm differential pairs++00:01:41.381 --> 00:01:42.802+on a six layer stack-up.++00:01:43.067 --> 00:01:47.450+Thirty six high speed pairs are routed+from the gold fingers to four OCuLink++00:01:47.450 --> 00:01:49.180+connectors, with no crossings.++00:01:49.433 --> 00:01:53.881+Every lane in a port is tuned to arrive+within a hundredth of a picosecond of its++00:01:53.881 --> 00:01:54.431+neighbors.++00:01:54.667 --> 00:01:55.751+The design record:++00:01:55.751 --> 00:02:00.631+impedance per layer, skew inside every+pair under two hundredths of a millimeter.++00:02:00.867 --> 00:02:05.962+On the adom-aiflow timeline, the run moves+through design rules:++00:02:05.962 --> 00:02:08.111+JLCPCB's six layer process.++00:02:08.367 --> 00:02:10.584+Then the real board opens in KiCad:++00:02:10.584 --> 00:02:13.751+gold fingers at the bottom, connectors at+the top.++00:02:14.000 --> 00:02:18.874+Forty seven parts land live, one at a+time, each its own undo step.++00:02:19.133 --> 00:02:23.607+Then one hundred sixty nine traces land+the same way, every one checked against++00:02:23.607 --> 00:02:24.570+the design rules.++00:02:24.833 --> 00:02:27.430+The current check needs a real field+solve.++00:02:27.430 --> 00:02:29.001+Claude finds why it fails:++00:02:29.001 --> 00:02:32.504+a tenth of a millimeter via ring the+solver could not see.++00:02:32.767 --> 00:02:35.846+With a finer grid, current and thermal+both pass.++00:02:36.100 --> 00:02:40.025+Clean silkscreen, and the finished board+in KiCad's 3D viewer:++00:02:40.025 --> 00:02:42.178+every test point and port labeled.++00:02:42.433 --> 00:02:47.093+Gerbers for all six copper layers, drill+files, pick and place and the bill of++00:02:47.093 --> 00:02:50.438+materials, each read back and checked+against the board.++00:02:50.700 --> 00:02:51.697+Finish passes:++00:02:51.697 --> 00:02:54.689+zero design rule errors, zero unconnected.++00:02:54.689 --> 00:03:00.175+A manufacturable PCI Express Gen four+card, from a one line comment, designed++00:03:00.175 --> 00:03:02.953+and checked by Claude in Adom Hydrogen.+