Commonly Painful Cuda Compilation And Runtime Errors

Setting up bundled-up source code- installing its dependencies, building makefiles, and finally running tests to make sure it all works- can be a real pain. Recently I’ve gone through this ordeal again on my Optimus-enabled Linux partition, but could not find the original documentation I created five years ago. This post is mostly a reference for future me who probably wants to install CUDA-reliant applications on their other machines, but it’s also for those struggling in the same way.

Read More

Who Cares About Silicon Photonics?

An emerging technology that has a lot of potential is silicon photonics (SiP). Over the past few years various foundries (Global Foundries, IHP) have released photonic PDKs, or process development kits. A PDK is what a microelectronic circuit designer uses to design circuits, it’s the set of layout rules, device models, simulation data, etc that one uses when designing a circuit. The fact that these companies have released a PDK, and are currently fabbing SiP circuits implies they expect the market to rise dramatically in the coming years, but why?

Read More

Successive Approximation ADCs - Theory and Parameters

I have a (possibly extremely ambitious goal) of designing and taping out a basic successive approximation register (SAR) analog to digital converter (ADC) over the course of the next few months. I’m very much in the process of learning how to do this, so the posts here should just reflect me learning how all of it works, basically just collections of my notes. Hopefully most of the things I write should be correct, but corrections might be in order later down the line.

Read More

Convolutional and Turbo Codes - Part 1

In 1949 Claude Shannon (and some of his pals) came up with a pretty clever framework for how information can be transmitted over an arbitrary channel in the presence of noise. A channel simply refers to any medium where a signal can be modulated. Information refers to knowledge not previously available to the reciever. If I tell you I’m going to say 1, and then I say 1, no information has been transferred, it must be new knowledge, which is important when we think about encoding information.

Read More