Skip to content

Cooper7196/Processor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Processor

Open Source Hardware Processor silicon die photo

Mission

  • Reduce the barrier to entry to open source silicon for hobbyists
  • Encourage the production usage of fully open source, royalty-free, community designed ASICs within the maker community (displace proprietary chip designs)
  • Shorten the iteration time from ideation to fabrication
  • Explore creative ideas not found in current hardware offerings
  • Interoperate with modern, high performance components that are typically the realm of proprietary designs (DDR4, PCIE root complex, USB3, etc come to mind)
  • Make easy to use, relatively inexpensive hardware that people can acutally buy

Project Goals

Processor V1 (November 2020)

The software and the hardware parts can mostly be done simultaneously.

  1. Create a new CPU instruction set and design.
    • it should be a sort of minimum viable 32 bit CPU. Something similar in capability to an Arduino, and with similar ports.
  2. Test the CPU design in simulators and on FPGA
  3. Fabricate the processor using Google and efabless free shuttle service for open source using 130nm process, and open source PDK
    • Submit a design for the November free shuttle run.
    • Try not to go too crazy with transistor count. We want to not be dependent on free fabrication in the future.
  4. Build an assembler for the ISA
  5. Make an Arduino-like board for the processor, with similar capabilities and supporting software
  6. Write or port C toolchain. Some higher level languages would also be nice, such as JS/python.
    • TCC may be a good compiler to retarget for C.
      • Here is what would be needed to be done to retarget it.
    • Port as much of libc as possible. Uclib-ng or newlib would be good options.

Task List for V1 by Early November 2020 (exact deadline date to be determined):

  • Design FPGA carrier board PCB. Get it manufactured, into peoples hands.
  • Design ISA
  • Write assembler for the ISA
  • Get Verilog simulator up and running and documented.
  • Design CPU and peripherals in Verilog or Migen.
  • Simulate CPU and periherals in software. Programs should be able to run and take input/output.
  • Test CPU and peripherals on the FGPA carrier board. RAM and flash should work. We should be able to load an run real programs on the board
  • Create task list to prepare the verilog design for fabrication.
    • Ensure we haven't overlooked anything that could cause our design to be rejected by Google/Skywater
    • Ensure our design might actually work when fabricated

Fun Side Project for V1 : Make an Apple II or commodore style standalone PC using the processsor.

Processor V2 (Early 2021)

  1. Replicate V1 using non-donated fabrication and make the process economically sustainable.
    • This means making chips and boards than people can actually buy.
    • See Target Silicon section below.
    • In theory, multi project wafer runs on very old tech could be < $100 per chip. Costs will go down as volume increases.
    • we could do a Kickstarter or similar to fund a larger fabrication run for V2.
  2. Expand capabilities with software support
    • more RAM, faster RAM
    • graphics framebuffer
    • more ports in general.
  3. Port other languages.
  4. A basic OS. This would be similar to old computers running BASIC. This may be porting an existing OS or writing one from sratch.

Processor V3 (Late 2021)

While maintaining economic sustainability:

  1. Expand capabilities with software support
    • add MMU (ucLinux will run without an MMU, but typical programs will not run. They require fork() and mmap() among other MMU features.)
    • hardware floating point
    • more RAM, faster RAM
    • more ports in general. HDMI, ethernet, possibly USB and WiFi to some degree, with external chips
  2. Make a raspberry-Pi style board. It would be much much slower than a Pi, but should have a similar style of capabilities and functions.
  3. Port more software to the system
    • glibc should be able to be ported at this stage
  4. Explore Linux support

Processor V4 (2022)

Generally more powerful and unique. Try to achieve some interoperability with modern hardware, yet remain fully open source. Just some ideas:

  • On-chip Software Defined Radio (SDR) so that it can be a flexible radio device (WiFi, LTE, Bluetooth, GPS)
  • GPU
  • Multi core
  • PCIE Root Controller
  • DDR4 Controller
  • USB3 Controller

Educational Resources

  • Reading list for newcomers to computer engineering, started here: link

CPU for V1

  • 32 bit
  • flat address space, no MMU
  • As simple as possible
  • Should support running unmodified C programs.
  • Required math ops: the usual AND OR NOT XOR shifts, rotates.
  • Integer multiply and divide would be cool if we can fit it.
  • Floating point math would be cool if we can fit it, including addition,mul,div operations

Ports for V1

The general idea is to have a superset of the peripherals that the old Arduino has.

Target Silicon:

Google-skywater november 2020 free shuttle run

  • Info collected from skywater-pdk slack:
  • Tim Edwards: The whole chip will be (provisionally) 3.2 x 5.3, but the user area will be about 9 to 10 mm^2. That is not including the pad frame; that's the full core area you get to use. I'm aiming to keep the "management region" off to one side to keep the user area roughly square. The pads are 200um high, so the height is limited to 2.8mm, so the area you get to work with will be around 3.2 to 3.5mm wide and 2.8mm high.
  • Packaging: WLCSP: Main reason for wlcsp packaging is reduced parasitics for high speed signals like SERDES etc. Wlcsp is done before cutting the wafer so it doesn't require a separate packaging line.
  • Pins: Expected usable pins is more ~ 40

Non-Google, more sustainable options:

Interesting Tools

License

  • GPL v3

VGA Notes

About

It's a processor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 41.8%
  • Verilog 34.5%
  • Python 16.0%
  • Dockerfile 7.7%