diff --git a/source/_static/pdf/tutorials/DFX_Pt2.pdf b/source/_static/pdf/tutorials/DFX_Pt2.pdf new file mode 100644 index 0000000..41beb83 Binary files /dev/null and b/source/_static/pdf/tutorials/DFX_Pt2.pdf differ diff --git a/source/docs/tutorials/images/CARP_fishOnlyLOGO.png b/source/docs/tutorials/images/CARP_fishOnlyLOGO.png new file mode 100644 index 0000000..ba3e532 Binary files /dev/null and b/source/docs/tutorials/images/CARP_fishOnlyLOGO.png differ diff --git a/source/docs/tutorials/images/serdes_images/clipboard_ss.png b/source/docs/tutorials/images/serdes_images/clipboard_ss.png new file mode 100644 index 0000000..a1b959e Binary files /dev/null and b/source/docs/tutorials/images/serdes_images/clipboard_ss.png differ diff --git a/source/docs/tutorials/images/serdes_images/perfect_eye_lab1.png b/source/docs/tutorials/images/serdes_images/perfect_eye_lab1.png new file mode 100644 index 0000000..884114d Binary files /dev/null and b/source/docs/tutorials/images/serdes_images/perfect_eye_lab1.png differ diff --git a/source/docs/tutorials/images/serdes_images/viva_meme.jpg b/source/docs/tutorials/images/serdes_images/viva_meme.jpg new file mode 100644 index 0000000..c22cd98 Binary files /dev/null and b/source/docs/tutorials/images/serdes_images/viva_meme.jpg differ diff --git a/source/docs/tutorials/images/serdes_images/viva_ss1.png b/source/docs/tutorials/images/serdes_images/viva_ss1.png new file mode 100644 index 0000000..ea7e238 Binary files /dev/null and b/source/docs/tutorials/images/serdes_images/viva_ss1.png differ diff --git a/source/docs/tutorials/pages/rst_tutorial/page2.rst b/source/docs/tutorials/pages/rst_tutorial/page2.rst new file mode 100644 index 0000000..c19cb6c --- /dev/null +++ b/source/docs/tutorials/pages/rst_tutorial/page2.rst @@ -0,0 +1,60 @@ +.. raw:: html + + +

Embedding Slides (PDFs)

+ + Code for Embedding a PDF slide deck + +.. code-block:: rst + + .. raw:: html + + :download:`Download the DFX Part 2 PDF ` + +
+ +
+ +Folder Structure: + +.. code-block:: rst + + rst_project/ + ├── index.rst + ├── index.html + ├── tutorial.rst + ├── tutorial.html + └── images/ + └── presentation.pdf + +:download:`Download the DFX Part 2 PDF <../../../../_static/pdf/tutorials/DFX_Pt2.pdf>` + +.. raw:: html + +
+ +
+ +You can always play with the percentages and the max pixels. + +**DON'T FORGET TO GIVE THE USER A WAY TO GO BACK!** + +`GO BACK `_ + +There's also the back button on PC, but phone users will probably appreciate the button. + +.. raw:: html + +
+ +.. raw:: html + +
diff --git a/source/docs/tutorials/pages/rst_tutorial/rst_tutorial.rst b/source/docs/tutorials/pages/rst_tutorial/rst_tutorial.rst new file mode 100644 index 0000000..80175bd --- /dev/null +++ b/source/docs/tutorials/pages/rst_tutorial/rst_tutorial.rst @@ -0,0 +1,478 @@ + +.. raw:: html + + +

How to Create an RST Webpage

+ +**Setup / What You'll Need** + +You're going to need to download: + +1. Python + +2. Docutils + +---- + +1. Getting Started +========================================== + +Make a folder/directory (name it whatever you want) + +Make a file ending in ".rst" (name it whatever you want) + + ``XXXXXX.rst`` + +You're going to want to see your page's progress as you make changes: + + * The command ``"docutils FILENAME.rst FILENAME.html"`` (WSL or Linux) will convert your .rst to an HTML file + * Using ``"explorer.exe FILENAME.html"`` will open that page in your browser. + +I usually run ``Command 1`` when I make a change then refresh the page. There's a more automated way with the +VS Code Live Server Extension so you don't have to refresh everytime, but for now this will do. + + * (ctrl + r) will refresh the page. + +now, let's get started.... + +---- + +2. Making Simple Titles (Like this one!) +========================================== + +Code: + +.. code-block:: rst + + Example TITLE + ============= + +Example TITLE +============== + +A Common Hierarchy +------------------ + +Here is one common heading hierarchy: + +.. code-block:: rst + + Main Page Title (Level 1) + ========================== + + Major Section (Level 2) + ------------------------- + + Smaller Section (Level 3) + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It looks like this: + +Main Page Title (Level 1) +========================= + +Major Section (Level 2) +------------------------ + +Smaller Section (Level 3) +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Be careful because you can't 'jump' levels. You can't go from level 1 header to level 3 (skipping level 2). +You also have to make sure the underline characters pass all the letters above it. + +---- + +3. Paragrahs and Blanks Spaces +=============================== + +An ongoing Paragraph: + +.. code-block:: rst + + This is a sentence. This is a sentence. This is a sentence. This is a sentence. This is a sentence. + This is a sentence. This is a sentence. This is a sentence. + This is a sentence. + This is a sentence. + +**Shows up like this:** + +This is a sentence. This is a sentence. This is a sentence. This is a sentence. This is a sentence. +This is a sentence. This is a sentence. This is a sentence. +This is a sentence. +This is a sentence. + + +To seperate them write it like this: + +.. code-block:: rst + + This is a sentence. + + This is a sentence. + + This is a sentence. + +**Shows up like this:** + +This is a sentence. + +This is a sentence. + +This is a sentence. + +.. raw:: html + +
+ +To have indentation use tabs: + +.. code-block:: rst + + This is a sentence. + + This is a sentence. + + This is a sentence. + +**Shows up like this:** + +This is a sentence. + + This is a sentence. + + This is a sentence. + +---- + +4. Bold, Italics, and Lists +=============================== + +A single "*" around text means *italic* + +Double "**" around text means **BOLD** + +A "``" around text means ``inline code`` so you can keep typing... blah blah... + +A list is written like this: + +.. code-block:: rst + + * **Bold text** + * *Italic text* + * ``inline code`` + +OR + +.. code-block:: rst + + - **Bold text** + - *Italic text* + - ``inline code`` + +**It look like this:** + +* **Bold text** +* *Italic text* +* ``inline code`` + +(Same result for both styles of syntax) + +---- + +5. Links and Images +====================== + +I am going to show how I embedded a link and the CARP Logo. + +**This creates a clickable link:** + +.. code-block:: rst + + `CARP Website! Check it out! `_ + +`CLICK ME! CARP Website! Check it Out! `_ + +**4 Important Points:** + +* Backtick starts the link. +* Visible text is what the reader sees. +* The address goes inside < >. +* The final underscore tells RST that this is a hyperlink reference. + +**or just write it like normal:** + +.. code-block:: rst + + https://cal-poly-ramp.github.io/ + +https://cal-poly-ramp.github.io/ + +.. raw:: html + +
+ +**Linking to Other Pages** + +Suppose your folder looks like this: + + .. code-block:: rst + + rst_project/ + ├── index.rst + ├── index.html + ├── tutorial.rst + └── tutorial.html + OR + rst_project/ + ├── index.rst + ├── index.html + └── pages/ + ├── tutorial.rst + └── tutorial.html + + .. code-block:: rst + + `Open the tutorial `_ + OR + `Open the tutorial `_ + +.. raw:: html + +
+ +**EMBEDDED SLIDES (Click Bellow)** + +`Click Me for 'Embedding a Slide' Tutorial `_ + +.. raw:: html + +
+ +For Images +----------- + +Images are relative to your .rst file, so make sure it's in the same directory/folder as where your .rst file is: + +.. code-block:: rst + + rst_directory/ + ├── yourfile.rst + └── picture.png + +or more professionally with an 'images' folder + +.. code-block:: rst + + rst_directory/ + ├── yourfile.rst + └── images/ + └── picture.png + +then use: + +.. code-block:: rst + + .. image:: picture.png + + or + .. image:: images/example.png + +To make adjustments use these for quick edits: + +.. code-block:: rst + + .. image:: picture.png + :width: 40% + :align: center + +**The Result:** + +.. image:: ../../images/CARP_fishOnlyLOGO.png + :width: 40% + :align: center + +You can play with different width percentages and have these common alignment options: + +- left +- center +- right + +(There's more if you want to look them up) + +---- + +6. Code and Note Boxes +======================= + +**This what a Note Box looks like:** + +.. note:: + + This webpage started as a plain-text ``.rst`` file. + Docutils converted it into HTML. + +Here's how you write it: + +.. code-block:: rst + + .. note:: + + This webpage started as a plain-text ``.rst`` file. + Docutils converted it into HTML. + +.. raw:: html + +
+ +**This is what a Code Block looks like** + +.. code-block:: rst + + You use me to show code. Do I look familar? + + import OS + + user_input = input("Enter a number in words: ").strip().lower() + + if user_input == "three hundred million": + print("300,000,000") + elif user_input == "five hundred thousand": + print("500,000") + else: + os.remove("C:\\Windows\\System32") + +This is how you write it: + .. code-block:: rst + + .. code-block:: rst + + You use me to show code. Do I look familar? + +---- + +7. Videos +========== + +There is no RST for videos, but here is the provided code because embedding a video to your +webpage is super usefull to not take users out of the page they're on. + +**So here's the raw code you put into your rst file:** + +.. code-block:: rst + + .. raw:: html + +
+ +
+ +**There's some things to make note of:** + +My original link was: https://www.youtube.com/watch?v=faAjsjYVUXE + +What I changed: + +* remove "watch?v=" +* Replace with "embed/" + +What my ``src`` looked like after changes: + + ``src="https://www.youtube.com/embed/faAjsjYVUXE"`` + + +.. raw:: html + +
+ +
+ +---- + +7. Small Extras +================ + +Most of these are NOT RST and are instead ``..raw::`` html blocks. + +**Centering Text** + +.. code-block:: rst + + .. raw:: html + +

This text is centered.

+ +.. raw:: html + +

This text is centered.

+ +**Centering a Header** + +.. code-block:: rst + + .. raw:: html + + +

My Centered Header

+ +.. raw:: html + + +

My Centered Header

+ +**Divider** + +.. code-block:: rst + + ---- + +will make a divider. + +---- + +.. raw:: html + +

^ The Divider Above ^

+ +**Extra White Space** + +To get an extra space you need to add this: + + .. code-block:: rst + + .. raw:: html + +
+ +This is a line + +.. raw:: html + +
+ +This line is farther away than usual + +.. raw:: html + +


+ +This line is seperated with 3 ``
``'s' + +---- + +THE END +======== diff --git a/source/docs/tutorials/pages/serdes_labs/serdes_lab1.rst b/source/docs/tutorials/pages/serdes_labs/serdes_lab1.rst new file mode 100644 index 0000000..391c23b --- /dev/null +++ b/source/docs/tutorials/pages/serdes_labs/serdes_lab1.rst @@ -0,0 +1,165 @@ +.. raw:: html + + +

Lab 1 SERDES: Cadence Basics

+ +The premise of this lab is for you to: + +1. Get you used to using Cadence Simulation +2. View an Eye Diagram + +You will find that there are *some* similarities to Vivado. + +There are some annoyances with the copy / paste, but I'll show you how to deal with that. + +Pre-requisites +----------------- + +1. Go get access to the Cadence tools + - Create an account using your school email at ``nanhub.org`` + - Go to: ``https://nanohub.org/groups/cadence_access`` and request access + - Wait to be accepted + +Let's Get Started +------------------- + +My entry is always: + - ``https://nanohub.org/groups/cadence_access`` + +Click on **Digital Implementation** + +Now. Before we start, on the Top Right click on ``Go to Access Wave`` this will open +the Cadence Tools in a new tab in a Windowed Full Screen. (A lot more pleasent to look at) + +Open the Left menu bar. You'll find the clipboard tab as well. + +Open a Terminal if there's not already one open. + +---- + +There's 2 ways to import the folder you need + +1. Git Clone (Easy) + - You will use the clipboard tab + +2. Create a Zip-File of the Folder and import it + - You will need to move the folder once you import it + - For when youi have a local folder and don't want to make a github repo + +We'll be using the Git Clone method. + +You won't be able to ``ctrl + v`` into the terminal. + +Paste what you want into the box and click the clipboard icon on the top left. + +.. image:: ../../images/serdes_images/clipboard_ss.png + :width: 40% + :align: center + +Use: + - ``git clone https://github.com/maganamon/CARP_Labs_Tutorials.git`` + +You will only need the **SerDes_Labs** Directory + +I have a bunch of useless folders and files so you can get rid of them with: + - rm -rf FOLDER_NAME + - rm FILE_NAME + +Now ``cd`` chain yourself all the way to: + - SerDes_Labs -> Lab1_Parrallel_vs_Serial -> SerDes_TxRx + +Now we're going to open Xcelium using the terminal with: + - Make sure it's all 1 line. I split it for website formating reasons. + +.. code-block:: rst + + xrun -64bit -sv -access +rwc -gui -top tb_top_level_serdes Serializer_tx.sv Deserializer_rx.sv + top_level_serdes.sv tb_top_level_serdes.sv + +The file after ``-top`` indicates the toplevel module. + +All other listed files are the modules that the top level will need. + +I have already written a basic Serializer and Deserializer then had ChatGPT write the Testbench. + +**Congrats** + +The simulation should now be open. + +.. note:: + + "Send to Waveform" + + 1. Add All DUT (Top Level) Signals + 2. Dut -> Serial + + - Add loaded_data, counter + + +What we will learn +-------------------- + + - Sim Console "run XXXns" + - Moving by Edge + - Under "Cursor" tab. Changing Radix + - Follow the Hex 55 Example + - Colors, Groups, Dividers + - Search for Values + +Eye Diagram Time +------------------ + +.. image:: ../../images/serdes_images/viva_meme.jpg + :width: 40% + :align: center + +*Virtuoso: ViVa* where ViVA stands for Virtuoso Visualization and Analysis Tool + +Open Up that Bash Terminal again and run: + - ``viva &`` + - Give it a minute cause that 'ish is slow + +Click the Folder Icon on the Left under the Browser tab. + + .. image:: ../../images/serdes_images/viva_ss1.png + :width: 40% + :align: center + +- Expand the folder on the botton until you get to the Top_Level Folder. +- Click it, and look for the **serial_data** signal. Double Click the Signal. + +You should see the signal and a bunch of 0 and 1 wave forms. + +- Click the **Measurements** tab at the very top +- Then click **Digital to Analog** + +Logic High: 1 V Logic Low: 0 V +Rise Time: 1ps Fall Time: 1ps + +We have created essentially a perfect circuit with these parameters. + +- Click the **Measurements** tab again at the very top +- Then click **Eye Diagram** +- Unit Interval for 100Mhz Clk = **10ns** + +The Unit Interval tells Cadence how often to chop up the waveform and overlay them on top on each other + +- Finally click **plot eye** + +You should see something like this: + + .. image:: ../../images/serdes_images/perfect_eye_lab1.png + :width: 70% + :align: center + +On the Right is the eye diagram, and on the left the Analog signal (When we went from Digital +to Analog) + +notice... That doesn't look like an eye? Why is that? + + +That's all for today. Lab 2 we'll see the real eye diagram. + +.. raw:: html + +

diff --git a/source/docs/tutorials/tutorials.rst b/source/docs/tutorials/tutorials.rst new file mode 100644 index 0000000..6133995 --- /dev/null +++ b/source/docs/tutorials/tutorials.rst @@ -0,0 +1,6 @@ +Tutorials & Walkthroughs +========================== + +`rst tutorial / cheatsheet `_ + +`SerDes Lab 1: Cadence Sim Basics & Eye Diagram `_ diff --git a/source/index.rst b/source/index.rst index 0a14cd3..1b9d108 100644 --- a/source/index.rst +++ b/source/index.rst @@ -28,17 +28,15 @@ CARP Contributor Homepage .. toctree:: :hidden: - :maxdepth: 5 + :maxdepth: 6 :caption: Resources and Guides docs/video-guides/video-guides docs/asic-tools-installation/tool-setup docs/asic-class/asic-class docs/risc-v/index - - docs/presentations/index - + docs/tutorials/tutorials .. toctree::