This blog post is the final report for the CircuitVerse Vue Simulator project, which was part of Google Summer of Code 2024. The project aimed to complete the new Vue-based simulator for CircuitVerse, a digital logic simulator.
Fixing existing bugs and completing the implementation of remaining simulator components was the primary goal of the Task.
This included conversion of the following components:
Layout Elements Panel
TestBench Panel
TestBench Creator
TestBench Validator
Alert Message Box
Some Bug fixes that were done:
The mobile version of the vue simulator was not implemented. The goal was to make the simulator responsive and mobile-friendly.
Mobile components that were implemented:
Circuit Elements Mobile Panel
Properties Mobile Panel
Timing Diagram Mobile Panel
Quick Buttons Mobile Panel
Verilog Editor Mobile Panel
Mobile Sidebar
and User Menu
Some features that were implemented:
The goal was to convert the existing codebase to TypeScript and eliminate jQuery from the codebase. Also, all DOM manipulations were to be transferred to Vue.
The following components were converted to TypeScript:
Project.ts
Utils.ts
Testbench.ts
OpenOffline.vue
plotArea.ts
TimingDiagramPanel.vue
app.ts
arrayHelper.ts
backgroundArea.ts
data.ts
moduleSetup.ts
sequential.ts
verilogHelpers.ts
Circuit.ts
eventQueue.ts
quinMcCluskey.ts
customThemeAbstraction.ts
applyTheme.vue
layoutMode.ts
layoutNode.ts
layoutBuffer.ts
Also all the DOM manipulations were transferred to respective Vue components eliminating jQuery.
The goal was to develop a comprehensive test suite for the Vue simulator.
Implemented Test cases for the Vue simulator using
Vitest
JsDOM
@vue/test-utils
Implementation of test cases:
Created a testing environment using Vitest and JsDOM, configured in the vite.config.ts file.
Wrote all the test cases under the /spec folder using Vitest and mounted the components them using @vue/test-utils.
Created a /testdata folder under the spec folder for storing the testing data
Created a /circuits folder to keep all the circuits elements data
After implementing all this we can finally run our test cases using npm run test cmd
The goal was to move the Global CSS styles to the Vue components Scoped CSS and finish refactoring the codebase.
The following Global CSS styles were moved to the Vue components:
UX.css
main.stylesheet.css
The goal was to integrate stability improvements and address any performance issues.
Some of the stability improvements that were done:
The goal was to merge updates and bug fixes from the main CircuitVerse repository.
The embedded view of CircuitVerse circuits can be used to display circuits in an iframe on other websites.
By clicking the Embed button on the bottom right, a dialog box can be opened, allowing the user to create a customised embed view for the circuit.
Some of the major PRs that were created during the project period:
Phase 1 blog GSoC@24 Niladri Adhikary
week 0
- GSoC@24 - Community Bondingweek 1 & 2
- GSoC@24 - week 1&2 blogweek 3 & 4
- GSoC@24 - week 3&4 blogweek 5 & 6
- GSoC@24 - week 5&6 blogweek 7 & 8
- GSoC@24 - week 7&8 blogweek 9 & 10
- GSoC@24 - week 9&10 blogweek 11 & 12
- GSoC@24 - week 11&12 blogThe project was successfully completed and all the goals were achieved. The new Vue simulator is now ready to be integrated into the main CircuitVerse repository. The project was a great learning experience and I would like to thank my mentors for their guidance and support throughout the project. I would also like to thank Google for giving me this opportunity to work on such an amazing project.