
Hello Everyone😊,
Welcome to my mid-term blog for Google Summer of Code 2025 for the project Enhanced Verilog Support & Stability
Enhanced Verilog Support & Stability: The phase-1 of the project is about making the Verilog features of CircuitVerse namely Circuit to Verilog and Verilog to Ciruit stable and take it into production from the current beta or testing phase. Along with documenting and testing the whole Verilog feature.
I have completed the first phase of the project and following things have been added or implemented :
Verilog is a hardware description language (HDL) used to model electronic systems, especially digital circuits. It allows designers to describe the structure and behavior of hardware using code. Commonly used in FPGA and ASIC design, Verilog supports simulation, testing, and synthesis of hardware components using software.
CircuitVerse has the feature of generating Verilog code for the circuit designed in the Simualtor. The moduleVerilog() function is responsible for generating the verilog moduels for the Circuit element. Some of the circuit elements which are mentioned below don’t have this module, this causes the calling of missing verilog functions. The goal of the first week was to add the verilog module for all the missing elements.
How the Circuit to Verilog feature work

Checkout the Below Video for before and after fix
**In total 7 verilog modules were added, some of them are displayed below : **

While most of the Circuit elements do have the verilog module, some of them contains inconsistent logic and bugs. The second week of the project involved identifying these bugs and fixing them. This issue is still open due to large number of bugs, and it was decided by the mentors that I should keep working on the issue for whole GSOC duration and keep removing the bugs. Most of the bugs are minor. Major bugs are mentioned below in deatiled with links of PRs for the solved bugs.

Yosysdigitaljs-server created by Marek Materzok is the technology behind the feature that allows users to convert Verilog code into circuits in the simulator. The Yosys server converts the Verilog constructs like ‘for loop’ into basic circuit components like Gates and Mux to be implemented in the CircuitVerse Simulator. It takes .v files and convert them into JSON files of digitalJS format which can be used by Circuitverse to parse the circuit into simulator.

The Circuitverse Yosys forked repo is behind its parent by some 39 PRs, the parent repo had been migrated from js to ts and even the folder structure has been changed. Updating Yosys has been a priority for a long time and this time the update was finally completed. My mentor Mk Aboobacker helped me a lot in this issue and guided me thoughout this issue. A strategy was planned where I fetched the complete parent and then reapplied the CircuitVerse changes over it. These changes include the server file to receive the request from circuitverse backend, docker file and other configuartion and minor changes from CircuitVerse.

The Yosys repo is now updated, folder structure updated & consistent with its parent and migrated to ts. In the future any changes to its parent can be easily merged with much conflicts between the two.
CircuitVerse provides its users the feature of Verilog code editor. Which can be used by the users to write verilog code and then convert them into circuits and further integrate them into their circuits on the simulator.
The Code Editor is built using CodeMirror — a powerful and customizable browser-based code editor.
But the UI/UX of the code editor is not particularly encouraging for the users, also there are lots of features that can be added to it to make it better.

Some of the PRs have not been made yet, they will be made in the upcoming week
As part of this project, one of the primary tasks has been to document the verilog feature in deatil with examples for the CircuitVerse users. I have created detailed documentation for both the Verilog feature with examples for the CircuitVerse users to experiment with it and use them.
A special focus was also given to creating the documentation for the developers of the CircuitVerse so that they can easily setup the Verilog feature in thier local machine and develop it further.

One of the bug which was highlighted by one of the users of CircuitVerse was that when verilog code for large ciruits when written in verilog editor, it slows the simulator and in some cases freezes the whole screen and gets stuck. To fix it and find other similar problems auditing and testing of the verilog feature was done.
I have proposed to write some tests for the verilog feature. Will work on this in future.

My journey so far has been exciting and amazing. Each week I stumble upon things I don’t know, and I learn it, exeriment with it and then implement it. It has truly been a developers dream till now. My mentors and CircuitVerse community have been very helpful and inspirational in my little journey. Looking forward to contribute and learn more.
I would like to thank, Aboobacker MK, Vedant Jain, Niladri Adhikary, Josh Varga, Aman Asrani, and other mentors and circuitverse contributors for helping and mentoring me throught the journey.