SIMON Block Cipher on ZUB1CG

Back when I was in college in 2013, the NSA released two new block cipher implementations in a white paper that had many people scratching their heads.  They created quite a stir and their appearances seemed to coincide with my growing interest in AES and cryptography.  When it came time to propose a project for one of my FPGA graduate-level courses in Vivado HLS, the new block ciphers from the paper, SIMON and SPECK still hadn't been 'cracked' and no-one had found any backdoors.  So, they looked to be perfect candidates and I really enjoyed implementing and debugging these quick algorithms.

 

A few years later, being one of the few in my friend-group familiar with FPGAs, I was asked to help with a lab project using the Avnet Ultra96 board.  I was familiar with how to take a design from concept to RTL implementation in SystemVerilog, but finding details on how to integrate a design on a Xilinx MPSoC was a real challenge being a student outside the industry.  But with a good challenge comes the drive to overcome it and forge a path that makes it easier for others to follow.

 

Thus the idea for a useful tutorial series was born: a SIMON coprocessor in AMD Xilinx fabric, controlled by a Petalinux OS running on the attached ARM processor!

 

Part 0: Environment Setup

 

   Package and distro versions always seem to cause frustration when trying to follow online Linux/Unix tutorials.  Some of the tools for this project in particular can drop mysterious error codes, or send you on a whack-a-mole quest guessing which pieces are broken.  This environment setup video aims to carve a clear path through known versions and tools. Recording a dedicated Intel CPU desktop from installing Ubuntu 22.04 to building your first zub1cg base image, this video details the process of environment setup, start-to-finish.  Some day I'll figure out the licensing requirements to make an .iso image available, but for now, every later video is built off of this environment, no additions, no substitutions.

Part 1: SIMON Cipher Background

 

 

    This article contains background details and diagrams on what the SIMON Cipher is, where it comes from, and what it's used for.  This RTL implementation will be as flexible as possible, but the restrictions of the Avnet ZUB1CG resources do drive certain design decisions. I'll highlight these design restrictions as they come up and provide a link to the git repo of code so that it can be viewed as updates are pushed.

Part 2: Xilinx Memory IP

 

Coming Soon