Skip to content
View Samcooper01's full-sized avatar
☺️
☺️

Block or report Samcooper01

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Samcooper01/README.md

👋 About me

Hey! I'm Sam, and I work as a physical design engineer at IBM. Most of what's here is things I got curious about and explored on my own, plus some projects from school. Lately that's mostly been machine learning applied to the chip flow, and using open-source tools like OpenROAD to experiment.

Always happy to talk chips, physical design, or open-source silicon. You can find me on LinkedIn.


🔬 Projects

🎓 Chipbase

chipbase

Chipbase: learn chip physical design by doing. Reading pages on every stage of the flow, interactive labs, drills, and problems graded in your browser.

A free site for learning physical design, built because the material I wanted when I was starting out is scattered across papers, course notes and tool manuals. It has reading pages on every stage of the flow, pages on the algorithms underneath them, interactive labs, drills, and fifteen problems graded in the browser. Live here.

systolic-array-ai-accelerator-harness The evaluation harness for the first design competition on Chipbase. Entrants take Gemmini, an open AI accelerator built around a 16 by 16 systolic array, from Verilog to a finished layout on the ASAP7 7nm predictive process using only open tools, and anything that clears the gates is scored on clock period, area and power against a reference flow. That reference is in here too: around 200,000 cells, macros placed by hand, one clock tree reaching about 35,000 registers, routed clean on nine metal layers.

🧱 Physical design

rl-macro-placer A reimplementation of Google's reinforcement learning macro placer from the 2021 Nature paper: an agent places the hard macros one at a time, a force-directed pass settles the standard cells around them, and a wirelength, congestion and density proxy scores the result. The point was to build the whole method at laptop scale and measure honestly what carries over and what does not.

Open-SRAM-Compiler-ASAP7nmPDK An SRAM compiler for the ASAP7 7nm predictive process. Three parameters in, a verified memory macro out: full-custom layout, an abstract for place and route, a timing library and a behavioral model. The verification stack runs eleven automated tests, from 97 transcribed design rules to switch-level simulation of the extracted netlist. Largest built and verified so far is 8 kilobytes.

learned-synth

learned-synth project page: is the standard recipe for open-source logic synthesis good enough? A better recipe on 6 of 9 designs, with up to 5.8% less chip area at the same clock speed.

I wanted to see if the default recipe for open-source logic synthesis could be improved on. Usually it can: up to 5.8% less area at the same clock speed, on 6 of 9 designs. I searched for per-design recipes with reinforcement learning, a graph neural network and a genetic algorithm, grading each one on a real layout. Write-up here.

Std-Cell-Layout-Gen A generator that turns a transistor netlist into a manufacturable standard cell layout with nobody drawing anything by hand. Each cell gets a short recipe of knobs while the process rules and library architecture stay shared, so you can change a technology parameter, rerun, and get a whole co-legal library back. 319 of the 437 cells in the SKY130 high-density library build clean so far.

GEMM_CORE A 4-bit floating point matrix multiply engine, taken from Verilog to a finished layout on SkyWater's open 130nm process. The processing element and vector unit were hardened as separate macros and the top built from 64 of them, so timing closed hierarchically: 1.63 mm² at 65% utilization, clean across three corners. A five-person project for ECE 755, VLSI Design; my part was the physical implementation and the floating-point arithmetic.

Multi-Layer-Perceptron An end-to-end full-custom design: a multi-layer perceptron built from hand-drawn cells rather than a standard cell library. Every cell has a schematic, a transistor-level layout, an extracted parasitic netlist and a post-layout simulation, which is a good way to find out how much of a cell's delay is really wire.

128bitFeistelCipher-ASIC A block cipher I took from a C golden model through synthesis, static timing and power analysis, in two variants to see what reorganizing the key logic bought. Done over a weekend.

🔌 Digital design

ECE554-Capstone-Project Real-time object detection and laser targeting on a Cyclone V board: a camera feeding frame-differencing logic built in hardware, a servo-driven laser that tracks whatever it finds, and a video overlay so you can watch it work. Five of us built it, and it won best capstone in the class.

Matrix-Multiplication-Module A matrix-vector multiply unit: eight multiply-accumulate lanes behind input queues, pulling operands over an Avalon memory-mapped interface, constrained to 200 MHz and checked in the timing analyzer.

ECE552-5-Stage-Pipelined-Processor A five-stage pipelined processor in Verilog, with forwarding, branch prediction and its own memory system: caches built twice, once direct-mapped and once set-associative, so the two could be compared.

Pinned Loading

  1. Multi-Layer-Perceptron Multi-Layer-Perceptron Public

    End-to-end full-custom design of a multi-layer perceptron: schematics, layout, and verification

  2. GEMM_CORE GEMM_CORE Public

    Forked from shwin12345/GEMM_CORE

    A standalone, FP4-quantized General Matrix Multiply (GEMM) core, from RTL through synthesis and full place-and-route in the OpenLane 2 flow on the SkyWater SKY130 process.

    Verilog

  3. learned-synth learned-synth Public

    Exploring better per-design recipes for open-source logic synthesis with machine learning and surrogate-guided search

    Python

  4. Open-SRAM-Compiler-ASAP7nmPDK Open-SRAM-Compiler-ASAP7nmPDK Public

    SRAM (Static Random-Access Memory) compiler for the ASAP7 (Arizona State Predictive Process Design Kit, 7 nanometre) process, with its own verification stack, built with open-source tools only

    Python

  5. rl-macro-placer rl-macro-placer Public

    Python

  6. systolic-array-ai-accelerator-harness systolic-array-ai-accelerator-harness Public

    SystemVerilog