GSoC 2018 Project Summary

What is Google Summer of Code ?

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.

Why did I participate in it ?

Ever since I learnt how to code I have always wanted to contribute to open source projects. This, I have to say was the most important reason for me to apply for Google Summer of Code. Fortunately enough, my proposal was selected for GSoC 2018.

Which organization did I work for ?

As I was scrolling through the oraganizations list I came across apertus°. This oraganization has deeply interested me owing to my inclination towards technology and filmmaking. In contrast to 2017, potential proposals could be sent only after successfully completing their qualification tasks. As I was interested in doing a hardware project I completed the challenge task. Once I decided on the project to work on, I have submitted my proposal for the same.

GSoC 2018 Project link

Link to Project (Git repository)


Finished Objectives

  1. Created a transmitter module that is an LFSR PRNG with 8b10b encoding which serializes data stream with 10:1 serialization ratio.
  2. Design optimizations are done to the same module. Synthesis and implementation of the module are done which have passed the timing analysis successfully.
  3. Design, synthesis and implementation of a receiver module that receives data stream, deserializes it with 10:1 ratio and the 10 bit parallel data is decoded. The module also xors the incoming data with an LFSR PRNG of the seed value so that the number of incorrectly transmitted bits are known.
  4. Both the modules are designed for Zynq-7020 board and were tested in Vivado 2018 version at 100MHz of serial clock.
  5. Objectives 2, 3 and 4 for MachXO2 are accomplished and the respective modules are tested in Lattice Diamond at 100MHz serial clock.

Objectives to be completed

  1.  Setup and hold time issues are yet to be resolved for the transceiver designed for MachXO2
  2. Testing the transceivers on the hardware is yet to be done
  3. Establishing a communicational link between the mentioned FPGAs and designing the packet protocol are yet to be done
  4. Completing said unfinished objectives will constitute my future plan.

 Difficulties faced

  1.  Writing tcl scripts to the projects in Diamond and Vivado was challenging.
  2.  Designing a transceiver with SERDES with ratio 10:1 for the MachXO2 with no primitives available that support 10:1 SERDES ratio was a challenge.


       I would like to thank my GSoC mentors Herbert Poetzl and Alex D for their unbridled support. I would also like to thank all those who have helped me on this project on various gitter and slack channels. Lastly, I would like to thank Google for creating and managing this brilliant platform for encouraging students to contribute to open source projects.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s