home.social

PipelineC

PipelineC Hardware Description Language

An easy to understand hardware description language with a powerful autopipelining compiler and growing set of real life hardware design inspired features.

github.com/JulianKemmerer/Pipe

Posts
252
Followers
213
Following
45
Joined 2022-11-20 · View on fosstodon.org →
  1. The StreamSoC demo is a fun music visualizer and video feedback experiment.
    But also is a reference for how easy PipelineC makes it to design your own SoC.
    Happy to help anyone give their own project a try!

    github.com/JulianKemmerer/Pipe

  2. A SoC in C? StreamSoC shows how to move from embedded C software to custom PipelineC hardware for doing things like realtime streaming data processing.

    youtu.be/dzF3okigyog

  3. Fun in the frequency domain 🤓 Camera pointed at it's own display also showing audio FFT for cool glitchy visualizer effect. Video processing all done in PipelineC hardware. And how?

    github.com/JulianKemmerer/Pipe

  4. PipelineC holds the throughput lead on Latchup.app. For now! How does your design stack up against a pipelining tool? Far too time consuming and fun of a site 🤓 Look forward to seeing competing solutions.

    github.com/JulianKemmerer/Pipe

  5. Existing libraries help: memory mapping is as simple as a struct. All stitched together with valid ready handshaking 'streams'. Writes done over StreamSoC's AXI-Lite like 'shared resource bus' that comes with helper FSMs

    github.com/JulianKemmerer/Pipe

  6. Easy: draw_rect_t struct shared between embedded C software and PipelineC hardware. Mem mapped registers enqueue into command FIFO. Small hardware FSM reads from cmd FIFO does simple iteration to draw a rect of pixels.

    github.com/JulianKemmerer/Pipe

  7. Is a hardware FSM that draws rectangles to a frame buffer a GPU? Well whatever you call it, it's no longer the CPU pushing pixels in the PipelineC StreamSoC design. Now it sends 'draw rectangle' commands to hardware. And how?

  8. Check out PipelineC Advent of FPGA solutions: high perf, deeply pipelined, multiple platforms, 10's Gbit per sec throughput, easily scales: variable latency off chip mem, faster off chip IO and more resources.

    github.com/JulianKemmerer/Pipe

  9. Advent of Code Day 5: Iterates over RAM holding fresh ID ranges. Autopipeline checks N IDs against M ranges each cycle. Easily does N=3,M=2 at ~235MHz, ~1.4 billion ID-in-range checks computed per sec 😎

    github.com/JulianKemmerer/Pipe

  10. Advent of Code Day 7: very simple design, good intro to . processing all ~hundreds of elements of an entire line each cycle. ~600 million to ~5.3 billion tachyon beams splitting per second. 😎

    github.com/JulianKemmerer/Pipe

  11. Advent of Code Day 4: video-like stream of 'pixel' data to a sliding 3x3 window via line buffer fifos. Auto pipeline for kernel function (counting neighbors), ~150M windows per sec. github.com/JulianKemmerer/Pipe

  12. Advent of Code Day 9: Iterates over RAM holding points. Autopipeline computes N rectangle areas per clock cycle and finds max. Easily does N=4 at ~100MHz with few pipeline stages, ~400M rect areas computed per sec 🎄

    github.com/JulianKemmerer/Pipe

  13. Advent of Code Day 3 pipelined no back pressure. N ascii chars as input each cycle. finding max pair of digits pipelined arbitrarily. 8 chars of input each cycle? no problem to get FMAX of 100+MHz.

    ~1 Gbyte per sec of ascii could be processed 😎 🎄
    github.com/JulianKemmerer/Pipe

  14. So what can you do with the ability to read arbitrary registers out of your design over ? Capture time series data (last four packet bytes) in your regs and write a little script that launches and you have yourself a tiny homemade cross platform logic analyzer thing!
    github.com/JulianKemmerer/Pipe

  15. Say I am debugging an project on the of pico-ice board. I want to know the contents of some registers down in my design (which destination MAC address my tried to transmit). I don't want to use manufacturer specific ILAs and don't want to hand route a bunch of debug signals to my top level for external equipment I don't have.

    In PipelineC just assign to a globally visible debug probe wire:
    github.com/JulianKemmerer/Pipe

  16. Not having based live debug for the was a little annoying

    so I am hoping to revive the small pipelinec project that was sorta a build your own chipscope attempt 🤙 and demo that on the pico ice

  17. Learn PipelineC basics featuring the pico-ice dev board from tinyVision.ai! It has a Lattice Semiconductor @latticesemi and @Raspberrypi. This intro covers , , and projects using OSS CAD Suite tools.
    youtube.com/watch?v=wWdvuAQXeS0

  18. Don't forget the intro to pipelinec talk is just over 24 hours away! See you there folks 🤓

  19. Come learn some PipelineC basics featuring the pico-ice dev board from tinyVision.ai! It has a Lattice Semiconductor @latticesemi and @Raspberrypi. This intro talk will cover , , and projects using OSS CAD Suite tools.

  20. Come on over to the Discord channel if you want to join the conversation about this fun work 🤓 discord.gg/vBUtmBZcxC -ice

  21. Have been super pleased with the and board that pico-ice.tinyvision.ai/ sent me to experiment with. Many thanks and I look forward to putting together a talk for intro users getting started with and boards like the pico-ice 🤓

  22. Over at Digital Design HQ , I'm documenting and discussing a to-from project. Stop on by 👋 and see how nice it is to work in 🤓 discord.gg/ceheSfKzRM

  23. folks: What's possible with just a few hundred bits of memory? Make custom . friends @suarezvictor and @dutracgi have done LARGE demos in the past. Now the challenge is to be very SMALL! 🤓
    tinytapeout.com/competitions/d

  24. Anyone want to help make a version of @DG3YEV 's real time display but for audio? Have Arty w/ ready to go for testing. Picturing the start of some kind of visualizer 🤩 with more learning along the way 🤓
    x.com/Dg3Yev/status/1796857709

  25. @tsalvo Just saw your work in progress on the stack implementation in 👋 . Great work, how neat! Hope it has gone well and as always happy to help! 🤓 github.com/tsalvo/varvara-fpga

  26. Dream is more generic pipelined compute accelerator . next ? Want to allow for custom dataflow to-from memories managed by one or more threads. Always looking for anyone who wants to help, plenty of work to do. Come chat on Discord 🤓 discord.gg/7DECDMvbmc

  27. What kind of fixed point (or small floating point) shaders without textures do yall folks know of? I know @BrunoLevy01 had that great link I need to dig into still 🙌 🤓

    x.com/BrunoLevy01/status/17469

  28. out of the rendering loop ~DMA style: only limited by the direct connection memory bandwidth to-from DDR controller and the compute pipeline 🔥

  29. pure function autopipelining combined with libraries for sharing hardware resources with ~AXI like buses + arbitration made this all possible.

  30. 1/4 as many RV32I @risc_v cores for same or better performance. Threads share auto pipelined ~15 stage kernel() hardware function to offload shader compute. CPU is now bottleneck for moving data around from RAM to pipeline and back.

  31. C code that each thread is running: github.com/JulianKemmerer/Pipe

    C code and play nicely together for when hardware and software need to share interfaces/types 🤓

  32. Four RV32I @risc_v cores totaling ~333M IPS do work with a 480p frame buffer 🤓. 20 threads, ~software rendering, but focus isn't on CPU core, next up: experiments with custom accelerator pipelines to offload compute 😏
    Thanks @BrunoLevy01 and friends!

  33. Use to listen to FM with an ! Huge thanks to @dutracgi and @Darkknight512 for making this first version a great learning experience. And @deepwavedigital for the fantastic hardware platform and workplace <3

    github.com/JulianKemmerer/Pipe

  34. Very cool work from @DutraCGI , love trying to follow along 😅 🤓

    Modulator made with simulation with and cocotb! Raised Cosine filter with 0.35 rollof and 4 samples/symbol !

    x.com/DutraCGI/status/17159122

  35. If the problem is given in the right language, doing RTL digital design like RX can be made as simple as a typical problem.
    Any more folks out there want to give the puzzle a go? 🤓

    github.com/JulianKemmerer/Pipe

  36. PipelineC's new 'shared resource buses' are pretty neat: Multiple 'threads' of C function derived state machines can easily share resources (memory, compute, etc) by generating AXI-like buses and arbitration. This is still highly experimental but very powerful - reach out if you want to make something together! github.com/JulianKemmerer/Pipe

  37. Frame buffers are the "shared resource" in the recent Game of Life demo. PipelineC generates arbitration between multiple state machine 'threads' simultaneously reading+writing the buffers. What can you do with C code and a frame buffer? github.com/JulianKemmerer/Pipe

  38. 'C code' Game of Life in at 48FPS 🤓 PipelineC derived state machines and new shared resource buses make it super easy to adapt multi-threaded software C implementations for quick FPGA prototypes. Highly experimental but very powerful - reach out if you want to make something together! github.com/JulianKemmerer/Pipe