.. raw:: html
|License| |Documentation Status| |Build Status|
Overview <#overview>
__
Caravel Architecture <#caravel-architecture>
__
Quick Start for User Projects <#quick-start-for-user-projects>
__
Digital User Project <#digital-user-project>
__Analog User Project <#analog-user-project>
__Required Directory Structure <#required-directory-structure>
__
Additional Material <#additional-material>
__
Caravel is a template SoC for Google SKY130 free shuttles. The current SoC architecture is given below.
.. raw:: html
Datasheet and detailed documentation exist here <https://caravel-harness.readthedocs.io/>
__
.. raw:: html
.. _getting-started:
Caravel is composed of three main sub-blocks: management area, storage area, and user project area.
.. _management-area:
The managment area includes a picorv32 <https://github.com/cliffordwolf/picorv32>
__ based SoC that includes a number of periphrals like timers, uart, and gpio. The managemnt area runs firmware that can be used to:
For a complete list of the SoC periphrals, check the memory map <https://github.com/efabless/caravel/blob/master/verilog/rtl/README>
__
.. _storage-area:
The storage area is an auxiliary storage space for the managment SoC. It holds two dual port RAM blocks (1KB) generated by
OpenRAM <https://github.com/VLSIDA/OpenRAM.git>
__
The storage area is only accessible by the management SoC.
.. _user-project-area:
This is the user space. It has a limited silicon area 2.92mm x 3.52mm
as well as a fixed number of I/O pads 38
and power pads 4
.
The user space has access to the following utilities provided by the management SoC:
38
IO Ports128
Logic analyzer probesYour area is the full user space, so feel free to add your
project there or create a differnt macro and harden it seperately then
insert it into the user_project_wrapper
for digital projects or insert it into user_project_analog_wrapper
for analog projects.
.. _digital-user-project:
If you are building a digital project for the user space, check a sample project at caravel_user_project <https://github.com/efabless/caravel_user_project>
__.
If you will use OpenLANE to harden your design, go through the instructions in this README <https://github.com/efabless/caravel/blob/master/openlane/README.rst>
__.
Digital user projects should adhere the following requirements:
Top module is named user_project_wrapper
The user_project_wrapper
adheres to the pin order defined at Digital Wrapper Pin Order <https://github.com/efabless/caravel/blob/master/openlane/user_project_wrapper_empty/pin_order.cfg>
__.
The user_project_wrapper
adheres to the fixed design configurations at Digital Wrapper Fixed Configuration <https://github.com/efabless/caravel/blob/master/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl>
__.
The user project repository adheres to the Required Directory Structure <#required-directory-structure>
__.
.. _analog-user-project:
If you are building an analog project for the user space, check a sample project at caravel_user_project_analog <https://github.com/efabless/caravel_user_project_analog>
__.
Analog user projects should adhere the following requirements:
Top module is named user_analog_project_wrapper
The user_analog_project_wrapper
uses the empty analog wrapper <https://github.com/efabless/caravel/blob/master/mag/user_analog_project_wrapper_empty.mag>
__.
The user_analog_project_wrapper
adheres to the same pin order and placement of the empty analog wrapper <https://github.com/efabless/caravel/blob/master/mag/user_analog_project_wrapper_empty.mag>
__.
IMPORTANT ^^^^^^^^^
Please make sure to run make compress
before commiting anything to
your repository. Avoid having 2 versions of the
gds/user_project_wrapper.gds
one compressed and the
other not compressed.
For information on tooling and versioning, please refer to tool-versioning.rst <./docs/source/tool-versioning.rst>
__.
gds/
: includes all the gds files used or produced from the
project.def
: includes all the def files used or produced from the
project.lef/
: includes all the lef files used or produced from the
project.mag/
: includes all the mag files used or produced from the
project.maglef
: includes all the maglef files used or produced from the
project.spi/lvs/
: includes all the spice files used or produced from the
project.verilog/dv
: includes all the simulation test benches and how to
run them.verilog/gl/
: includes all the synthesized/elaborated netlists.verilog/rtl
: includes all the Verilog RTLs and source files.openlane/<macro>/
: includes all configuration files used to
run openlane on your project.info.yaml
: includes all the info required in this example <https://github.com/efabless/caravel/blob/master/info.yaml>
__. Please make sure that you are pointing to an
elaborated caravel netlist as well as a synthesized
gate-level-netlist for the user_project_wrapper
NOTE:
If you're using openlane to harden your design, the ``verilog/gl`` ``def/`` ``lef/`` ``gds/`` ``mag`` ``maglef`` directories should
be automatically populated by openlane.
.. _additional-material:
.. _mpw-two:
Open MPW Program - MPW-TWO Walkthrough <https://www.youtube.com/watch?v=jBrBqhVNgDo>
__MPW Two Shuttle Program <https://efabless.com/open_shuttle_program/2>
__.. _mpw-one:
Caravel User Project Features -- What are the utilities provided by caravel to the user project ? <https://youtu.be/zJhnmilXGPo>
__Aboard Caravel -- How to integrate your design with Caravel? <https://youtu.be/9QV8SDelURk>
__Things to Clarify About Caravel -- What versions to use with Caravel? <https://youtu.be/-LZ522mxXMw>
__45 Chips in 30 Days: Open Source ASIC at its best! <https://www.youtube.com/watch?v=qlBzE27at6M>
__Check mpw-one-final <https://github.com/efabless/caravel/tree/mpw-one-final>
__ for the caravel used for the mpw-one tapeout.
:warning: You don't need to integrate your design with Caravel GDS for MPW two. Running
make ship
is no longer required.
.. |License| image:: https://img.shields.io/github/license/efabless/caravel :alt: GitHub license - Apache 2.0 :target: https://github.com/efabless/caravel .. |Documentation Status| image:: https://readthedocs.org/projects/caravel-harness/badge/?version=latest :alt: ReadTheDocs Badge - https://caravel-harness.rtfd.io :target: https://caravel-harness.readthedocs.io/en/latest/?badge=latest .. |Build Status| image:: https://travis-ci.com/efabless/caravel.svg?branch=master :alt: Travis Badge - https://travis-ci.org/efabless/caravel :target: https://travis-ci.com/efabless/caravel
.. |License| image:: https://img.shields.io/github/license/efabless/caravel :alt: GitHub license - Apache 2.0 :target: https://github.com/efabless/caravel .. |Documentation Status| image:: https://readthedocs.org/projects/caravel-harness/badge/?version=latest :alt: ReadTheDocs Badge - https://caravel-harness.rtfd.io :target: https://caravel-harness.readthedocs.io/en/latest/?badge=latest .. |Build Status| image:: https://travis-ci.com/efabless/caravel.svg?branch=master :alt: Travis Badge - https://travis-ci.org/efabless/caravel :target: https://travis-ci.com/efabless/caravel