RSSAmplifier

Blog

Thoughts From a Programmer

Recent content on Thoughts From a Programmer

yehowshuaimmanuel.comRSS feed ↗23 posts

Latest posts

An Interesting Consequence of Bluespec's One Rule at a Time Semantics

By now, I’ve been using Bluespec, specifically Bluespec Classic/Haskell for a few years in my spare time(since 2022). In fact, I’ve been doing some small experiments on the ULX3S FPGA with hopes and dreams of one day fully implementing a RISC-V SOC. Bluespec is in many ways a functional language. It has partial functions, sums and product types, monads, and the like. It also has atomic…

About

First and foremost, I’m a Christian, a follower of Christ. I believe that in Christ, there is forgiveness of sins and a path to live life the way our Creator intended. You can reach me at: yimmanuel3@gatech.edu Mathematics I enjoy mathematics a lot. I’ve made it my goal to finish Feynman’s lectures in the next couple years. So far, I’ve only made it through part of the first lecture on Quantum…

Graphics Pipelines and GPU Hardware : Lab Notes 1

Intro To eventually design a 3D GPU, we must learn about 3D GPU micro-architecture. Since the literature on 3D GPU micro-architecture seems to be sparse, we must infer GPU micro-architecture by programmatically interacting with GPUs via Mesa3D and or OpenGL for example. Good Resources Mesa Sources Portable GL | A simple yet functionl OpenGL 3 implementation in pure C without a GLSL - instead…

My First Linux Kernel Contribution!

A month ago, Greg Kroah-Hartman accepted a small patch I worked with my co-worker on into his usb tree! Yes, it’s a small patch that fixes a sysfs update issue(the underlying musb controller state is fine) - but still! It’s my first contribution to the Linux kernel - the codebase that started it all!!! Yay!

Working on ICanBuildIt.io

The Mission I got into computers when I was 7. Since then, I’ve worked on compilers, kernels, logic synthesizers, and chip designs. Man! I could only wish that I had an all-in-one website to teach me how to design a CPU or write a kernel or compiler from scratch! That’s what ICanBuildIt.io aims to solve! Let’s teach the next 100M programmers to create truly limitless tech by…

We wanted flying cars, instead we got 140 characters.

Innovation has fundamentally changed in US tech culture after the 2000s. This is reflected in VC culture. Silicon valley produced easy wins. I’m not saying social media companies like Twitter, Facebook, and Reddit or e-commerce companies like Amazon, Ebay, AirBnb and Uber weren’t innovative, but if Henry Ford and contemporary tech titans of his day were focused on building AirBnb…

PowerPC Retreat But Not Surrender

Why I’m Leaving PowerPC (For Now) – But I Will Return to Conquer It! For the past several months, I have waged war against one of the most difficult ISAs in existence: PowerPC . Armed with a deep understanding of RTL design and a stubborn refusal to quit, I set out to build an out-of-order (OOO) PowerPC core with proper branch prediction. I failed. Not because of a lack of effort. Not because of a…

Towards Simulating Verilog With Haskell

Often times when simulating digital circuits, you wonder why a signal changed during a certain cycle. You can trace your way back through the RTL sources and slowly begin to figure out why. For larger designs however, this process is often cumbersome. So I’ve decided to work on an RTL simulator that can form hypotheses about why a certain signal changed in a given cycle. The first step to…

Thoughts Probably Occur Outside Time and Space

This Sunday, I was trying to delve deeper into group theory and stumbled upon non-euclidean geometries. This made me question the validity of Euclidean geometries and ultimately question the very nature of existence itself. Here is a summary of my thought process: I began my journey by contemplating something as seemingly straightforward as the Pythagorean theorem, a cornerstone of Euclidean…

Sunsetting the Fastwave Backend

Nearly a couple years ago in summer 2022, I set out, by God’s grace, to write the waveform viewer I’d always wanted. It would be called Fastwave . It would be written in Rust 1 . 3 months and 300 hours later, Fastwave was parsing VCD files emitted from all major vendor tools. I then began work on writing the frontend in e-GUI but gave up after a couple weeks after I discovered it was…

Unpacking Challenges from the POWER ISA: Why I'm Exploring RISC-V's Formal Models

In the POWER Instruction Set Architecture (ISA), the Machine State Register’s Hypervisor bit (MSR_HV) and the most significant bit of the Effective Address (EA_0) play crucial roles in address translation: When MSR_HV == 1: If EA_0 == 0, the Hypervisor Offset Real Mode Address mechanism (as described in Section 5.7.3.1 of the POWER ISA) controls the access. If EA_0 == 1, bits 4:63 of the…

AI as a Utility

I’ve started forking out $20/mo for Chat GPT-4, which has helped me solved some obscure problems, such as identifying which registers can hold function call variables in the POWER ISA C-ABI specification - information that would take several minutes at least to an hour or more to track down with Google. Clearly, Chat GPT-4 saves me quite possibly dozens of hours per month. Since the…

Improving The Bluespec Compiler

I’ve been using Bluespec Classic/Haskell on and off. I’d like to make a number of improvements to the user experience such as: Improving parser error messages Add language server support Add qualified imports and package scoping to Bluespec Classic. Parse documentation directly into HTML. More advanced wishlist: Step by step debug mode that annotates/overlays values of signals in…

An Interesting SBIR Topic

There’s an SBIR I’d like to apply to, but it’d be helpful to have a team when proposing. My current employer is open to applying to SBIRs outside of their current domain of expertise, and is currently registered to be able to do contracts with the government. I know that people have read my blog in the past, so I’m hoping to find the following types of folks interested in…

Current Interests / Top Of Mind

Extremely Eager, Eager, and Lazy Programming Languages Most hardware description languages, in a sense, are extremely eager. The logic described always runs. In contrast, most programming languages are lazy, as functions described only run when called. Haskell is extremely lazy in this regard. Bluespec is somewhere between lazy and extremely eager. Functions/rules always run, but only when they…

GoodBye Rust?

After the whole Rust Trademark Dispute , which seemed to carry notable political overtones , I am simply not interested in a language that makes it difficult to describe what I’m working on without running afoul of violating the language trademarks or brand. It seems the Rust foundation wants Rust to occupy more space in my head than I originally intended for it - which was, namely, to be a…

Taking a look at Clash HDL

I really need a solid hardware description language, and bluespec has some issues that make me want to consider Clash . Here are some potential paths: 1. MASSIVE Bluespec Overhaul I basically have to reverse engineer bluespec, and then document all of it Support for type hints in IDE Package building Automatic HTML documentation Bluespec Pros Excellent type system with first class support for…

Bluespec. The Rust of Hardware Design?

My Foray Into Bluespec In 2017, a senior Phd student in the Synergy Accelerator Lab at Georgia Tech designed a machine learning accelerator engine in BSV - probably because they taught(perhaps still do) BSV as part of the undergrad curriculum at a particular university in Seoul. In 2018, my grad advisor wanted me to synthesize those designs into an FPGA. Since the BSV syntax was foreign to me at…

Getting Started With Bluespec

Disclaimer I should also tell you up front is that there is a REAL learning curve to get comfortable with Bluespec. But good languages such as Rust, Scala, and Haskell often come with a price tag to correctly wield their true powers. First Steps If you’re wondering why it may be worth your while to learn Bluespec, I’d suggest reading through Bluespec. The Rust of Hardware Design? .…

Rational Points On an Elliptical Curve

How can we find all rational points on an elliptic curve? Known The Elliptic Curve(ECC) equation: $y^2 = x^3 - 2x$ A point on the ECC: $P_0 : (x_0, y_0)$ A Better Defined Problem Instead of trying to find all rational points on an ECC outright, how about we try to solve the following problem which appears to be better defined and might also give us the insight needed to find all rational points.

Programming Languages

My Thoughts on Programming Languages Posted on Jul 3, 2021 In this post, I compare some languages I’ve worked with based on features that are important to me, then at the end, I decide my favorite language. I don’t really keep a timer on how long I spend writing code, but I’d feel pretty comfortable claiming that I spent the following amount of time in the following various languages. Language…

(untitled)

The Craze for Retro

Recently, I’ve found myself making plans and choosing the necessary parts in order to soup-up my old iMac for Christmas break. I like old technology and generally old things that are in good working condition. To be quite honest, I’m definitely not alone. An original Apple I computer was sold around two years ago for $280,000, an expensive testimony to the appeal of the old to many. The…