Commit Graph

147 Commits

Author SHA1 Message Date
R. Timothy Edwards 6d3cfe66c4
This fix re-does pull request #155, which should not have been made (#314)
against the main branch.  Solves caravel issue #140.
2022-10-20 14:33:33 -07:00
Kareem Farid 6cf92648c5
+ add script for getting net length from a def file (#306)
* + add script for getting net length in a def file
+ add net length report for caravel

* regenerate reports due to bad lef path in the previous one
2022-10-19 12:31:38 -07:00
Marwan Abbas bbb6bf775c
Caravel redesign new top (#300)
* reharden: caravel

~ shift caravel_clocking due to change in size
~ change the pr boundary of caravel_power_routing mag file
~ regenarate lef of caravel_power_routing

* update pdn for `caravel_clocking` & `digital_pll`

* added script to update and generate the power routing views

* ~ run update_power_routing_views from the caravel root with prboundary

* fix output message

* added power routing lef, mag and gds

* fix update_power_routing_views saving wrong cell name

* reharden: caravel

~ incorperate pdn changes
~ re-extract spefs

* fix caravel_power_routing views

* fix abs path in maglef views

* fix abs path in mag views
add substcut layers in gpio_control_block and mgmt_protect

* generate a new chip_io gds

* regenerate gpio_control_block due to mag and gds not in sync

* reharden: caravel

~ change config to pass clean routing
~ use updated views of macros

* lvs clean views

* add caravel top-level generated sdf for all corners

* fix absolute path for mgmt_core_wrapper

Co-authored-by: kareem <kareem.farid@efabless.com>
Co-authored-by: Bassant Hassan <bassant.hassan@efabless.com>
2022-10-18 17:24:07 -07:00
Marwan Abbas 9b86408a80 fixed build.tcl script to build caravel using mgmt_core_wrapper gds 2022-10-18 22:22:55 +02:00
Marwan Abbas 1d3621c66a
Merge pull request #296 from efabless/chip_io_fixes_10_18_2022
Fixes to chip_io to fix LVS issues.  Also added back top level
2022-10-18 17:34:02 +02:00
Marwan Abbas 9f1af21bc3
Delete create_top_pins.sh 2022-10-18 17:33:49 +02:00
Marwan Abbas 7fa79aad37
Merge pull request #290 from efabless/caravel_redesign-mag-guards
misc: scripts to prevent & fix bad mag paths
2022-10-18 17:13:14 +02:00
Marwan Abbas 981f0a54ff
Merge pull request #177 from efabless/top_layout_rework
Create top-level LEF and pin generation script.
2022-10-18 17:11:02 +02:00
Marwan Abbas 52347a6504
Merge pull request #280 from efabless/add_isosub_script
Add a script that adds isolated substrate markers to layout.
2022-10-18 17:08:40 +02:00
Tim Edwards 714fc1cd13 Fixes to chip_io to fix LVS issues. Also added back top level
pins on the pads, and reinstated the script that does that from
another branch that was not merged.
2022-10-18 10:29:43 -04:00
kareem e471874f0a get the right filepath in fix_mag 2022-10-18 04:55:54 -07:00
kareem e476c5b08e make scripts executable 2022-10-18 04:54:54 -07:00
kareem 8486c92593 misc: scripts to prevent & fix bad mag paths
+ add pre commit githooks to get mag and maglefs
+ add scripts to fix bad use mag paths
+ add scripts to fix bad GDS_STRING mag paths
2022-10-18 04:51:32 -07:00
Passant ef1eb5dce1 update signoff scripts to run LVS on `mgmt_core_wrapper`, `RAM!28, and `RAM256` 2022-10-18 04:33:19 -07:00
Tim Edwards 2b4e1c0ab2 Simple update to add a script that adds the isolated substrate
layer to two cells that need it for passing LVS.
2022-10-17 15:41:30 -04:00
Passant 189ca6a879 remove rtl_caravel.log 2022-10-17 10:56:00 -07:00
Passant 9c3fea9a4d update caravel top-level rtl to not buffer `porb_h` through the `mgmt_core_wrapper` 2022-10-17 10:46:31 -07:00
Marwan Abbas 3311103692
Merge pull request #270 from efabless/signoff_scripts
signoff scripts update
2022-10-17 19:27:28 +02:00
Passant c56dca0847 update signoff scripts to name the signoff summary report as `signoff.rpt` and:
to report more details for STA in the `signoff.rpt` and consider the STA test passing if the violations are `max_tran` or `max_cap`
2022-10-17 09:13:12 -07:00
Marwan Abbas f99640e83d
Update build.tcl 2022-10-17 17:48:05 +02:00
Passant 9251af196f update STA script to add reports to `./signoff/<design_name>/primetime-signoff/`
update STA script to report coverage and timing summary
2022-10-16 14:49:54 -07:00
Tim Edwards 43b8f9d4fe Merge branch 'caravel_redesign' into fix_top_buffers_again
Updating to the most recent caravel_redesign branch version.
2022-10-16 10:05:36 -04:00
Tim Edwards dcc3c56b83 Some additional corrections to the gpio_signal_buffering cells.
Corrected one instance where a buffer had incorrectly been replaced
with a decap cell.  Moved the left-hand side in by 0.6um to clear
the chip_io connections on the left-hand side.  Corrected a small
DRC error in a route position at the bottom.
2022-10-16 09:50:20 -04:00
Marwan Abbas ab026c4c1f changed report path of drc 2022-10-15 23:31:38 +02:00
Passant 9b80912487 update signoff scripts to add signoff results of SoC modules to `./<MCW_ROOT>/signoff/`
add false paths and case analysis reports for top-level caravel STA run
2022-10-15 13:34:45 -07:00
Tim Edwards 3db846b119 Fixes issues with the GPIO signal buffering by applying a bounding
box to the layout, so that LEF and DEF positions are correct.
2022-10-15 10:31:35 -04:00
Marwan Abbas fe2f5678aa changed cloning pt libs to the new repo 2022-10-15 15:03:14 +02:00
Passant f69a522f19 update script to get the signoff sdc from directory `./signoff/<design name>/<design name>.sdc` 2022-10-14 13:57:16 -07:00
Marwan Abbas e4b3af043a fixed report generation path 2022-10-14 19:02:08 +02:00
Marwan Abbas f4f26398f0
Merge pull request #209 from efabless/add_pt_dir
Add PT signoff directories for each block
2022-10-13 21:08:51 +02:00
Passant 66616d2cf3 modify STA scripts to adhere to the updated repo structure
- primetime generated files (reports, lib, and sdf) are added to `./signoff/<design>/primetime-signoff/`
- STA logs are added to `./scripts/logs/<design>/`
2022-10-13 09:24:44 -07:00
Marwan Abbas a5aec786fd fixed bugs + linting 2022-10-13 17:18:36 +02:00
Marwan Abbas 99ad0fa67e fixed bugs with running antenna check 2022-10-13 17:13:03 +02:00
Marwan Abbas c01164071f fixed typo 2022-10-13 14:38:16 +02:00
Marwan Abbas 0d25187693 fixed typo 2022-10-13 14:34:41 +02:00
Marwan Abbas c934426903 added antenna checks 2022-10-13 14:32:24 +02:00
Marwan Abbas e3e513bcee changed build script to load mgmt_core_wrapper mag 2022-10-13 13:13:52 +02:00
Passant e9dad36675 remove old comment 2022-10-12 14:19:22 -07:00
Passant 3bacc59a01 fix PT not exiting when an error occurs
add support for top-level caravel STA run including user project wrapper
2022-10-12 14:07:36 -07:00
Marwan Abbas cf614868a7
Update README.md 2022-10-12 19:45:06 +02:00
Marwan Abbas 021b395f3a fixed multiple bugs due to typos 2022-10-12 19:35:43 +02:00
Marwan Abbas fc207d8d84 fixed multiple bugs due to typos 2022-10-12 18:57:56 +02:00
Marwan Abbas 795ffcb3df changed place of caravel_root and mcw_root checks 2022-10-12 18:40:55 +02:00
Marwan Abbas de6033a87b added design switch to run checks on a specific design, and added parsing STA logs 2022-10-12 18:07:12 +02:00
Passant 84b5a65260 Merge branch 'caravel_redesign' of github.com:efabless/caravel into caravel_redesign 2022-10-12 07:36:55 -07:00
Passant d784fd2dd1 update the script with the modified spef and signoff sdc directories
update spef mapping proc to match the new RAM names
2022-10-12 07:32:07 -07:00
Marwan Abbas ea6f4e9aea Merge branch 'caravel_redesign' of github.com:efabless/caravel into caravel_redesign 2022-10-12 14:16:27 +02:00
Marwan Abbas ad0923b4e8 added README to run signoff automation 2022-10-12 14:16:18 +02:00
Mohamed Shalan 98951388d0
Merge pull request #179 from efabless/chip_io_fix_ports
Fixes the .mag, LEF, DEF, and GDS views of chip_io and chip_io_alt
2022-10-12 11:37:24 +02:00
Marwan Abbas 6914202dfc added sheilds for exporting caravel_root and mcw_root 2022-10-12 10:07:02 +02:00
Tim Edwards 0fd05dde39 This commit creates a LEF abstract view of the top level, which
establishes all the pin names, positions, classes, and uses.  Adds
a script which uses the LEF abstract view to annotate the top level
layouts for caravel and caravan with the chip pins (not yet run---
waiting for a valid top level layout after top-level routing).
Also:  Updated the copyright block to increase the chip version
number and update the date.
2022-10-11 16:19:06 -04:00
Tim Edwards a2feddf714 Corrected the layout views of chip_io and chip_io_alt, which were
missing some of the labels for the power supplies (they were
accidentally erased during layout re-work).
2022-10-11 11:39:03 -04:00
Passant 7dccb3aeb4 remove redundant makedirs 2022-10-11 05:00:12 -07:00
Marwan Abbas 8540c4fcdf Merge branch 'caravel_redesign' of github.com:efabless/caravel into caravel_redesign 2022-10-11 12:22:09 +02:00
Marwan Abbas e378a191ad fixed build script and run sta 2022-10-11 12:22:01 +02:00
Passant b3f69ba769 add creating `.lib` for the design at the end of the STA run
add all process corners liberties for the IO cells
update spef mapping based on the updated instances names in the top-level caravel
2022-10-10 15:46:41 -07:00
Marwan Abbas a8934d66cc fixes for logging and sta running 2022-10-10 13:25:09 +02:00
Marwan Abbas a3dd90fc61 build script fixes 2022-10-09 20:11:42 +02:00
Marwan Abbas 943a503441 run sta in parallel with drc, lvs and verification 2022-10-09 20:10:28 +02:00
Marwan Abbas ccb9a90977 added klayout drc python script 2022-10-09 19:55:27 +02:00
Marwan Abbas 82fcb3a54d remove unnecessary prints 2022-10-09 19:43:17 +02:00
Marwan Abbas ecc06078b9 added signoff automation script + supporting scripts 2022-10-09 19:36:50 +02:00
Passant 855ea54add add reading multicorner spef generated from OL 2022-10-09 10:26:01 -07:00
Passant ef688785f3 add script to run STA [in review] 2022-10-09 07:40:32 -07:00
Passant a5d73caf34 add script to run PrimeTime STA [in review] 2022-10-09 03:23:01 -07:00
Tim Edwards 7276623d3c Corrected the pull-up definition and revised the CSB definition to
match the corrected defintions (namely, pull-up is configuration
0x0801, and pull-down is configuration 0x0c01).
2022-10-05 10:02:24 -04:00
Tim Edwards aba145e0e2 Made modifications in support of changing the hard-coded default
configuration of GPIO 3 (CSB) from a standard input to a weak
pull-up input.
2022-09-27 20:58:57 -04:00
sto6 9949306c42
issue-105: caravel & caravan.mag: relabel top-level v*_core power nets (label PLUS underlying met5); (#110)
tweak blackbox lvs scripts for very fast extract; update spi/lvs/*.spice.
The .spice (once propagated to caravel-lite AND caravel-lite embed in mpw_precheck docker)
will pass the consistency check.

Co-authored-by: Risto Bell <rb@efabless.com>
2022-08-26 23:03:00 -07:00
R. Timothy Edwards a2ccbd9e7e
Modified the set_user_id.py script so that mode "-report" returns a valid value. (#93)
* Modified the set_user_id.py script so that mode "-report" returns
a valid value, instead of throwing an error, because the "info.yaml"
file was removed without due consideration of the side effects.

* Apply automatic changes to Manifest and README.rst

Co-authored-by: RTimothyEdwards <RTimothyEdwards@users.noreply.github.com>
2022-05-08 22:50:48 -07:00
R. Timothy Edwards 80c7d29412
A minor correction the gen_gpio_defaults.py script to ensure that (#95)
it will recognize all block cell types in the gate level netlist
after having been run previously.  The former code was only looking
for numeric digits in the cell name, but the cell name suffix is
hex, not integer, and so the script needs to add a check for the
letters A-F or a-f in the cell name suffix.  This is not an
immediate issue because the two default values used are "0403" and
"1803" and happen not to have any alphabetic hex digits.  But if
it were deemed necessary to change a default, then this script
should not break.
2022-05-08 22:50:20 -07:00
Mitch Bailey 21d44910b4
Fix verilog gpio_defaults_block replacement for gpio 0-4 (#87)
* Create lvs-cvc.rst

* user_project_analog_wrapper -> user_analog_project_wrapper

* Added table

* Update lvs-cvc.rst

* Create lvs_cvc_mpw4.rst

Initial steps for LVS and CVC-RV for MPW-4 slot-002

* Update lvs_cvc_mpw4.rst

diode and short errors

* daily progress

`simple_por` changes to `caravel.v`

* Update lvs_cvc_mpw4.rst

* Changed int (truncate) to round to correct gpio_default error.

* Replace gpio_defaults_block for gpio 0-4 correctly.
Remove old versions of gpio_defaults_block 0403 and 1803.

* Removed local CVC-RV docs not ready for commit.
2022-04-23 17:57:34 -07:00
Mitch Bailey da3f77d680
Changed int (truncate) to round to correct gpio_default error. (#83) 2022-04-21 17:53:21 -07:00
R. Timothy Edwards 8aafe0cff6
Fixes an error in the gen_gpio_defaults.py script (#79)
* Fixes an error in the gen_gpio_defaults.py script that is incompatible
with the use of indexed arrays for five of the gpio_defaults_block
instances.  Previously this was handled by manually changing the names
in the layout file.  This script avoids the need for manual modification
by directly handling the indexed notation.  Also, this extends the
modifications made to the layout to include the first five defaults
blocks;  otherwise, the first five defaults blocks are not changed and
the defaults will be wrong for the housekeeping SPI pins.

* Apply automatic changes to Manifest and README.rst

Co-authored-by: RTimothyEdwards <RTimothyEdwards@users.noreply.github.com>
2022-04-20 10:31:15 -04:00
R. Timothy Edwards 99518acd15
Numerous bug fixes, ending in clean full LVS for both caravel and caravan. (#76)
* (1) Modified the .magicrc file to set a default for PDK if not set in the
environment.  (2) Fixed the user ID programming layout to not leave holes
behind when the script moves the vias around (similar to the handling of
the GPIO defaults block).  (3) Added substrate isolation to gpio_control_block
and fixed the path references to the standard cells.  (4) Fixed the four
missing routes on the Caravan top level.  (5) Reinstated the large rendered
labels for the pads on both caravel and caravan.  (6) Corrected the top
level gate-level netlist for caravan to add the missing pins to the
management core wrapper.  (7) Did the same for the caravan top level RTL.
(8) Created scripts to run full LVS including extracting the management
core wrapper and reading all gate-level verilog submodules.  (9) Moved all
of the LVS scripts to the scripts directory.

* Apply automatic changes to Manifest and README.rst

* Made the changes from pull request #73 as they did not get merged
successfully, and if merged now they will generate conflicts with
this pull request in scripts/set_user_id.py.  So it's easier to
just manually add them to this pull request.

* Apply automatic changes to Manifest and README.rst

Co-authored-by: RTimothyEdwards <RTimothyEdwards@users.noreply.github.com>
2022-04-19 19:05:27 -07:00
Mitch Bailey 6f99301588
Changes that correct mgmt_core references and user_id_programming generation. (#73)
* Create lvs-cvc.rst

* user_project_analog_wrapper -> user_analog_project_wrapper

* Added table

* Update lvs-cvc.rst

* Create lvs_cvc_mpw4.rst

Initial steps for LVS and CVC-RV for MPW-4 slot-002

* Update lvs_cvc_mpw4.rst

diode and short errors

* daily progress

`simple_por` changes to `caravel.v`

* Update lvs_cvc_mpw4.rst

* Remove old local documentation.

* Changes that correct gpio_default_block, user_id_programming, and mgmt_core references.

mgmt_core_wrapper
  Use absolute path instead of relative path.

user_id_programming
  Remove GDS references as GDS is no longer modified.
  Corrected string concatenation.
  Corrected mag data replacement.
  Corrected verilog data replacement.

gpio_default_block
  Rename instances for gpio_default_blocks 0-4 in caravel.mag and caravan.mag.
  Change replace range in gen_gpio_defaults.py to handle gpio_default_blocks 0-4.

* Revert changes related to gpio_default_block.

* Changed mgmt_core_wrapper absolute path from UPRJ_ROOT to MCW_ROOT.

* Corrected MCW_ROOT path (includes mgmt_core_wrapper)
2022-04-18 20:24:11 -07:00
Tim Edwards 078aabbfeb Corrected the set_user_id.py script. 2022-04-12 15:48:14 -04:00
Marwan Abbas e9f023f9fa
Introduction of PDK variable (#39)
* added PDK_VARIENT variable

* changed variable name to PDK

* resolve issue

Co-authored-by: Marwan Abbas <marwan@ciic.c.catx-ext-efabless.internal>
2022-04-08 09:05:58 -07:00
Tim Edwards 53abff5bbf This commit fixes the issue with the user ID programming block not
getting changed by "make ship" because the build is done in a place
where the path pointer to the user_id_programming GDS still points
back to the original caravel repository, not the user project
repository.  The user_id_programming GDS was removed (no longer used),
the user_id_programming.mag file was modified to remove the path
pointer to the GDS, and the set_user_id.py script was modified to
make changes directly to the user_id_programming.mag file instead of
the GDS.  An additional method was added to the set_user_id.py script
to modify the gate-level verilog/gl/user_id_programming.v to make
the user ID correct for gate-level testbench simulations.
2022-03-22 10:25:25 -04:00
Tim Edwards 2f6fe69b36 Corrected the gen_gpio_defaults.py script so that it behaves
correctly no matter how the "gpio_defaults_block.mag" and
"gl/gpio_defaults_block.v" are defined.  Previously it assumed
that they both defined all bits as zero, which was not the case
for the layout.  Now both define bit value 0x0402 and the script
can flip bits either direction as needed in both verilog and
layout
2021-12-29 15:42:41 -05:00
Tim Edwards 3246e64407 Correction to the gen_gpio_defaults.py file, which was accidentally
overwriting the top-level gate-level verilog netlist with the
modified layout file contents.
2021-12-04 12:41:06 -05:00
Tim Edwards 024801ab56 Extended the gen_gpio_defaults.py script to handle modifying the
verilog gate-level netlists to match the correct GPIO default
value assignments, and modify the top level gate-level caravel.v
and caravan.v netlists to match.
2021-12-02 16:04:51 -05:00
Tim Edwards 6482c1e011 Corrected the set_user_id.py script to (1) reverse the position of
characters in the user_id_textblock layout, which was backwards,
and (2) add a path reference to "hexdigits" for each new character
layout encountered in the file, so that the text block layouts
are found even if "addpath hexdigits" has not been specified.
There were some other corrections to handling gzipped files that
probably does not apply in practice, where "make uncompress" has
been run prior to the set_user_id.py script.
2021-12-02 09:35:13 -05:00
jeffdi 73343aed18 correcting magicrc file and pdkpath issues 2021-12-01 21:59:03 -08:00
jeffdi aa64579d63 fix pdkpath in generate_fill.py and compositor.py 2021-12-01 21:45:48 -08:00
jeffdi 547709b619 fix rcfile reference in generate_fill.py and compositor.py 2021-12-01 21:05:46 -08:00
jeffdi 0a09f3b5ac added missing scripts 2021-12-01 11:03:45 -08:00
jeffdi 91b94ad919 test gen_gpio_defaults.py 2021-11-26 15:32:13 -08:00
jeffdi fd81e0814b test gen_gpio_defaults.py 2021-11-26 15:28:03 -08:00
jeffdi b3320b7500 test gen_gpio_defaults.py 2021-11-26 14:04:00 -08:00
jeffdi 2ce03a196c test gen_gpio_defaults.py 2021-11-26 14:03:03 -08:00
jeffdi 2bd7c40946 test gen_gpio_defaults.py 2021-11-26 14:01:12 -08:00
jeffdi f996157088 test gen_gpio_defaults.py 2021-11-26 13:57:18 -08:00
Tim Edwards b0d3217280 Replaced the gpio_defaults_block_0000.mag layout with gpio_defaults_block.mag
so that it contains a valid layout after processing by Openlane (since the
verilog module is named gpio_defaults_block).  Corrected the orientation of
the defaults block layouts on the right side of Caravel and erased the
incorrect routing there.  Reinstated the copyright, user ID text, open source
logo, and Caravel logo.  Revised the gen_gpio_defaults.py script to handle
the first five GPIOs in the same way as the others, although as fixed entries
which cannot be modified by the user project designer.
2021-11-20 13:43:49 -05:00
Tim Edwards f18a219be4 Modified the set_user_id script so that if it happens to be run on
a repository where the user_id_programming GDS has been compressed,
it will handle it correctly.
2021-11-15 16:41:04 -05:00
Tim Edwards 4a27ea4c6b Finished first draft of the gen_gpio_defaults.py script, which now
makes backup copies of caravel and caravan layouts and replaces the
cell name of any gpio defaults block that is changed from the
contents of user_defines.v.  NOTE:  user_defines.v ultimately must
reside in the user project.  The Makefile should copy the user's
version into the caravel directory space before running the script,
or else the script should be rewritten to reference the user's
project area when reading user_defines.v.
2021-11-07 21:51:00 -05:00
Tim Edwards 6a93ea582d Added a script which parses the file "user_defines.v" in
verilog/rtl/, and creates all the layout files needed to represent
all unique combinations of defaults used in the file.  Not done:
Modifying the top level layout to use the correct defaults (because
the top level layout does not yet exist).
2021-11-06 21:19:42 -04:00
Tim Edwards a67cbcb01c Added back a couple more files related to the user ID programming block. 2021-10-26 10:40:55 -04:00