Pranav Lulu
04/12/2023, 8:09 AMPranav Lulu
04/12/2023, 8:23 AMTim Edwards
04/12/2023, 4:05 PMuser_analog_project_wrapper.gds
but it may be easier for you to start with the empty wrapper and then rename it. You can drop your GDS into the wrapper any way you want to as long as the wrapper cell exists as the top level and has all the same pins in the same positions. My usual recommendation is just to create one extra layer of hierarchy, so that you have your project's own top level cell inside a cell that wires everything out to the wrapper pins, inside the wrapper cell. But that's just a recommendation.vks
07/20/2023, 7:40 AMMitch Bailey
07/20/2023, 2:20 PMgds/user_analog_project_wrapper.gds
into caravan
is performed by efabless on the platform.
It is possible to also do this locally so that you can check the results, but I doubt that most users attempt to do this.
If you have a gds/user_analog_project_wrapper.gds
file and have updated verilog/rtl/user_defines.v
with your default gpio settings, you can execute the following commands to create an integrated caravan gds.
make gpio_defaults
make truck
This will create gds/caravan.gds
, but efabless does not use this.
Note: the chip id will probably be 00000000
. If you want to change that
export USER_ID="0123ABCD"
make set_user_id
before make truck
vks
07/21/2023, 7:04 AMgds
folders: caravel_user_project_analog/caravel/gds
and caravel_user_project_analog/gds
. Which one to use ?
Can you please validate below steps for hardening analog GDS in wrapper. Want to do it manually and not through openlane.
1. Instantiate user design layout inside inside wrapper layout of this gds caravel_user_project_analog/caravel/gds/user_analog_project_wrapper_empty.gds
2. Copy gds of integrated layout in step 1 at this path caravel_user_project_analog/caravel/gds/user_analog_project_wrapper.gds
3. Run pre-check using make precheck
. Will this pre-check harden user_analog_project_wrapper.gds
into caravel/carvan ?Mitch Bailey
07/21/2023, 7:29 AMcaravel_user_project_analog/caravel/gds/user_analog_project_wrapper_empty.gds
to caravel_user_project_analog/gds/user_analog_project_wrapper.gds
2. Instantiate user design layout inside caravel_user_project_analog/gds/user_analog_project_wrapper.gds
3. Run pre-check using
make precheck
make run-precheck
This will confirm that your gds is suitable for submission. As I previously mentioned, efabless will harden the user_analog_project_wrapper.gds
into caravan
during tapeout. All you need to do is upload your data and pass the platform precheck. I do recommend passing the local precheck first before running the platform precheck.vks
07/21/2023, 7:38 AMcaravel_user_project_analog/gds/user_analog_project_wrapper.gds
, metal interconnects from user layout pins to wrapper pins need to be done manually?
2. And then metal interconnects from wrapper pins to carvan IO pads will be done automatically by efabless during hardening of user_analog_project_wrapper.gds
into caravan
during tapeout?
Are these inferences correct ?Mitch Bailey
07/21/2023, 7:39 AMvks
07/21/2023, 7:49 AMvks
07/21/2023, 8:40 AMvks
09/15/2023, 10:37 AMcaravel_user_project_analog/gds/user_analog_project_wrapper.gds
and completed routing to harness pins manually.
Ran make pre-check
command but getting error. Please suggest what I might be missing. Do I need to set any PDK environment variables etc. beforerunning this command.vks
09/15/2023, 10:41 AMmpw_precheck
directory. But getting another error. Please suggest how to proceed further.Mitch Bailey
09/15/2023, 1:43 PMdocker --help
Precheck requires docker to run.vks
09/15/2023, 4:01 PMmake precheck
. Getting output as shown in attached screenshot.
Don't know what to make of it. Is it correct ?
What is expected as output of make precheck
command ?vks
09/15/2023, 4:03 PMCARAVEL_ROOT
, PDK_ROOT
need to be set before running make precheck
? I am not using volare, only standard installation with open_pdks
.Mitch Bailey
09/15/2023, 4:25 PMpermission denied while trying to connect to the docker daemon socket
make precheck
just sets up the precheck environment.
make run-precheck
does the actual checks.vks
09/15/2023, 4:30 PMsudo make precheck
. But sudo make run-precheck
is failing error shown in screenshot.
Should I set export PDK_ROOT=/usr/local/share/pdk
first ?Mitch Bailey
09/15/2023, 4:39 PMvks
09/15/2023, 4:43 PMMitch Bailey
09/15/2023, 10:23 PMvks
09/16/2023, 3:06 AMArman Avetisyan
09/16/2023, 5:30 AMMitch Bailey
09/16/2023, 8:45 AMsu -s ${USER}
is failing.
Try running docker run hello-world
in a new shell window.vks
09/16/2023, 2:40 PMdocker run hello-world
succesfully.
Following above make precheck
also ran succesfully (I think so, please confirm seeing output in attached screenshot)
But getting following error while running make run-precheck
PDK Root: /home/vks/git_clone/caravel_user_project_analog/dependencies/pdks doesn't exists, please export the correct path before running make.
make: *** [Makefile:175: check-pdk] Error 1
Please suggest how to resolve this issue.vks
09/16/2023, 2:43 PMdependencies/pdks
folder inside caravel_user_project_analog
as per above error output after running make run-precheck
command.Mitch Bailey
09/16/2023, 3:37 PMPDK_ROOT
set to?vks
09/16/2023, 3:39 PM/usr/local/share/pdk
Mitch Bailey
09/16/2023, 3:41 PMPDK_ROOT
needs to be set if it is not the default $PWD/dependencies/pdks
. You should probably set the other environment variables that are not the default value. You can check the default values in the Makefile
.vks
09/16/2023, 3:48 PMPDK_ROOT
But I am not able to make sense of results in precheck.log
file. It is showing error related to LVS.
1. How to debug these results from precheck.log file ?
2. What are the things to look in order to conclude that my design is ready for uploading to efabless shuttle ?vks
09/16/2023, 3:49 PMMitch Bailey
09/16/2023, 4:41 PMlvs/user_analog_project_wrapper/lvs_config.json
file? That’s where you specify everything for LVS. If there’s not, you can copy from here.Mitch Bailey
09/16/2023, 4:42 PMvks
09/17/2023, 7:24 AMMitch Bailey
09/17/2023, 7:36 AM2023-09-16 16:21:24 - [WARNING] - {{SPDX COMPLIANCE CHECK FAILED}} Found 11 non-compliant file(s) with the SPDX Standard.
2023-09-16 16:21:24 - [INFO] - SPDX COMPLIANCE: NON-COMPLIANT FILE(S) PREVIEW: ['/home/vks/git_clone/caravel_user_project_analog/gds/.magicrc', '/home/vks/git_clone/caravel_user_project_analog/xschem/example_por_tb.sch', '/home/vks/git_clone/caravel_user_project_analog/xschem/user_analog_project_wrapper.sch', '/home/vks/git_clone/caravel_user_project_analog/xschem/analog_wrapper_tb.sch', '/home/vks/git_clone/caravel_user_project_analog/xschem/.spiceinit', '/home/vks/git_clone/caravel_user_project_analog/xschem/user_analog_project_wrapper.sym', '/home/vks/git_clone/caravel_user_project_analog/xschem/test.data', '/home/vks/git_clone/caravel_user_project_analog/xschem/example_por.sym', '/home/vks/git_clone/caravel_user_project_analog/xschem/xschemrc', '/home/vks/git_clone/caravel_user_project_analog/xschem/example_por.sch', '/home/vks/git_clone/caravel_user_project_analog/xschem/example_por_tb.spice.orig']
These files are missing an open source license header.
You can add something like this, but be sure to use the comment syntax appropriate for the file type.
// SPDX-FileCopyrightText: 2020 Efabless Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// <http://www.apache.org/licenses/LICENSE-2.0>
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// SPDX-License-Identifier: Apache-2.0
(edit) if your design is closed source, you probably don’t want to do this.Mitch Bailey
09/17/2023, 7:37 AM2023-09-16 16:21:24 - [WARNING] - The provided 'README.md' is identical to the default 'README.md'
2023-09-16 16:21:24 - [WARNING] - {{README DEFAULT CHECK FAILED}} Project 'README.md' was not modified and is identical to the default 'README.md'
Change the README.md
file to match the description of your project.Mitch Bailey
09/17/2023, 7:46 AM2023-09-16 16:21:30 - [CRITICAL] - {{GPIO-DEFINES: ERROR IN verilog/rtl/user_defines.v}} Directives(22) still placeholder (13'hXXXX) or not hex-literal: USER_CONFIG_GPIO_5_INIT=13'hXXXX USER_CONFIG_GPIO_6_INIT=13'hXXXX USER_CONFIG_GPIO_7_INIT=13'hXXXX USER_CONFIG_GPIO_8_INIT=13'hXXXX USER_CONFIG_GPIO_9_INIT=13'hXXXX USER_CONFIG_GPIO_10_INIT=13'hXXXX USER_CONFIG_GPIO_11_INIT=13'hXXXX USER_CONFIG_GPIO_12_INIT=13'hXXXX USER_CONFIG_GPIO_13_INIT=13'hXXXX USER_CONFIG_GPIO_14_INIT=13'hXXXX USER_CONFIG_GPIO_26_INIT=13'hXXXX USER_CONFIG_GPIO_27_INIT=13'hXXXX USER_CONFIG_GPIO_28_INIT=13'hXXXX USER_CONFIG_GPIO_29_INIT=13'hXXXX USER_CONFIG_GPIO_30_INIT=13'hXXXX USER_CONFIG_GPIO_31_INIT=13'hXXXX USER_CONFIG_GPIO_32_INIT=13'hXXXX USER_CONFIG_GPIO_33_INIT=13'hXXXX USER_CONFIG_GPIO_34_INIT=13'hXXXX USER_CONFIG_GPIO_35_INIT=13'hXXXX USER_CONFIG_GPIO_36_INIT=13'hXXXX USER_CONFIG_GPIO_37_INIT=13'hXXXX.. No report generated.
All the gpio’s need to have a default configuration.
My recommendation is to set all digital inputs to GPIO_MODE_MGMT_STD_INPUT_NOPULL
, GPIO_MODE_MGMT_STD_INPUT_PULLDOWN
, or GPIO_MODE_MGMT_STD_INPUT_PULLUP
.
Set all analog pins to GPIO_MODE_MGMT_STD_ANALOG
.
Set all user digital outputs to GPIO_MODE_MGMT_STD_OUTPUT
or GPIO_MODE_MGMT_STD_OUT_MONITORED
.
Set all bidirectional digital user signal gpio’s to GPIO_MODE_MGMT_STD_BIDIRECTIONAL
.
For digital outputs and bidirectional signals, be sure to drive the corresponding io_oeb
signal correctly (low for output).Mitch Bailey
09/17/2023, 7:50 AM2023-09-16 16:21:46 - [ERROR] - ERROR LVS FAILED, stat=1, see /home/vks/git_clone/caravel_user_project_analog/precheck_results/16_SEP_2023___16_21_22/logs/LVS_check.log
2023-09-16 16:21:46 - [WARNING] - {{LVS CHECK FAILED}} The design, user_analog_project_wrapper, has LVS violations.
Can you share precheck_results/16_SEP_2023___16_21_22/logs/LVS_check.log
and lvs/user_analog_project_wrapper/lvs_config.json
?
It looks like your top level spice file may not be set in lvs_config.json
.vks
09/17/2023, 7:54 AMMitch Bailey
09/17/2023, 8:10 AMxschem/user_analog_project_wrapper.spice
your vks
09/17/2023, 8:13 AMxschem/user_analog_project_wrapper.spice
from its default. Anything to be updated here ?vks
09/17/2023, 8:14 AMMitch Bailey
09/17/2023, 8:26 AMvks
09/17/2023, 8:27 AMMitch Bailey
09/17/2023, 8:27 AMuser_analog_project_wrapper
?vks
09/17/2023, 1:55 PMMitch Bailey
09/17/2023, 2:35 PMxschem/user_analog_project_wrapper.sch
, leave all the pins, but delete the symbols.
Then add your top level opamp symbol and connect to the appropriate pins.vks
09/19/2023, 7:01 AMuser_analog_project_wrapper.sch
Then ran make run-precheck. Although LVS_check.log is showing design matching uniquely. But precheck.log shows LVS error.
Alongwith that there are few more warnings. Please suggest how to clear them.Mitch Bailey
09/19/2023, 11:38 AM$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hvl/spice
return?
It should return an absolute path to sky130A/libs.ref/sky130_fd_sc_hvl/spice/sky130_fd_sc_hvl.spice
vks
09/19/2023, 12:25 PM$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hvl/spice
, 2 errors ('Default', 'GPIO-Defines')
in precheck.log
are not coming. But ['Consistency', 'LVS']
erros are still there. I am attaching my user_defines.v file. How to setup analog pins in this file?
My design uses all analog pins in caravan wrapper i.e. io_analog[2],[3],[4],[5],[7],[8]
.Mitch Bailey
09/19/2023, 1:27 PMio_analog[10:0]
) have no GPIO setup. If you are using the analog connections to the gpio cells (gpio_analog[17:0]
, gpio_noesd[17:0]
), use GPIO_MODE_MGMT_STD_ANALOG
.
* gpio_analog/noesd [17:7] <---> mprj_io[35:25]
* gpio_analog/noesd [6:0] <---> mprj_io[13:7]
I’m hoping the LVS results have changed. Can you resend LVS_check.log
?vks
09/20/2023, 5:20 AMLVS_check.log
is attached.
I am sorry but not at all able to understand about setup of user_defines.v
file. I have no experience of verilog or digital design.
Can you please help how can I understand this setup. If possible can you share some sample user_defines.v
file for analog only design.vks
09/20/2023, 5:22 AMio_analog[2],[3],[4],[5],[7],[8]
pins are used in my analog only design. What syntax should be used in user_defines.v file ?Mitch Bailey
09/20/2023, 6:58 AMuser_defines.v
settings are needed for io_analog
pins. You will need to set the user_defines
for the gpiov2 pads whether you use them or not. I suggest GPIO_MODE_MGMT_STD_ANALOG
since that will disable the digital I/O.vks
09/20/2023, 7:06 AMTim Edwards
09/20/2023, 8:10 PMMitch Bailey
09/20/2023, 10:44 PMGPIO_MODE_USER_STD_ANALOG
you might want to tie all the unused io_out
and io_oeb
to some voltage.