sbowles22 /  Purdue-STARS-NEBULA-1

Created
Maintained by sbowles22
Nano Electronics Bringing Undergraduate Learning Ahead (NEBULA) is a project from the Purdue Semiconductor Training And Readiness for Semiconductors (STARS) program that contains 12 early undergrad student projects.
Members 1
SPencer committed a year ago

Caravel User Project

License UPRJ_CI Caravel Build

:exclamation: Important Note

Please fill in your project documentation in this README.md file

Refer to README for a quickstart of how to use caravel_user_project

Refer to README for this sample project documentation.

Refer to the following readthedocs for how to add cocotb tests to your project.

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
    1  cd ~/OpenLane
    2  ls
    3  pwd
    4  ./init_design.py silly-sythensizer
    5  cd designs/silly-sythensizer/
    6  ls
    7  ll
    8  ll src
    9  nano makefile
   10  code .
   11  nano makefile
   12  cd ../..
   13  make mount
   14  cd designs/silly-sythensizer/
   15  make sim_time
   16  cd ../..
   17  make mount
   18  cd designs/silly-sythensizer/
   19  make sim_time
   20  cd ../..
   21  make mount
   22  cd designs/silly-sythensizer/
   23  make sim_time
   24  cd ../.
   25  make mount
   26  cd designs/silly-sythensizer/
   27  make sim_time
   28  cd ../..
   29  make mount
   30  cd designs/silly-sythensizer/
   31  make sim_time
   32  cd ../..
   33  make mount
   34  cd designs/silly-sythensizer/
   35  make sim_time
   36  cd ../..
   37  make mount
   38  cd designs/silly-sythensizer/
   39  make sim_time
   40  cd ../..
   41  make mount
   42  cd designs/silly-sythensizer/
   43  make sim_time
   44  cd OpenLane/designs/silly-sythensizer/
   45  code .
   46  gedit
   47  cd OpenLane/designs/silly-sythensizer/
   48  make sim_time
   49  nano makefile 
   50  ls
   51  nano includes_gl_sdf 
   52  gedit includes_gl_sdf 
   53  make sim_time
   54  nano src/tb_silly_synthesizer.v 
   55  vim src/tb_silly_synthesizer.v 
   56  cd ..
   57  make mount
   58  cd designs/silly-sythensizer/
   59  make sim_time
   60  cvc
   61  cvc64
   62  ls
   63  gedit verilog.log 
   64  make sim_time
   65  gedit verilog.log 
   66  vim src/tb_silly_synthesizer.v 
   67  cd ../test
   68  make sim_time
   69  ls
   70  vim time.log
   71  cd ../silly-sythensizer/
   72  vim includes_gl_sdf 
   73  cd ../test
   74  vim includes_gl_sdf 
   75  cd ../silly-sythensizer/
   76  ls
   77  ls ma
   78  ls mapped/
   79  vim src/tb_silly_synthesizer.v 
   80  vim src/tb_silly_synthesizer.v 
   81  iverilog src/tb_silly_synthesizer.v mapped/synth.v
   82  vim src/tb_silly_synthesizer.v 
   83  make sim_time
   84  gedit time.log
   85  vim src/tb_silly_synthesizer.v 
   86  make sim_time
   87  vim src/tb_silly_synthesizer.v 
   88  make sim_time
   89  vim src/tb_silly_synthesizer.v 
   90  make sim_time
   91  vim src/tb_silly_synthesizer.v 
   92  make sim_time
   93  cd ../..
   94  make mount
   95  cd designs/silly-sythensizer/
   96  make sim_time
   97  top
   98  cd OpenLane/designs/silly-sythensizer/
   99  ll
  100  cd runs/RUN_2023.07.03_16.00.32/
  101  ls
  102  cd results/final
  103  ll
  104  cd ..
  105  ls
  106  vim makefile 
  107  make view_gds
  108  ls
  109  pwd
  110  code .
  111  pwd
  112  ll
  113  git clone https://github.com:STARS-Design-Track-2023/Caravel_STARS_2023.git CUP
  114  git clone https://github.com/STARS-Design-Track-2023/Caravel_STARS_2023.git CUP
  115  cd CUP/
  116  export PDK=sky130A
  117  make setup
  118  export PDK_ROOT=./dependencies/pdks
  119  export OPENLANE_ROOT=./dependencies/openlane_src
  120  echo PDK_ROOT
  121  echo $PDK_ROOT
  122  echo $OPENLANE_ROOT
  123  make setup
  124  cd openlane/
  125  ls
  126  ll
  127  ll ../dependencies/
  128  ll dependencies/
  129  cd ..
  130  make user_proj_example
  131  make clean
  132  git checkout mpw-9d
  133  make clean
  134  echo $OPENLANE_ROOT
  135  export PDK_ROOT=$(pwd)/dependencies/pdks
  136  echo $PDK_ROOT
  137  export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src
  138  make setup
  139  h
  140  export PDK_ROOT=$(pwd)/dependencies/pdks
  141  export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src
  142  make silly-sythensizer
  143  k silly_synthesizer.gds 
  144  klayout silly_synthesizer.gds 
  145  k silly_synthesizer.gds 
  146  alias k
  147  make user_proj_example
  148  make user_project_wrapper
  149  make user_proj_example
  150  git add *
  151  git commit -m "Add dilly synth"
  152  git config --global user.name SPencer
  153  git config --global user.email bowles7@purdue.edu
  154  git push
  155  ssh-keygen
  156  cat ~/.ssh/id_rsa.pub 
  157  git push
  158  git commit -m "Add dilly synth"
  159  cd ..
  160  git info
  161  git log
  162  code .
  163  git add *
  164  git commit -m "Add silly synth"
  165  git push
  166  git remote set-url origin git@github.com:STARS-Design-Track-2023/Caravel_STARS_2023.git
  167  git remote set-url origin google.com
  168  git remote set-url origin git@github.com:STARS-Design-Track-2023/Caravel_STARS_2023.git
  169  git push
  170  grep tb
  171  find -r tb
  172  man find
  173  find tb
  174  find tb*
  175  find testbench
  176  find testbench*
  177  find *testbench*
  178  git status
  179  git log
  180  git pull
  181  git push
  182  git log
  183  mkdir openlane/outel8227
  184  cd openlane/outel8227/
  185  cp `timescale 1ns/100ps
  186  module tb_silly_synthesizer ();
  187      // VARIABLES
  188      localparam time CLK_PERIOD = 100;
  189      integer TESTS_FAILED = 0;
  190      integer TESTS_PASSED = 0;
  191      integer TEST_NUMBER = 0;
  192      // SIGNALS
  193      reg tb_clk, tb_nrst, tb_cs;
  194      reg [16:0] tb_gpio;
  195      wire tb_pwm;
  196      // TASKS
  197      task RESET;
  198          begin
  199              @(negedge tb_clk);
  200              tb_nrst = 0;
  201              @(negedge tb_clk);
  202              tb_nrst = 1;
  203          end
  204      endtask
  205      task SET_CS;
  206          begin
  207              tb_cs = 0;
  208          end
  209      endtask
  210      
  211      task RESET_CS;
  212          begin
  213              tb_cs = 1;
  214          end
  215      endtask
  216      task WAIT (
  217          input integer cycles
  218      );
  219      integer i;
  220          begin
  221              for (i = 0; i < cycles; i = i + 1) begin
  222                  @(posedge tb_clk);
  223              end
  224          end
  225      endtask
  226      task FEED_INPUTS (
  227          input [16:0] gpio
  228      );
  229          begin
  230              @(negedge tb_clk);
  231              tb_gpio = gpio;
  232          end
  233      endtask
  234      task ASSERT_OUTPUTS (
  235          input pwm
  236      );
  237          begin
  238              TEST_NUMBER = TEST_NUMBER + 1;
  239              @(negedge tb_clk);
  240              if (tb_pwm != pwm) begin
  241                  $error("Test %d Failed", TEST_NUMBER);
  242                  $error("Expected: %b", pwm);
  243                  $error("Actual: %b", tb_pwm);
  244                  TESTS_FAILED = TESTS_FAILED + 1;
  245              end else begin
  246                  $info("Test %d Passed", TEST_NUMBER);
  247                  TESTS_PASSED = TESTS_PASSED + 1;
  248              end
  249          end
  250      endtask
  251      // DUTs
  252      `ifdef USE_POWER_PINS
  253  .nrst(tb_nrst),
  254  .cs(tb_cs),
  255  .gpio(tb_gpio),
  256  .pwm(tb_pwm)
  257  cp /home/designer-05/OpenLane/designs/outel8227/config.json .
  258  cp -r /home/designer-05/OpenLane/designs/outel8227/src .
  259  make outel8227
  260  make silly-synthesizer
  261  make user_proj_examples
  262  make user_proj_example
  263  cd ../..
  264  make outel8227
  265  make silly-synthesizer
  266  make silly-synthensizer
  267  make silly-sythensizer
  268  echo $PDK_ROOT
  269  pwd
  270  make outel8227
  271  history
  272  export PDK_ROOT=$(pwd)/dependencies/pdks
  273  export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src
  274  make outel8227
  275  history > ~/cmd_hist.txt
  276  cat ~/cmd_hist.txt 
  277  make setup
  278  make silly-sythensizer
  279  make outel8227
  280  cd openlane/
  281  mkdir Synthia
  282  cd Synthia/
  283  cp /home/designer-24/OpenLane/designs/Synthia/
  284  cp /home/designer-24/OpenLane/designs/Synthia/config.json .
  285  cp -r /home/designer-24/OpenLane/designs/Synthia/src .
  286  cp -r /home/designer-44/OpenLane/designs/z23/config.json ../z23
  287  mkdir ../z23
  288  cd ../23
  289  cd ../z23
  290  cp -r /home/designer-44/OpenLane/designs/z23/config.json .
  291  cp -r /home/designer-44/OpenLane/designs/z23/src .
  292  ls /home/designer-44/OpenLane/designs/z23/
  293  cp -r /home/designer-44/OpenLane/designs/z23/src/ .
  294  ls
  295  cd src 
  296  rm src
  297  cp -r /home/designer-44/OpenLane/designs/z23/src/ .
  298  ls
  299  rm -f src
  300  ls
  301  cp -r /home/designer-44/OpenLane/designs/z23/src/ .
  302  make Synthia
  303  git add *
  304  make z23
  305  git add *
  306  git commit -m "Add Synthia, z23, outel"
  307  git pull
  308  git push
  309  git pull
  310  echo $PDK_ROOT
  311  make calculator
  312  git add *
  313  git commit -m "Calculator openlane"
  314  make DigiDoggs
  315  make Eighty_Twos
  316  make GuitarVillans
  317  make SaSS
  318  make stopwatch
  319  make tmnt
  320  cd ..
  321  find .py
  322  grep cocotb
  323  make DigiDoggs
  324  git add *
  325  git commit -m "Run Openlane on TA instance projects" 
  326  git pull
  327  git push
  328  caravel_cocotb -t hello_world_uart -tag hello_world
  329  make user_project_wrapper
  330  find caravel_interfaces
  331  find -r caravel_interfaces
  332  find caravel_interfaces
  333  find caravel_cocotb
  334  make synth
  335  git add *
  336  git commit -m "Add Aidan's second synth"
  337  echo $PDK_ROOT
  338  make user_proj_wrapper
  339  make caravel
  340  make user_project_wrapper
  341  make integrated designs
  342  make integrated_designs
  343  make user_project_wrapper
  344  git add *
  345  git commit -m "Change integrated designs from sv to v"
  346  git pull
  347  git add *
  348  git commit "Update config.json"
  349  git commit -m "Update config.json"
  350  make user_project_wrapper
  351  echo $PDK_ROOT
  352  make user_project_wrapper
  353  echo $OPENLANE_ROOT
  354  make user_project_wrapper
  355  export $DIR
  356  history > history.txt