AI Generated Open-Source Silicon Design Challenge ================================================= AI RISCV Timer -------------------- Table of Contents ----------------- - `About <#about>`__ - `Step 1. Generation of the Verilog Code using AI Generated Tool <#step-1-generation-of-the-verilog-code-using-ai-generated-tool>`__ - `Using ChatGPT <#using-chatgpt>`__ - `1. Question Asked. generate a timer verilog code type <#1-question-asked-please-create-an-innovative-counter--of-completely-new-type>`__) - `2. Question Asked. Clock is round 80MHz counter <#2-question-asked-more-complex-probablistic-counter>`__ - `Using Bard <#using-bard>`__ - `Step 2. Cloning the Caravel Repo: <#step-2-cloning-the-caravel-repo->`__ - `Step 3. Embedding the Verilog file to the User_Project_Wrapper <#step-3-embedding-the-verilog-file-to-the-user-project-wrapper>`__ - `Step 4. Changes made to the config.json <#step-4-changes-made-to-the-configjson>`__ - `Step 5. Run make openlane <#step-5-run-make-openlane>`__ - `Step 6. Debugging with ChatGPT <#step-6-debugging-with-chatgpt>`__ - `Step 7. OpenLane stuck at Detailed Route <#step-7-openlane-stuck-at-detailed-route>`__ - `Step 8. Setting up in the cloud <#step-8-setting-up-in-the-cloud>`__ - `Step 9. Flow Successful <#step-9-flow-successful>`__ - `Step 10. Compressing the files <#step-10-compressing-the-files>`__ - `Step 11. Uploaded the files on Github <#step-11-uploaded-the-files-on-github>`__ - `Step 12. MPW-Precheck Submitted to Caravel <#step-12-mpw-precheck-submitted-to-caravel>`__ - `Step 13. Tapeout Submitted to MPW-PreCheck <#step-13-tapeout-submitted-to-mpw-precheck>`__ - `Step 14. Final Submission <#step-14-final-submission>`__ - `Step 15. Comments made by ChatGPT on the repository <#step-15-comments-made-by-chatgpt-on-the-repository>`__ - `THANK YOU! <#thank-you->`__ - `Acknowledgement <#acknowledgement>`__ - `Contributor <#contributor>`__ - `References <#references>`__ - `Forked from Caravel User Project <#forked-from-caravel-user-project>`__ - `Please fill in your project documentation in this README.md file <#please-fill-in-your-project-documentation-in-this-readmemd-file>`__ Table of contents generated with markdown-toc About ----- The detaisl of the AI Generated Open-Source Silicon Design Challenge can be found here: https://efabless.com/ai-generated-design-contest .. _step-1-generation-of-the-verilog-code-using-ai-generated-tool: Step 1. Generation of the Verilog Code using AI Generated Tool -------------------------------------------------------------- Using `ChatGPT <https://chat.openai.com/>`__: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I started off with asking ChatGPT to design various complicated and innovative counter. It gave a Fractional Counter, a Adaptive Counting Window Counter, a Self-Modifying Counter, a Bloom Filter Counter and various other counters. Complete conversation can be found here: https://chat.openai.com/share/87d72c4a-db14-4f90-97f6-ba1bad512cba. Here are a few illustrations: .. _1-question-asked-please-create-an-innovative-counter-of-completely-new-type: 1. Question Asked. Please create an innovative counter of completely new type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Answer: |image| -------------- .. _2-question-asked-more-complex-probablistic-counter: 2. Question Asked. more complex probablistic counter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Answer: |image1| -------------- .. _3-explanation-given-by-chatgpt: 3. Explanation given by ChatGPT ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/dfda0c0d-975b-4288-8537-35225cb1f745 :alt: image -------------- .. _4-question-asked-please-explain-the-above-counter-further-and-how-it-is-helpful: 4. Question Asked. Please explain the above counter further and how it is helpful? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Answer: |image2|\ |image3|\ |image4|\ -------------- Using `Bard <https://bard.google.com/>`__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/6b7febac-07af-44b0-b410-27b5cfb749c9 :alt: image **However, based on the above answers, we finalized building up a Bloom Filter Counter over the results given by ChatGPT!** .. _step-2-cloning-the-caravel-repo: Step 2. Cloning the Caravel Repo: --------------------------------- Forking the `Caravel User Project Repo <https://github.com/efabless/caravel_user_project>`__ and cloning the copy. ``git clone https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc``\ Some points on Caravel by ChatGPT: |image5| .. _step-3-embedding-the-verilog-file-to-the-user_project_wrapper: Step 3. Embedding the Verilog file to the User_Project_Wrapper -------------------------------------------------------------- For simplicity, the above `Bloom Counter Generated by ChatGPT <https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/blob/main/verilog/rtl/dvsdfossbfc.v>`__ was Embedded in User_Project_Wrapper. Here is the code snippet: :: assign io_oeb[15:0]=16'b1111_1111_1111_1111; assign io_oeb[`MPRJ_IO_PADS-1:16]=0; assign io_out=1; assign la_data_out=1; assign wbs_dat_o=1; assign user_irq=1; reg [15:0] counter; reg [15:0] bloomFilter; always @(posedge user_clock2 or posedge io_in[0]) begin if (io_in[0]) begin counter <= 16'b0000_0000_0000_0000; bloomFilter <= 16'b0000_0000_0000_0000; end else if (io_in[9]) begin if (bloomFilter[io_in[8:1]]) begin // Bloom filter indicates that the input data is likely already counted counter <= counter; end else begin // Bloom filter indicates that the input data is likely not counted counter <= counter + 1; bloomFilter[io_in[8:1]] <= 1; end end end assign io_out[31:16]=counter; .. raw:: html </br> The modified code is available [HERE](https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/blob/main/verilog/rtl/user_project_wrapper.v). .. _step-4-changes-made-to-the-configjson: Step 4. Changes made to the config.json --------------------------------------- There were various errors as depicted in the actions page `HERE <https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/actions>`__ during the flow. The new updated final json file can be found `HERE <https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/blob/main/openlane/user_project_wrapper/config.json>`__ .. _step-5-run-make-openlane: Step 5. Run make openlane ------------------------- Executing the following commands to run: ``cd caravel_dvsdfossbfc``\ ``make openlane``. There were various issues which were debugged stepwise. Some of them are present `HERE <https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/blob/main/openlane/user_project_wrapper/config.json>`__. Also, the `OpenLane issues <https://github.com/The-OpenROAD-Project/OpenLane/issues>`__ page helped.,/br> .. _step-6-debugging-with-chatgpt: Step 6. Debugging with ChatGPT ------------------------------ Here are some debugging of TCL scripts using the ChatGPT. .. image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/e3b5214d-d4ff-45e1-95d0-39aa7268df33 :alt: image -------------- ChatGPT trying to correct the scripts: |image6| .. _step-7-openlane-stuck-at-detailed-route: Step 7. OpenLane stuck at Detailed Route ---------------------------------------- The flow stuck at the Detailed Route due to huge consumpsion of RAM(>6GB). The Repo was shifted to a Remote Desktop cloud provided by eFabless and it worked. .. _step-8-setting-up-in-the-cloud: Step 8. Setting up in the cloud ------------------------------- The following steps help to set up and run OpenLane again: https://github.com/efabless/caravel_user_project/blob/main/docs/source/index.rst#section-quickstart .. _step-9-flow-successful: Step 9. Flow Successful ----------------------- After around 2 hours the flow was successful. |image7| .. _step-10-compressing-the-files: Step 10. Compressing the files ------------------------------ The files greater than 100MB were compressed using the ``make compress`` command. .. _step-11-uploaded-the-files-on-github: Step 11. Uploaded the files on Github ------------------------------------- The files were pushed using the ``git add`` and ``git push`` commands through the SSH. .. _step-12-mpw-precheck-submitted-to-caravel: Step 12. MPW-Precheck Submitted to Caravel ------------------------------------------ .. _step-13-tapeout-submitted-to-mpw-precheck: Step 13. Tapeout Submitted to MPW-PreCheck ------------------------------------------ .. _step-14-final-submission: Step 14. Final Submission ------------------------- .. _step-15-comments-made-by-chatgpt-on-the-repository: Step 15. Comments made by ChatGPT on the repository --------------------------------------------------- .. image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/ce7da985-b47c-434c-8c12-c8322a37f13e :alt: image THANK YOU! ---------- Acknowledgement =============== 1. `eFabless Team <https://platform.efabless.com/>`__:For the help in helping me fix numerous errors during the flow and providing the Remote Desktop Cloud 2. `GOOGLE SKYWATER Team <https://github.com/google/skywater-pdk>`__: For providing such a platform 3. `VSD Team <https://www.vlsisystemdesign.com/ip/>`__: For motivation and quick debug 4. `OpenROAD Team <https://github.com/The-OpenROAD-Project/OpenLane>`__: For minor quick debug) 5. `FOSSEE Team <https://esim.fossee.in/>`__: For providing motivation Contributor =========== **Sumanto Kar**\ Project Staff and M.Tech Student Indian Institute of technology, Bombay **Contact:**\ jeetsumanto123@gmail.com References ========== - https://en.wikipedia.org/wiki/Counting_Bloom_filter - https://www.geeksforgeeks.org/counting-bloom-filters-introduction-and-implementation/ Forked from Caravel User Project ================================ |License| |UPRJ_CI| |Caravel Build| +-------------------+ | ❗ Important Note | +===================+ +-------------------+ .. _please-fill-in-your-project-documentation-in-this-readmemd-file: Please fill in your project documentation in this README.md file ---------------------------------------------------------------- Refer to `README <docs/source/index.rst#section-quickstart>`__ for a quickstart of how to use caravel_user_project Refer to `README <docs/source/index.rst>`__ for this sample project documentation. .. |image| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/edffcfac-1ee6-44e6-8008-6485fb7b4d9f .. |image1| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/5954381f-3fbd-474c-9c6c-7625a42c63af .. |image2| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/89b79f3a-c0f9-4bab-b4b8-e8ef9a6c02b1 .. |image3| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/d777db96-8ee2-4fd8-9f8b-f89a7afab686 .. |image4| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/31cb2ebd-5747-48bc-b831-e970647a065f .. |image5| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/9e95e535-26ba-45a4-96e4-afbfd776fb4f .. |image6| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/a9069b65-da50-45d5-9fb0-7b037e5a3f59 .. |image7| image:: https://github.com/Eyantra698Sumanto/caravel_dvsdfossbfc/assets/58599984/969b1c65-c2bc-49fc-9eb2-6f9eac3fe20e .. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg :target: https://opensource.org/licenses/Apache-2.0 .. |UPRJ_CI| image:: https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml/badge.svg :target: https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml .. |Caravel Build| image:: https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml/badge.svg :target: https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml