Codax2000 / ee437-wireline-transceiver

MIT License
0 stars 0 forks source link

EE 437 Final Project

Alex, Eugene, Tyler, Micheal, Diego, Matthew

GitHub Video Walkthrough

Setup

Creating a New SSH Key

  1. SSH into the Linux server in the client of your choice, like PuTTY, MobaXTerm, or VSCode
  2. Enter the following command to generate a new ssh key: Leave the file and passphrase blank. If it prompts you to overwrite the file, enter y.
    ssh-keygen -o -t rsa -b 4096 -C "YOUR_EMAIL_ADDRESS@EXAMPLE.COM"
  3. Enter cat ~/.ssh/id_rsa.pub to output the new ssh key to the terminal.
  4. Copy the text (ctrl+C works on your own computer, this is why using an SSH is easier than doing it on the Linux Servers).
  5. Go to your personal settings on GitHub, under "SSH and GPG Keys" and click "New SSH Key".
  6. Enter a descriptive name (like "Linux Lab Key") and paste the key into the GitHub box, and click "Add SSH Key".

Cloning the GitHub Repository

  1. In a Linux terminal, cd into the directory where you would like to have your EE437 folder.
  2. Enter git clone git@github.com:Codax2000/ee437-wireline-transceiver.git EE437 into the command line. It should create a new directory and populate it with the contents of the repository.
  3. cd into the new folder and type ls -al to ensure that the contents roughly match the GitHub repository.

Testing Virtuoso

  1. Enter cd cadence to enter the Cadence directory.
  2. Enter tcsh to make sure you are using the c-shell, or this won't work.
  3. Start Virtuoso by entering virtuoso &. The first time will take a few minutes, be patient.
  4. In the library manager, you should see libraries for testing GPDK and FreePDK.

Testing GPDK

  1. In the library manager, select gpdk_test and open the nmos_test schematic.
  2. Launch ADE and load the spectre_state1 simulation in ADE, under "Session > Load State", and select the spectre_state1 cellview.
  3. Run the simulation. It should show a VGS sweep, with high-vt, low-vt, and standard-vt devices, like this: GPDK Simulation

Testing FreePDK

  1. In the top-level folder, enter source setup_cadence.csh. This will set the PDK_DIR environment variable.
  2. In the library manager, select freepdk_channel_response_test and open the test_nmos schematic.
  3. Launch ADE and load the spectre_state1 simulation in ADE, under "Session > Load State", and select the spectre_state1 cellview.
  4. Run the simulation. It should show a typical VDS sweep with a set VGS, like this: FreePDK Simulation
  5. If there is an error showing that there is no associated model, go to Setup > Model Libraries and add ./cadence_refs/freepdk45.l.

Using NangateOpenCellLibrary with GPDK

  1. Navigate to the test_nangate_with_gpdk library.
  2. Open the double_inverter cell and launch ADE.
  3. Open the saved spectre state and run the transient simulation.
  4. A couple notes on simulations together:
    1. You have to have both model libraries linked. If you attach a new library to gpdk, make sure to add ./cadence_refs/freepdk45.l in Setup > Model Libraries.
    2. You need to connect the VDD! and VSS! ports to a 1V and 0V vdc voltage source for the standard cells to work properly.

Version Control

Creating a New Branch

  1. Go to the GitHub Issues Page and create a new issue. Describe what you will be doing.
  2. On the right side, assign yourself under "Assignees".
  3. Under "Development", create a new branch. The default name is fine, shorten if you like.
  4. To switch to your new branch, enter:
    git fetch origin
    git checkout ENTER-NEW-BRANCH-NAME

Collaborating With git

  1. To save changes and add them to your branch on the main repository, enter the following:
    git pull                        # pull any changes so you can push safely
    git add .                       # track all files, or you can add them individually
    git commit -m "COMMIT MESSAGE"  # briefly describe changes
    git push                        # push your changes to GitHub
  2. To merge your branch with the main, please create a pull request on GitHub.
    1. Go to Pull Requests.
    2. Create a new pull request, with base: main on the left and compare: your-new-branch on the right.
    3. Briefly describe what you've done in the branch you'd like to merge with main.
    4. Create the pull request.
  3. It's good practice to ensure there aren't any conflicts before merging. GitHub will check these automatically.
  4. If you have made a new library, please change your cds.lib file to have relative paths, i.e. all paths are ./path_to_your_new_library instead of /home/your_name/EE437/cadence/path_to_your_new_library`.
  5. Please give others a heads up if your changes impact them.
  6. If there are no conflicts, confirm the merge and delete your old branch.
  7. This should also resolve the issue in the issues page. Make sure it's been resolved by checking the issues page.

Other Useful git Commands

  1. To see all branches:
    git branch --all
  2. To delete a local branch (don't do this unless the corresponding GitHub branch is merged):
    git branch -d branch-to-delete