blob: d9ed1225fabbd3afc0798aa28794851e6e16c3f4 [file] [log] [blame]
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -07001.. raw:: html
2
3 <!---
4 # SPDX-FileCopyrightText: 2020 Efabless Corporation
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # SPDX-License-Identifier: Apache-2.0
19 -->
20
21Caravel User Project
22====================
23
manarabdelatyd0e7afb2021-04-22 00:21:13 +020024|License| |User CI| |Caravel Build|
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -070025
26Table of contents
27=================
28
29- `Overview <#overview>`__
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -070030- `Quickstart <#quickstart>`__
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -070031- `Caravel Integration <#caravel-integration>`__
32
33 - `Repo Integration <#repo-integration>`__
34 - `Verilog Integration <#verilog-integration>`__
Manar4ec8cba2021-10-04 10:26:10 -050035 - `Layout Integration <#layout-integration>`__
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -070036
37- `Running Full Chip Simulation <#running-full-chip-simulation>`__
Manar4ec8cba2021-10-04 10:26:10 -050038- `User Project Wrapper Requirements <#user-project-wrapper-requirements>`__
39- `Hardening the User Project using
40 Openlane <#hardening-the-user-project-using-openlane>`__
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -070041- `Checklist for Open-MPW
42 Submission <#checklist-for-open-mpw-submission>`__
43
44Overview
45========
46
47This repo contains a sample user project that utilizes the
48`caravel <https://github.com/efabless/caravel.git>`__ chip user space.
49The user project is a simple counter that showcases how to make use of
50`caravel's <https://github.com/efabless/caravel.git>`__ user space
51utilities like IO pads, logic analyzer probes, and wishbone port. The
52repo also demonstrates the recommended structure for the open-mpw
53shuttle projects.
54
manarabdelatyd8dd0102021-04-30 08:40:52 +020055Prerequisites
56=============
57
Marwan Abbas0914d042022-04-06 19:06:34 +020058- Docker: `Linux <https://hub.docker.com/search?q=&type=edition&offering=community&operating_system=linux&utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Windows <https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with Intel Chip <https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_ || `Mac with M1 Chip <https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header>`_
59
60- Python 3.6+ with PIP
manarabdelatyd8dd0102021-04-30 08:40:52 +020061
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -070062
63Quickstart
64===========
65
66---------------------
67Starting your project
68---------------------
69
70#. To start the project you first need to create a new repository based on the `caravel_user_project <https://github.com/efabless/caravel_user_project/>`_ template and make sure your repo is public and includes a README.
71
72 * Follow https://github.com/efabless/caravel_user_project/generate to create a new repository.
73 * Clone the reposity using the following command:
74
Kareem Faridf421b8e2022-11-15 18:38:45 +000075 .. code:: bash
76
77 git clone <your github repo URL>
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -070078
79#. To setup your local environment run:
80
81 .. code:: bash
82
83 cd <project_name> # project_name is the name of your repo
84
85 mkdir dependencies
86
87 export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src # you need to export this whenever you start a new shell
88
89 export PDK_ROOT=$(pwd)/dependencies/pdks # you need to export this whenever you start a new shell
90
91 # export the PDK variant depending on your shuttle, if you don't know leave it to the default
Jeff DiCorpob7640592022-10-27 18:31:04 -070092
93 # for sky130 MPW shuttles....
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -070094 export PDK=sky130B
Jeff DiCorpob7640592022-10-27 18:31:04 -070095
96 # for the gf180 GFMPW shuttles...
97 export PDK=gf180mcuC
98
99
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700100
101 make setup
102
Kareem Faridf421b8e2022-11-15 18:38:45 +0000103* This command will setup your environment by installing the following
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700104
Kareem Faridf421b8e2022-11-15 18:38:45 +0000105 - caravel_lite (a lite version of caravel)
106 - management core for simulation
107 - openlane to harden your design
108 - pdk
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700109
110
111#. Now you can start hardening your design
112
113 * To start hardening you project you need
114 - RTL verilog model for your design for OpenLane to harden
115 - A subdirectory for each macro in your project under ``openlane/`` directory, each subdirectory should include openlane configuration files for the macro
116
Kareem Faridf421b8e2022-11-15 18:38:45 +0000117 .. code:: bash
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700118
Kareem Faridf421b8e2022-11-15 18:38:45 +0000119 make <module_name>
120 ..
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700121
Kareem Farid128c5252022-11-15 18:45:41 +0000122 For an example of hardening a project please refer to `Hardening the User Project using OpenLane`_. .
Jeff DiCorpo43dc6d92022-10-27 18:00:26 -0700123
124#. Integrate modules into the user_project_wrapper
125
126 * Change the environment variables ``VERILOG_FILES_BLACKBOX``, ``EXTRA_LEFS`` and ``EXTRA_GDS_FILES`` in ``openlane/user_project_wrapper/config.tcl`` to point to your module
127 * Instantiate your module(s) in ``verilog/rtl/user_project_wrapper.v``
128 * Harden the user_project_wrapper including your module(s), using this command:
129
130 .. code:: bash
131
132 make user_project_wrapper
133
134#. Run simulation on your design
135
136 * You need to include your rtl/gl/gl+sdf files in ``verilog/includes/includes.<rtl/gl/gl+sdf>.caravel_user_project``
137
138 **NOTE:** You shouldn't include the files inside the verilog code
139
140 .. code:: bash
141
142 # you can then run RTL simulations using
143 make verify-<testbench-name>-rtl
144
145 # OR GL simulation using
146 make verify-<testbench-name>-gl
147
148 # OR for GL+SDF simulation using
149 # sdf annotated simulation is slow
150 make verify-<testbench-name>-gl-sdf
151
152 # for example
153 make verify-io_ports-rtl
154
155#. Run the precheck locally
156
157 .. code:: bash
158
159 make precheck
160 make run-precheck
161
162#. You are done! now go to https://efabless.com/open_shuttle_program/ to submit your project!
163
164
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700165Caravel Integration
166===================
167
Kareem Faride3b5c472022-11-15 16:35:21 +0000168----------------
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700169Repo Integration
170----------------
171
172Caravel files are kept separate from the user project by having caravel
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200173as submodule. The submodule commit should point to the latest of
Manar4ec8cba2021-10-04 10:26:10 -0500174caravel/caravel-lite master/main branch. The following files should have a symbolic
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200175link to `caravel's <https://github.com/efabless/caravel.git>`__
176corresponding files:
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700177
manarabdelaty0c03d602021-09-20 11:42:16 +0200178- `Openlane Makefile <../../openlane/Makefile>`__: This provides an easier
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200179 way for running openlane to harden your macros. Refer to `Hardening
180 the User Project Macro using
Marwan Abbasca9b6922022-01-26 20:27:03 +0200181 Openlane <#hardening-the-user-project-using-openlane>`__. Also,
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200182 the makefile retains the openlane summary reports under the signoff
183 directory.
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700184
manarabdelaty0c03d602021-09-20 11:42:16 +0200185- `Pin order <../../openlane/user_project_wrapper/pin_order.cfg>`__ file for
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700186 the user wrapper: The hardened user project wrapper macro must have
187 the same pin order specified in caravel's repo. Failing to adhere to
188 the same order will fail the gds integration of the macro with
189 caravel's back-end.
190
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200191The symbolic links are automatically set when you run ``make install``.
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700192
Kareem Faride3b5c472022-11-15 16:35:21 +0000193-------------------
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700194Verilog Integration
195-------------------
196
197You need to create a wrapper around your macro that adheres to the
198template at
Manarf088db12021-09-20 12:13:04 +0200199`user\_project\_wrapper <https://github.com/efabless/caravel/blob/master/verilog/rtl/__user_project_wrapper.v>`__.
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700200The wrapper top module must be named ``user_project_wrapper`` and must
Manarf088db12021-09-20 12:13:04 +0200201have the same input and output ports as the golden wrapper `template <https://github.com/efabless/caravel/blob/master/verilog/rtl/__user_project_wrapper.v>`__. The wrapper gives access to the
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700202user space utilities provided by caravel like IO ports, logic analyzer
203probes, and wishbone bus connection to the management SoC.
204
205For this sample project, the user macro makes use of:
206
207- The IO ports for displaying the count register values on the IO pads.
208
209- The LA probes for supplying an optional reset and clock signals and
210 for setting an initial value for the count register.
211
matt venn4acd8b72021-04-27 11:34:42 +0200212- The wishbone port for reading/writing the count value through the
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700213 management SoC.
214
manarabdelatyfbd955f2021-09-20 11:59:53 +0200215Refer to `user\_project\_wrapper <../../verilog/rtl/user_project_wrapper.v>`__
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700216for more information.
217
218.. raw:: html
219
220 <p align="center">
221 <img src="./_static/counter_32.png" width="50%" height="50%">
222 </p>
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200223
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700224.. raw:: html
225
226 </p>
227
Manar4ec8cba2021-10-04 10:26:10 -0500228
Kareem Faride3b5c472022-11-15 16:35:21 +0000229-------------------
Manar4ec8cba2021-10-04 10:26:10 -0500230Layout Integration
231-------------------
232
233The caravel layout is pre-designed with an empty golden wrapper in the user space. You only need to provide us with a valid ``user_project_wrapper`` GDS file. And, as part of the tapeout process, your hardened ``user_project_wrapper`` will be inserted into a vanilla caravel layout to get the final layout shipped for fabrication.
234
235.. raw:: html
236
237 <p align="center">
238 <img src="./_static/layout.png" width="80%" height="80%">
239 </p>
240
241To make sure that this integration process goes smoothly without having any DRC or LVS issues, your hardened ``user_project_wrapper`` must adhere to a number of requirements listed at `User Project Wrapper Requirements <#user-project-wrapper-requirements>`__ .
242
243
manarabdelatyd8dd0102021-04-30 08:40:52 +0200244Running Full Chip Simulation
245============================
246
247First, you will need to install the simulation environment, by
248
249.. code:: bash
250
251 make simenv
252
253This will pull a docker image with the needed tools installed.
254
Manar4ec8cba2021-10-04 10:26:10 -0500255Then, run the RTL simulation by
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200256
257.. code:: bash
258
259 export PDK_ROOT=<pdk-installation-path>
Marwan Abbas0914d042022-04-06 19:06:34 +0200260 make verify-<testbench-name>-rtl
Marwan Abbase631e372022-07-01 02:34:39 -0700261
262 # For example
263 make verify-io_ports-rtl
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200264
Manar4ec8cba2021-10-04 10:26:10 -0500265Once you have the physical implementation done and you have the gate-level netlists ready, it is crucial to run full gate-level simulations to make sure that your design works as intended after running the physical implementation.
266
267Run the gate-level simulation by:
268
269.. code:: bash
270
271 export PDK_ROOT=<pdk-installation-path>
Marwan Abbas0914d042022-04-06 19:06:34 +0200272 make verify-<testbench-name>-gl
Manar4ec8cba2021-10-04 10:26:10 -0500273
Marwan Abbase631e372022-07-01 02:34:39 -0700274 # For example
275 make verify-io_ports-gl
276
277To make sure that your design is timing clean, one way is running sdf annotated gate-level simulation
278Run the sdf annotated gate-level simulation by:
279
280.. code:: bash
281
282 export PDK_ROOT=<pdk-installation-path>
283 make verify-<testbench-name>-gl-sdf
284
285 # For example
286 make verify-io_ports-gl-sdf
Manar4ec8cba2021-10-04 10:26:10 -0500287
288This sample project comes with four example testbenches to test the IO port connection, wishbone interface, and logic analyzer. The test-benches are under the
289`verilog/dv <https://github.com/efabless/caravel_user_project/tree/main/verilog/dv>`__ directory. For more information on setting up the
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200290simulation environment and the available testbenches for this sample
Manarffaf9842021-04-30 22:55:37 +0200291project, refer to `README <https://github.com/efabless/caravel_user_project/blob/main/verilog/dv/README.md>`__.
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700292
Manar4ec8cba2021-10-04 10:26:10 -0500293
294User Project Wrapper Requirements
295=================================
296
297Your hardened ``user_project_wrapper`` must match the `golden user_project_wrapper <https://github.com/efabless/caravel/blob/master/gds/user_project_wrapper_empty.gds.gz>`__ in the following:
298
299- Area ``(2.920um x 3.520um)``
300- Top module name ``"user_project_wrapper"``
301- Pin Placement
302- Pin Sizes
303- Core Rings Width and Offset
304- PDN Vertical and Horizontal Straps Width
305
306
307.. raw:: html
308
309 <p align="center">
310 <img src="./_static/empty.png" width="40%" height="40%">
311 </p>
312
Marwan Abbasca9b6922022-01-26 20:27:03 +0200313You are allowed to change the following if you need to:
Manar4ec8cba2021-10-04 10:26:10 -0500314
315- PDN Vertical and Horizontal Pitch & Offset
316
317.. raw:: html
318
319 <p align="center">
320 <img src="./_static/pitch.png" width="30%" height="30%">
321 </p>
322
323To make sure that you adhere to these requirements, we run an exclusive-or (XOR) check between your hardened ``user_project_wrapper`` GDS and the golden wrapper GDS after processing both layouts to include only the boundary (pins and core rings). This check is done as part of the `mpw-precheck <https://github.com/efabless/mpw_precheck>`__ tool.
324
325
326Hardening the User Project using OpenLane
327==========================================
328
Kareem Faride3b5c472022-11-15 16:35:21 +0000329---------------------
Manar4ec8cba2021-10-04 10:26:10 -0500330OpenLane Installation
331---------------------
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700332
manarabdelatyd8dd0102021-04-30 08:40:52 +0200333You will need to install openlane by running the following
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200334
335.. code:: bash
336
manarabdelaty0218c0f2021-04-29 18:31:49 +0200337 export OPENLANE_ROOT=<openlane-installation-path>
manarabdelatyfbd955f2021-09-20 11:59:53 +0200338
339 # you can optionally specify the openlane tag to use
340 # by running: export OPENLANE_TAG=<openlane-tag>
341 # if you do not set the tag, it defaults to the last verfied tag tested for this project
342
manarabdelaty0218c0f2021-04-29 18:31:49 +0200343 make openlane
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200344
manarabdelatyfbd955f2021-09-20 11:59:53 +0200345For detailed instructions on the openlane and the pdk installation refer
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200346to
Manar4ec8cba2021-10-04 10:26:10 -0500347`README <https://github.com/The-OpenROAD-Project/OpenLane#setting-up-openlane>`__.
348
Kareem Faride3b5c472022-11-15 16:35:21 +0000349-----------------
Manar4ec8cba2021-10-04 10:26:10 -0500350Hardening Options
351-----------------
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700352
manarabdelatyfbd955f2021-09-20 11:59:53 +0200353There are three options for hardening the user project macro using
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700354openlane:
355
Manar4ec8cba2021-10-04 10:26:10 -0500356+--------------------------------------------------------------+--------------------------------------------+--------------------------------------------+
357| Option 1 | Option 2 | Option 3 |
358+--------------------------------------------------------------+--------------------------------------------+--------------------------------------------+
359| Hardening the user macro(s) first, then inserting it in the | Flattening the user macro(s) with the | Placing multiple macros in the wrapper |
360| user project wrapper with no standard cells on the top level | user_project_wrapper | along with standard cells on the top level |
361+==============================================================+============================================+============================================+
362| |pic1| | |pic2| | |pic3| |
363| | | |
364+--------------------------------------------------------------+--------------------------------------------+--------------------------------------------+
365| ex: |link1| | | ex: |link2| |
366+--------------------------------------------------------------+--------------------------------------------+--------------------------------------------+
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700367
Manar4ec8cba2021-10-04 10:26:10 -0500368.. |link1| replace:: `caravel_user_project <https://github.com/efabless/caravel_user_project>`__
369
370.. |link2| replace:: `caravel_ibex <https://github.com/efabless/caravel_ibex>`__
371
372
373.. |pic1| image:: ./_static/option1.png
374 :width: 48%
375
376.. |pic2| image:: ./_static/option2.png
377 :width: 140%
378
379.. |pic3| image:: ./_static/option3.png
380 :width: 72%
381
382For more details on hardening macros using openlane, refer to `README <https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/hardening_macros.md>`__.
383
Kareem Faride3b5c472022-11-15 16:35:21 +0000384-----------------
Manar4ec8cba2021-10-04 10:26:10 -0500385Running OpenLane
386-----------------
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700387
388For this sample project, we went for the first option where the user
389macro is hardened first, then it is inserted in the user project
manarabdelatyfbd955f2021-09-20 11:59:53 +0200390wrapper without having any standard cells on the top level.
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700391
392.. raw:: html
393
394 <p align="center">
Manar4ec8cba2021-10-04 10:26:10 -0500395 <img src="./_static/wrapper.png" width="30%" height="30%">
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700396 </p>
397
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200398.. raw:: html
399
400 </p>
Manar4ec8cba2021-10-04 10:26:10 -0500401
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700402To reproduce hardening this project, run the following:
403
404.. code:: bash
405
Marwan Abbasfa8d7ec2022-02-03 09:50:05 -0800406 # DO NOT cd into openlane
407
manarabdelaty0218c0f2021-04-29 18:31:49 +0200408 # Run openlane to harden user_proj_example
409 make user_proj_example
410 # Run openlane to harden user_project_wrapper
411 make user_project_wrapper
412
413
Manar4ec8cba2021-10-04 10:26:10 -0500414For more information on the openlane flow, check `README <https://github.com/The-OpenROAD-Project/OpenLane#readme>`__.
415
Manarf088db12021-09-20 12:13:04 +0200416Running MPW Precheck Locally
manarabdelaty0218c0f2021-04-29 18:31:49 +0200417=================================
418
Manar4ec8cba2021-10-04 10:26:10 -0500419You can install the `mpw-precheck <https://github.com/efabless/mpw_precheck>`__ by running
manarabdelaty0218c0f2021-04-29 18:31:49 +0200420
421.. code:: bash
422
423 # By default, this install the precheck in your home directory
424 # To change the installtion path, run "export PRECHECK_ROOT=<precheck installation path>"
425 make precheck
426
427This will clone the precheck repo and pull the latest precheck docker image.
428
429
430Then, you can run the precheck by running
431
432.. code:: bash
433
434 make run-precheck
435
436This will run all the precheck checks on your project and will produce the logs under the ``checks`` directory.
437
438
439Other Miscellaneous Targets
440============================
441
442The makefile provides a number of useful that targets that can run LVS, DRC, and XOR checks on your hardened design outside of openlane's flow.
443
Manarf088db12021-09-20 12:13:04 +0200444Run ``make help`` to display available targets.
manarabdelaty0218c0f2021-04-29 18:31:49 +0200445
manarabdelaty0c03d602021-09-20 11:42:16 +0200446Run lvs on the mag view,
manarabdelaty0218c0f2021-04-29 18:31:49 +0200447
448.. code:: bash
449
450 make lvs-<macro_name>
451
452Run lvs on the gds,
453
454.. code:: bash
455
456 make lvs-gds-<macro_name>
457
458Run lvs on the maglef,
459
460.. code:: bash
461
462 make lvs-maglef-<macro_name>
463
464Run drc using magic,
465
466.. code:: bash
467
468 make drc-<macro_name>
469
470Run antenna check using magic,
471
472.. code:: bash
473
474 make antenna-<macro_name>
475
476Run XOR check,
477
478.. code:: bash
479
480 make xor-wrapper
Marwan Abbasfa8d7ec2022-02-03 09:50:05 -0800481
482
manarabdelaty0218c0f2021-04-29 18:31:49 +0200483
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700484
485Checklist for Open-MPW Submission
486=================================
487
Manarf088db12021-09-20 12:13:04 +0200488- ✔️ The project repo adheres to the same directory structure in this
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700489 repo.
Manarf088db12021-09-20 12:13:04 +0200490- ✔️ The project repo contain info.yaml at the project root.
491- ✔️ Top level macro is named ``user_project_wrapper``.
492- ✔️ Full Chip Simulation passes for RTL and GL (gate-level)
493- ✔️ The hardened Macros are LVS and DRC clean
Jeff DiCorpo9e950432021-10-24 10:09:39 -0700494- ✔️ The project contains a gate-level netlist for ``user_project_wrapper`` at verilog/gl/user_project_wrapper.v
Manarf088db12021-09-20 12:13:04 +0200495- ✔️ The hardened ``user_project_wrapper`` adheres to the same pin
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700496 order specified at
497 `pin\_order <https://github.com/efabless/caravel/blob/master/openlane/user_project_wrapper_empty/pin_order.cfg>`__
Manarf088db12021-09-20 12:13:04 +0200498- ✔️ The hardened ``user_project_wrapper`` adheres to the fixed wrapper configuration specified at `fixed_wrapper_cfgs <https://github.com/efabless/caravel/blob/master/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl>`__
499- ✔️ XOR check passes with zero total difference.
500- ✔️ Openlane summary reports are retained under ./signoff/
501- ✔️ The design passes the `mpw-precheck <https://github.com/efabless/mpw_precheck>`__
Mohamed Kassem6f2fcd22021-04-19 10:14:19 -0700502
503.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
504 :target: https://opensource.org/licenses/Apache-2.0
manarabdelatyd0e7afb2021-04-22 00:21:13 +0200505.. |User CI| image:: https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml/badge.svg
506 :target: https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml
507.. |Caravel Build| image:: https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml/badge.svg
Mohamed Kassem9ae1f072021-04-23 12:19:31 -0700508 :target: https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml