4.3 Design setup using Caravel_user_project

Table of contents

Prerequisites

To follow this lesson, you need a working linux system with docker installed and started. The instruction to setup the environment is introduced in Lesson 2.1.

When you complete that lesson. You can come back here.

Caravel User Project need python3 virtual environment package that can be installed by this command:

sudo apt-get install python3-venv -y

Introduction

In this lesson, we will learn how to use caravel_user_project to harden our design and integrate it into the caravel_user_project so that it can be fabricated using Caravel Test Harness.

It is recommended to have a github account with the proper setup so that you can checkout and push the change to github. However, it is optional, you can skip the start with the OPTIONAL at the beginning in this tutorial

(OPTIONAL) Create a github repository

  1. First, we create a repository on github to store our code. This can be done by going to https://github.com and log in with your account credentials. After that you can select the menu to create a new repository.
  2. In the create new repository page, you will enter the information and select if your repository is public or private. Press ‘Create repository’ when done.
  3. When your setup is done, you will see the instruction to add files to your new created repository. Please remember the path to your repository because we will need it later.
  4. It is a good practice to set up an ssh key to access github. You can follow the instructions in this tutorial or this videos.

Clone the repository and run the setup

1. Download the source code using git

Download the source code with the correct release/tag. In this tutorial, we will use the latest release tag of Caravel which is mpw-9k as follows:

git clone -b mpw-9k https://github.com/efabless/caravel_user_project \
uniccass_example
cd uniccass_example
cass@unic-cass:~$ git clone -b mpw-9j https://github.com/efabless/caravel_user_project uniccass_example
Cloning into 'uniccass_example'...
remote: Enumerating objects: 6186, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6186 (delta 0), reused 0 (delta 0), pack-reused 6181
Receiving objects: 100% (6186/6186), 297.77 MiB | 4.70 MiB/s, done.
Resolving deltas: 100% (3533/3533), done.
Note: switching to '8a9b6d080160ad1ee840029f525e2eaf71d77585'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (211/211), done.
2. (optional) Change it to your github repository

Next, we will rename the original git url into an upstream so that we can edit the file and push it into our own git repository

git remote rename origin upstream
git remote add origin git@github.com:duyhieubui/caravel_uniccas_example.git

You should replace my github with your created repository using the ssh URI that you created in the previous part.

3. (Optional) Create a new branch to work on

We create a new branch so that it will not interfere with the original one

git checkout -b unic-cass
4. (Optional) Push the source code into our repository

We now can push the source code into our own repository and start changing it

git push -u origin unic-cass

Run the setup

1. Set up the environment variables

Next, we need to set up two environment variables PDK. This is needed during the setup because caravel_user_project use a specific version of Skywater 130nm PDK and a specific version of Openlane.

export PDK=sky130A
2. Complete the setup

Next, we need to download the required file for caravel to run by this command:

make setup
cass@unic-cass:~/uniccass_example$ make setup
if [ -d "/home/cass/uniccass_example/caravel" ]; then\
        echo "Deleting exisiting /home/cass/uniccass_example/caravel" && \
        rm -rf /home/cass/uniccass_example/caravel && sleep 2;\
fi
echo "Installing caravel-lite.."
Installing caravel-lite..
git clone -b mpw-9k https://github.com/efabless/caravel-lite /home/cass/uniccass_example/caravel --depth=1
Cloning into '/home/cass/uniccass_example/caravel'...
remote: Enumerating objects: 440, done.
remote: Counting objects: 100% (440/440), done.
remote: Compressing objects: 100% (300/300), done.
remote: Total 440 (delta 135), reused 297 (delta 83), pack-reused 0
Receiving objects: 100% (440/440), 192.74 MiB | 6.96 MiB/s, done.
Resolving deltas: 100% (135/135), done.
Note: switching to '48f5e70b205848abcd89e33f7912d6932e94b152'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (349/349), done.
export CARAVEL_ROOT=/home/cass/uniccass_example/caravel && export MPW_TAG=mpw-9j && make -f /home/cass/uniccass_example/caravel/Makefile check-env
make[1]: Entering directory '/home/cass/uniccass_example'
make[1]: Nothing to be done for 'check-env'.
make[1]: Leaving directory '/home/cass/uniccass_example'
export CARAVEL_ROOT=/home/cass/uniccass_example/caravel && export MPW_TAG=mpw-9j && make -f /home/cass/uniccass_example/caravel/Makefile install_mcw
make[1]: Entering directory '/home/cass/uniccass_example'
if [ -d "/home/cass/uniccass_example/mgmt_core_wrapper" ]; then \
        echo "Deleting existing /home/cass/uniccass_example/mgmt_core_wrapper" && \
        rm -rf /home/cass/uniccass_example/mgmt_core_wrapper && sleep 2;\
fi
Installing mcw-litex-vexriscv..
Cloning into '/home/cass/uniccass_example/mgmt_core_wrapper'...
remote: Enumerating objects: 847, done.
remote: Counting objects: 100% (847/847), done.
remote: Compressing objects: 100% (579/579), done.
remote: Total 847 (delta 327), reused 622 (delta 254), pack-reused 0
Receiving objects: 100% (847/847), 441.95 MiB | 7.20 MiB/s, done.
Resolving deltas: 100% (327/327), done.
Note: switching to '503eda0790085712ffef7f4ad8934c7daed3237f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (770/770), done.
make[1]: Leaving directory '/home/cass/uniccass_example'
cd openlane && make openlane
make[1]: Entering directory '/home/cass/uniccass_example/openlane'
if [ -d "/home/cass/uniccass_example/dependencies/openlane_src" ]; then\
        echo "Deleting exisiting /home/cass/uniccass_example/dependencies/openlane_src" && \
        rm -rf /home/cass/uniccass_example/dependencies/openlane_src && sleep 2; \
        fi
git clone https://github.com/The-OpenROAD-Project/OpenLane -b 2023.07.19-1 --depth=1 /home/cass/uniccass_example/dependencies/openlane_src && \
        cd /home/cass/uniccass_example/dependencies/openlane_src && \
        export OPENLANE_IMAGE_NAME=efabless/openlane:2023.07.19-1 && \
        export IMAGE_NAME=efabless/openlane:2023.07.19-1 && \
        make pull-openlane
Cloning into '/home/cass/uniccass_example/dependencies/openlane_src'...
remote: Enumerating objects: 427, done.
remote: Counting objects: 100% (427/427), done.
remote: Compressing objects: 100% (378/378), done.
remote: Total 427 (delta 55), reused 201 (delta 17), pack-reused 0
Receiving objects: 100% (427/427), 8.25 MiB | 8.35 MiB/s, done.
Resolving deltas: 100% (55/55), done.
Note: switching to '30ee1388932eb55a89ad84ee43997bfe3a386421'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

make[2]: Entering directory '/home/cass/uniccass_example/dependencies/openlane_src'
Makefile:23: warning: undefined variable 'DOCKER_SWAP'
Makefile:26: warning: undefined variable 'DOCKER_MEMORY'
Makefile:42: warning: undefined variable 'ROUTING_CORES'
Makefile:84: warning: undefined variable 'STD_CELL_LIBRARY'
2023.07.19-1: Pulling from efabless/openlane
2d473b07cdd5: Already exists
e1cbbee2397e: Pulling fs layer
70e8f6ff478a: Pull complete
352fcbed802f: Pull complete
ffd26f349b41: Pull complete
35494e6eaa87: Pull complete
3f5fe7bafa8d: Pull complete
be7d8cb65024: Pull complete
921f112c30b5: Pull complete
ef9d012b4add: Pull complete
93da3611422f: Pull complete
79949c403a26: Pull complete
de66efaec11f: Pull complete
f94649ef639a: Pull complete
323f9de28156: Pull complete
f5f369f038a1: Pull complete
3dc8060a4a53: Pull complete
683b20fbca27: Pull complete
b9e056b52fb0: Pull complete
6c5b6eb91b7e: Pull complete
11a468897c64: Pull complete
9fd20dc6ee4a: Pull complete
8c51c188f550: Pull complete
4cf217b5b227: Pull complete
eaaa873ba1c3: Pull complete
cc5c8eb7fd73: Pull complete
29d424c3ca7d: Pull complete 
a1764e9008d2: Pull complete
d9413a10e34e: Pull complete
a5745dd661e2: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:735dcc4c1fe41a44d81b1477f79e480914ada7c201e42716f181e9fa26c5292b
Status: Downloaded newer image for efabless/openlane:2023.07.19-1
docker.io/efabless/openlane:2023.07.19-1
make[2]: Leaving directory '/home/cass/uniccass_example/dependencies/openlane_src'
make[1]: Leaving directory '/home/cass/uniccass_example/openlane'
export CARAVEL_ROOT=/home/cass/uniccass_example/caravel && export MPW_TAG=mpw-9j && make -f /home/cass/uniccass_example/caravel/Makefile pdk-with-volare
make[1]: Entering directory '/home/cass/uniccass_example'
rm -rf ./venv
python3 -m venv ./venv
./venv/bin/python3 -m pip install --upgrade --no-cache-dir pip
Requirement already satisfied: pip in ./venv/lib/python3.10/site-packages (22.0.2)
Collecting pip
  Downloading pip-24.1.2-py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 6.2 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.0.2
    Uninstalling pip-22.0.2:
      Successfully uninstalled pip-22.0.2
Successfully installed pip-24.1.2
./venv/bin/python3 -m pip install --upgrade --no-cache-dir volare
Collecting volare
  Downloading volare-0.18.1-py3-none-any.whl.metadata (7.6 kB)
Collecting click<9,>=8.0.0 (from volare)
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting pyyaml<7,>=5 (from volare)
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting rich<14,>=12 (from volare)
  Downloading rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting httpx>=0.22.0 (from volare)
  Downloading httpx-0.27.0-py3-none-any.whl.metadata (7.2 kB)
Collecting pcpp<2,>=1.2 (from volare)
  Downloading pcpp-1.30-py2.py3-none-any.whl.metadata (23 kB)
Collecting zstandard<1,>=0.19.0 (from volare)
  Downloading zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)
Collecting anyio (from httpx>=0.22.0->volare)
  Downloading anyio-4.4.0-py3-none-any.whl.metadata (4.6 kB)
Collecting certifi (from httpx>=0.22.0->volare)
  Downloading certifi-2024.7.4-py3-none-any.whl.metadata (2.2 kB)
Collecting httpcore==1.* (from httpx>=0.22.0->volare)
  Downloading httpcore-1.0.5-py3-none-any.whl.metadata (20 kB)
Collecting idna (from httpx>=0.22.0->volare)
  Downloading idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting sniffio (from httpx>=0.22.0->volare)
  Downloading sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)
Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx>=0.22.0->volare)
  Downloading h11-0.14.0-py3-none-any.whl.metadata (8.2 kB)
Collecting markdown-it-py>=2.2.0 (from rich<14,>=12->volare)
  Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich<14,>=12->volare)
  Downloading pygments-2.18.0-py3-none-any.whl.metadata (2.5 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich<14,>=12->volare)
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Collecting exceptiongroup>=1.0.2 (from anyio->httpx>=0.22.0->volare)
  Downloading exceptiongroup-1.2.2-py3-none-any.whl.metadata (6.6 kB)
Collecting typing-extensions>=4.1 (from anyio->httpx>=0.22.0->volare)
  Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Downloading volare-0.18.1-py3-none-any.whl (35 kB)
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 4.2 MB/s eta 0:00:00
Downloading httpx-0.27.0-py3-none-any.whl (75 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 75.6/75.6 kB 10.8 MB/s eta 0:00:00
Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.9/77.9 kB 11.8 MB/s eta 0:00:00
Downloading pcpp-1.30-py2.py3-none-any.whl (91 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 91.1/91.1 kB 10.3 MB/s eta 0:00:00
Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 kB 9.9 MB/s eta 0:00:00
Downloading rich-13.7.1-py3-none-any.whl (240 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 240.7/240.7 kB 11.3 MB/s eta 0:00:00
Downloading zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.4/5.4 MB 8.7 MB/s eta 0:00:00
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 16.1 MB/s eta 0:00:00
Downloading pygments-2.18.0-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 10.8 MB/s eta 0:00:00
Downloading anyio-4.4.0-py3-none-any.whl (86 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.8/86.8 kB 12.9 MB/s eta 0:00:00
Downloading idna-3.7-py3-none-any.whl (66 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 16.8 MB/s eta 0:00:00
Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Downloading certifi-2024.7.4-py3-none-any.whl (162 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 163.0/163.0 kB 10.8 MB/s eta 0:00:00
Downloading exceptiongroup-1.2.2-py3-none-any.whl (16 kB)
Downloading h11-0.14.0-py3-none-any.whl (58 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 12.9 MB/s eta 0:00:00
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Installing collected packages: pcpp, zstandard, typing-extensions, sniffio, pyyaml, pygments, mdurl, idna, h11, exceptiongroup, click, certifi, markdown-it-py, httpcore, anyio, rich, httpx, volare
Successfully installed anyio-4.4.0 certifi-2024.7.4 click-8.1.7 exceptiongroup-1.2.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 idna-3.7 markdown-it-py-3.0.0 mdurl-0.1.2 pcpp-1.30 pygments-2.18.0 pyyaml-6.0.1 rich-13.7.1 sniffio-1.3.1 typing-extensions-4.12.2 volare-0.18.1 zstandard-0.23.0
./venv/bin/volare enable 78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
Version 78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc not found locally, attempting to download…
Downloading common.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_fd_io.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_fd_pr.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_fd_sc_hd.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_fd_sc_hvl.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_ml_xx_hd.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Downloading sky130_sram_macros.tar.zst… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Version 78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc enabled for the sky130 PDK.
make[1]: Leaving directory '/home/cass/uniccass_example'
Cloning into '/home/cass/uniccass_example/dependencies/timing-scripts'...
remote: Enumerating objects: 765, done.
remote: Counting objects: 100% (228/228), done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 765 (delta 152), reused 190 (delta 146), pack-reused 537
Receiving objects: 100% (765/765), 2.47 MiB | 5.25 MiB/s, done.
Resolving deltas: 100% (521/521), done.
Already up to date.
rm -rf ./venv-cocotb
python3 -m venv ./venv-cocotb
./venv-cocotb/bin/python3 -m pip install --upgrade --no-cache-dir pip
Requirement already satisfied: pip in ./venv-cocotb/lib/python3.10/site-packages (22.0.2)
Collecting pip
  Downloading pip-24.1.2-py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 7.7 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.0.2
    Uninstalling pip-22.0.2:
      Successfully uninstalled pip-22.0.2
Successfully installed pip-24.1.2
./venv-cocotb/bin/python3 -m pip install --upgrade --no-cache-dir caravel-cocotb
Collecting caravel-cocotb
  Downloading caravel_cocotb-1.2.4-py3-none-any.whl.metadata (14 kB)
Collecting PrettyTable (from caravel-cocotb)
  Downloading prettytable-3.10.2-py3-none-any.whl.metadata (30 kB)
Collecting PyYAML (from caravel-cocotb)
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting anytree (from caravel-cocotb)
  Downloading anytree-2.12.1-py3-none-any.whl.metadata (8.1 kB)
Collecting click (from caravel-cocotb)
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting cocotb==1.8.0 (from caravel-cocotb)
  Downloading cocotb-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)
Collecting cocotb-coverage==1.1.0 (from caravel-cocotb)
  Downloading cocotb_coverage-1.1.0-py3-none-any.whl.metadata (4.0 kB)
Collecting oyaml (from caravel-cocotb)
  Downloading oyaml-1.0-py2.py3-none-any.whl.metadata (1.2 kB)
Collecting rich (from caravel-cocotb)
  Downloading rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting tabulate (from caravel-cocotb)
  Downloading tabulate-0.9.0-py3-none-any.whl.metadata (34 kB)
Collecting find-libpython (from cocotb==1.8.0->caravel-cocotb)
  Downloading find_libpython-0.4.0-py3-none-any.whl.metadata (2.8 kB)
Collecting python-constraint (from cocotb-coverage==1.1.0->caravel-cocotb)
  Downloading python-constraint-1.4.0.tar.bz2 (18 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting six (from anytree->caravel-cocotb)
  Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting wcwidth (from PrettyTable->caravel-cocotb)
  Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting markdown-it-py>=2.2.0 (from rich->caravel-cocotb)
  Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich->caravel-cocotb)
  Downloading pygments-2.18.0-py3-none-any.whl.metadata (2.5 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich->caravel-cocotb)
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Downloading caravel_cocotb-1.2.4-py3-none-any.whl (70 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.9/70.9 kB 3.4 MB/s eta 0:00:00
Downloading cocotb-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 8.8 MB/s eta 0:00:00
Downloading cocotb_coverage-1.1.0-py3-none-any.whl (31 kB)
Downloading anytree-2.12.1-py3-none-any.whl (44 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 44.9/44.9 kB 18.0 MB/s eta 0:00:00
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 11.5 MB/s eta 0:00:00
Downloading oyaml-1.0-py2.py3-none-any.whl (3.0 kB)
Downloading prettytable-3.10.2-py3-none-any.whl (28 kB)
Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 kB 10.5 MB/s eta 0:00:00
Downloading rich-13.7.1-py3-none-any.whl (240 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 240.7/240.7 kB 11.2 MB/s eta 0:00:00
Downloading tabulate-0.9.0-py3-none-any.whl (35 kB)
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 12.3 MB/s eta 0:00:00
Downloading pygments-2.18.0-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 10.7 MB/s eta 0:00:00
Downloading find_libpython-0.4.0-py3-none-any.whl (8.7 kB)
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Building wheels for collected packages: python-constraint
  Building wheel for python-constraint (pyproject.toml) ... done
  Created wheel for python-constraint: filename=python_constraint-1.4.0-py2.py3-none-any.whl size=24060 sha256=149868ad5ac3412203340402086bac39a91fc6814803e9d422a8911fd4dd5f2f
  Stored in directory: /tmp/pip-ephem-wheel-cache-zzw6x3eu/wheels/2e/f2/2b/cb08b5fe129e4f69b7033061f256e5c551b0aa1160c2872aee
Successfully built python-constraint
Installing collected packages: wcwidth, python-constraint, find-libpython, tabulate, six, PyYAML, pygments, PrettyTable, mdurl, cocotb, click, oyaml, markdown-it-py, cocotb-coverage, anytree, rich, caravel-cocotb
Successfully installed PrettyTable-3.10.2 PyYAML-6.0.1 anytree-2.12.1 caravel-cocotb-1.2.4 click-8.1.7 cocotb-1.8.0 cocotb-coverage-1.1.0 find-libpython-0.4.0 markdown-it-py-3.0.0 mdurl-0.1.2 oyaml-1.0 pygments-2.18.0 python-constraint-1.4.0 rich-13.7.1 six-1.16.0 tabulate-0.9.0 wcwidth-0.2.13
docker pull efabless/dv:cocotb
cocotb: Pulling from efabless/dv
3153aa388d02: Pull complete
d5228064349b: Pull complete
46fa9e0cc8aa: Pull complete
7c4aa436b05e: Pull complete
f2fb9b433d42: Pull complete
d53135f02529: Pull complete
54eda94f6847: Pull complete
02eb3d638028: Pull complete
182b22a63d6c: Pull complete
f3b9bf098a9f: Pull complete
8390c31b2539: Pull complete
f6d666ddb25b: Pull complete
628d7834854e: Pull complete
0a5c962a11c8: Pull complete
034017c2445f: Pull complete
Digest: sha256:346213d0e7504640ed830928db9b01a7b64289ab0f4a6ca3a0e2904a9175acab
Status: Downloaded newer image for efabless/dv:cocotb
docker.io/efabless/dv:cocotb
if [ -d "/home/cass/mpw_precheck" ]; then\
        echo "Deleting exisiting /home/cass/mpw_precheck" && \
        rm -rf /home/cass/mpw_precheck && sleep 2;\
fi
Installing Precheck..
Cloning into '/home/cass/mpw_precheck'...
remote: Enumerating objects: 227, done.
remote: Counting objects: 100% (227/227), done.
remote: Compressing objects: 100% (172/172), done.
remote: Total 227 (delta 72), reused 149 (delta 46), pack-reused 0
Receiving objects: 100% (227/227), 10.40 MiB | 3.82 MiB/s, done.
Resolving deltas: 100% (72/72), done.
Note: switching to '95c34d19570f50833dd8908dc735dbefd52cba88'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

latest: Pulling from efabless/mpw_precheck
2d473b07cdd5: Already exists
b0cc55c15c17: Pull complete
7cd893633856: Pull complete
645cb89d0537: Pull complete
a88f50966349: Pull complete
56445826e92e: Pull complete
56958d6897c9: Pull complete
4f4fb700ef54: Pull complete
2cd4911ec294: Pull complete
ac679679beb0: Pull complete
227c7942e2ba: Pull complete
f9d722574bd0: Pull complete
6dbeca187ba1: Pull complete
47d782068167: Pull complete
fffaaeeaf7be: Pull complete 
7ba1af338724: Pull complete
39a5be7bb58b: Pull complete
dac19c12c3f5: Pull complete
0b5f7401a836: Pull complete
89dd92422c11: Pull complete
388061b90790: Pull complete
5bea41102ad8: Pull complete
Digest: sha256:d3f16302a271377efbe53ecc7457a07e7e110cb56c2baf33f24e2ff7aa144725
Status: Downloaded newer image for efabless/mpw_precheck:latest
docker.io/efabless/mpw_precheck:latest

Now we are done with the setup. We are ready to run the examples from caravel user project.

What’s next?

We have done the setup of the caravel user project. It is time to run some examples from the project. Please note that you need to set the PDK to the correct directory so that we don’t have to run the set up again. This can fasten the flow. In the next lesson, we will go through the process to harden a design and integrate it into the test harness.

References

  1. Efabless, MPW-6 Walkthrough
  2. Caravel harness documentation
  3. Caravel User Project Documentation