From 40ae25acf0cc02a30dced8f74709a08cc85e5ccb Mon Sep 17 00:00:00 2001 From: saicharan0112 <100982953+saicharan0112@users.noreply.github.com> Date: Sun, 17 Sep 2023 23:13:03 +0530 Subject: [PATCH 1/8] Update README.rst remove info on the generators that is present already inside main documentation, tabular the generators data and point to the main documentation --- README.rst | 122 +++++++++-------------------------------------------- 1 file changed, 20 insertions(+), 102 deletions(-) diff --git a/README.rst b/README.rst index d03187143..85f25e920 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ OpenFASoC OpenFASOC is focused on open-source automated analog generation from user specification to GDSII with fully open-sourced tools. -This project is led by a team of researchers at the University of Michigan and is inspired by FASoC, which sits on proprietary tools. (See more about FaSoC at `website `_) +This project is led by a team of researchers at the University of Michigan and is inspired by FASoC, that sits on proprietary tools. (See more about FaSoC at `website `_) * **Temperature sensor -** @@ -28,7 +28,7 @@ This project is led by a team of researchers at the University of Michigan and i .. image:: https://colab.research.google.com/assets/colab-badge.svg :target: https://colab.research.google.com/github/idea-fasoc/OpenFASOC/blob/main/docs/source/notebooks/ldo-gen/LDO_notebook.ipynb -Prerequisites +Getting Started **************** Install all the prerequisites using the `dependencies.sh` script provided in the home location of this project (where this README.rst file is found). Supports CentOS7, Ubuntu 20.04 LTS and Ubuntu 22.04 LTS. @@ -37,7 +37,9 @@ Install all the prerequisites using the `dependencies.sh` script provided in the $ sudo ./dependencies.sh -(Or) Please install the following tools by building the tools manually from their code base with the recommended commit ids for stable functioning of the flow: +For more info on getting-started, please refer to ["Getting Started" section ](https://openfasoc.readthedocs.io/en/latest/getting-started.html) + +Below are the tool requirements along with their currently support versions that are updated regularly upon testing againsts the generators. 1. `Magic `_ (version:8.3.416) @@ -67,109 +69,25 @@ Install all the prerequisites using the `dependencies.sh` script provided in the - Python 3.7 is used in this generator. - All the required tools need to be loaded into the environment before running this generator. -Upgrading -**************** -To upgrade packages used by the generators, the dependencies.sh script must be run (which can be found in the home folder of the cloned repository). - -.. code-block:: bash - - $ sudo ./dependencies.sh # Enter 'u' on being prompted to commence upgrade -Testing Installation -**************** -To test your installation, run the following commands from the home folder of the cloned repository - - -.. code-block:: bash - - $ cd openfasoc/generators/temp-sense-gen - $ make sky130hd_temp - -This will run the Makefile for the temperature sensor generator (the functionality of which is explained in the Generators section). -The installation has finished succesfully if the make process exits without errors. - -Design Generation -******************** Generators -^^^^^^^^^^^^^^ -**Temperature Sensor (temp-sense-gen)** - `link `_ - -A fully automated SoC generator that uses an all-digital temperature sensor architecture, that relies on a new subthreshold oscillator (achieved using the auxiliary cell “Header Cell“) for realizing synthesizable thermal sensors. - - Block Architecture: - - Temperature-sensitive ring oscillator and stacked zero-VT devices. - -.. image:: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/temp-sense-gen/readme_imgs/tempSensor-BA.png - :target: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/temp-sense-gen/readme_imgs/tempSensor-BA.png - -**LDO Generator (ldo-gen)** - `link `_ - -The main idea behind a Digital LDO is the use of an array of small power transistors that operate as switches. The use of power transistors as switches facilitates low VDD power management and process scalability which makes Digital LDOs a good potential candidate for power management as we go to lower nodes. With the “Unit Power Switch” as the auxiliary cell, an automatic LDO design tool “LDO_GEN” is developed as part of this project. - - Block Architecture: - - Synchronous Digital LDO with optional stochastic flash ADC. - -.. image:: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/ldo-gen/readme_images/LDO-BA.png - :target: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/ldo-gen/readme_images/LDO-BA.png - -**DC-DC Generator (dcdc-gen)** - `link `_ - - For synthesizable on-chip power management circuits, we use the “2:1 SC Cell” auxiliary cell for implementing a switched-capacitor (SC) based DC-DC converter. By varying the number of auxiliary cells, we can achieve a wide range of conversion ratios with fine-grain resolution. It operates similarly to a successive approximation analog to digital converter (SAR ADC). Furthermore, since the total structure is simply composed of auxiliary cells, it is ideal for the proposed flow of automating the analog block design. - - -**Cryo Generator (cryo-gen)** - `link `_ TBA - -**GDS Factory (gdsfactory)** - `link `_ TBA - -**LC-DCO Generator (lc-dco)** - `link `_ TBA - -**SCPA Generator (cpa-gen)** - `link `_ TBA - -Our fully open-source flow only supports the temperature sensor generation so far. We are working on adding additional generators in the near future. - -The generators are located inside `openfasoc/generators/`, the target for temperature sensor generation is `sky130hd_temp` and located inside `openfasoc/generators/temp-sense-gen`, the following parameters are supported: - -- --specfile: input specifications where the min/max temperature for the temp sensor are specified -- --outputDir: output folder where the gds/def results will be exported -- --platform: only sky130hd platform is supported for now -- --clean: clean flow folder and start a fresh design flow -- --mode: support verilog/macro/full modes, macro mode runs through APR/DRC/LVS steps to generate macros, full mode completes macro generation + simulations -- --nhead: specify a fixed number of headers (optional) -- --ninv: specify a fixed number of inverters (optional) - -Look more into "getting-started" section on how to run the OpenFASOC flow - - -Spice Simulation Flow -************************** - -To run the simulation, please edit your local model file in `common/platform_config.json`: - -- simTool: simulation tool, only ngspice is supported for now -- We plan to support Xyce in the future - -- simMode: `partial` (recommended to reduce runtime) or `full`, partial simulation only includes headers and cells in low voltage domain to calculate the frequency errors, full simulation includes the internal counter (full simulation is slow using ngspice and is still being tested) - -- nominal_voltage: the nominal voltage of the specified technology, it is used to set a supply voltage in the simulation testbench - -- model_file: the path to the top model lib file - -- model_corner: the corner used in the simulation - -- an example of the `common/platform_config.json` looks like: - -.. code-block:: json +******************** - { - "simTool": "ngspice", - "simMode": "partial", - "platforms": { - "sky130hd": { - "nominal_voltage": 1.8, - "model_file": "~/open_pdks/pdks/sky130A/libs.tech/ngspice/sky130.lib.spice", - "model_corner": "tt" - } - } - } ++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+ +| Generator | Technology nodes | Supported | Documentation | +| | | | | ++==========================================+====================+============================+================================================================+ +| Temperature Sensor | sky130hd | Yes | https://openfasoc.readthedocs.io/en/latest/flow-tempsense.html | ++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+ +| Low dropout Voltage Regulator (LDO) | sky130hvl | Yes | https://openfasoc.readthedocs.io/en/latest/flow-ldo.html | ++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+ +| Cryogenic | sky130hs, | No (In-progress) | https://openfasoc.readthedocs.io/en/latest/flow-cryo.html | +| | sky130hd, | | | +| | sky130hvl | | | ++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+ +| GDSFactory | sky130hd | No (In-progress) | https://openfasoc.readthedocs.io/en/latest/flow-ldo.html | ++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+ Tapeouts and testing setup From 31039ebdf9366503c5b248870d09cda6d98294a4 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 16:55:41 +0530 Subject: [PATCH 2/8] check docker container exit status before checking if real errors --- .github/workflows/tempSense_sky130hd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 8af2f7640..7820af928 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -35,4 +35,5 @@ jobs: make sky130hd_temp &&\ python3 parse_rpt.py "| tee -a file.log + if $?; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi From cfc144206d0b3d61babc40ee0b5adc74a11d5588 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 17:05:24 +0530 Subject: [PATCH 3/8] read docker exit status in othe workflows too --- .github/workflows/cryo_gen.yml | 1 + .github/workflows/ldo_sky130hvl.yml | 1 + .github/workflows/tempSense_sky130hd.yml | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml index eef1682b4..fe52504f4 100644 --- a/.github/workflows/cryo_gen.yml +++ b/.github/workflows/cryo_gen.yml @@ -39,4 +39,5 @@ jobs: make ${{ matrix.platform }}_cryo &&\ python3 parse_rpt.py ${{ matrix.platform }} "| tee -a file.log + if [[ $? == 0 ]]; then exit 1; fi if grep "^Error" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/ldo_sky130hvl.yml b/.github/workflows/ldo_sky130hvl.yml index 2157ec8e8..c487260b8 100644 --- a/.github/workflows/ldo_sky130hvl.yml +++ b/.github/workflows/ldo_sky130hvl.yml @@ -35,4 +35,5 @@ jobs: make sky130hvl_ldo &&\ python3 parse_rpt.py sky130hvl_ldo "| tee -a file.log + if [[ $? == 0 ]]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 7820af928..806b6837a 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -35,5 +35,5 @@ jobs: make sky130hd_temp &&\ python3 parse_rpt.py "| tee -a file.log - if $?; then exit 1; fi + if [[ $? == 0 ]]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi From 321c772c41f32a52d33cbe2e551d09571903dac8 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 17:14:44 +0530 Subject: [PATCH 4/8] run CI when the actual generator gets modified --- .github/workflows/cryo_gen.yml | 1 + .github/workflows/ldo_sky130hvl.yml | 1 + .github/workflows/tempSense_sky130hd.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml index fe52504f4..b2df33009 100644 --- a/.github/workflows/cryo_gen.yml +++ b/.github/workflows/cryo_gen.yml @@ -9,6 +9,7 @@ on: - 'openfasoc/common/**' - 'openfasoc/generators/common/**' - 'openfasoc/generators/common/cryo-gen/**' + - 'openfasoc/generators/cryo-gen/**' workflow_dispatch: jobs: diff --git a/.github/workflows/ldo_sky130hvl.yml b/.github/workflows/ldo_sky130hvl.yml index c487260b8..aa99d2d23 100644 --- a/.github/workflows/ldo_sky130hvl.yml +++ b/.github/workflows/ldo_sky130hvl.yml @@ -9,6 +9,7 @@ on: - 'openfasoc/common/**' - 'openfasoc/generators/common/**' - 'openfasoc/generators/common/ldo-gen/**' + - 'openfasoc/generators/ldo-gen/**' workflow_dispatch: jobs: diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 806b6837a..492b75598 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -9,6 +9,7 @@ on: - 'openfasoc/common/**' - 'openfasoc/generators/common/**' - 'openfasoc/generators/common/temp-sense-gen/**' + - 'openfasoc/generators/temp-sense-gen/**' workflow_dispatch: jobs: From c91f3d50778e2896845304cc77c19a30c8170cae Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 23:14:47 +0530 Subject: [PATCH 5/8] use proper exit check on previous commit --- .github/workflows/cryo_gen.yml | 2 +- .github/workflows/ldo_sky130hvl.yml | 2 +- .github/workflows/tempSense_sky130hd.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml index b2df33009..39b00ee81 100644 --- a/.github/workflows/cryo_gen.yml +++ b/.github/workflows/cryo_gen.yml @@ -40,5 +40,5 @@ jobs: make ${{ matrix.platform }}_cryo &&\ python3 parse_rpt.py ${{ matrix.platform }} "| tee -a file.log - if [[ $? == 0 ]]; then exit 1; fi + if [ $? -ne 0 ]; then exit 1; fi if grep "^Error" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/ldo_sky130hvl.yml b/.github/workflows/ldo_sky130hvl.yml index aa99d2d23..bc0517949 100644 --- a/.github/workflows/ldo_sky130hvl.yml +++ b/.github/workflows/ldo_sky130hvl.yml @@ -36,5 +36,5 @@ jobs: make sky130hvl_ldo &&\ python3 parse_rpt.py sky130hvl_ldo "| tee -a file.log - if [[ $? == 0 ]]; then exit 1; fi + if [ $? -ne 0 ]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 492b75598..4164ba0f5 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -36,5 +36,5 @@ jobs: make sky130hd_temp &&\ python3 parse_rpt.py "| tee -a file.log - if [[ $? == 0 ]]; then exit 1; fi + if [ $? -ne 0 ]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi From a30b378748cfdbaefb9ec9607bef9b9918ee7612 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 23:22:01 +0530 Subject: [PATCH 6/8] still fixing exit codes to check on github actions --- .github/workflows/cryo_gen.yml | 1 + .github/workflows/tempSense_sky130hd.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml index 39b00ee81..95c2c695e 100644 --- a/.github/workflows/cryo_gen.yml +++ b/.github/workflows/cryo_gen.yml @@ -40,5 +40,6 @@ jobs: make ${{ matrix.platform }}_cryo &&\ python3 parse_rpt.py ${{ matrix.platform }} "| tee -a file.log + echo $? if [ $? -ne 0 ]; then exit 1; fi if grep "^Error" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 4164ba0f5..7a34b2fc8 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -36,5 +36,6 @@ jobs: make sky130hd_temp &&\ python3 parse_rpt.py "| tee -a file.log + echo $? if [ $? -ne 0 ]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi From cd6f8d416417c8178435b687bac9163411125284 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 23:44:53 +0530 Subject: [PATCH 7/8] teeing to the logfile is changing the exit code --- .github/workflows/tempSense_sky130hd.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml index 7a34b2fc8..012849d3d 100644 --- a/.github/workflows/tempSense_sky130hd.yml +++ b/.github/workflows/tempSense_sky130hd.yml @@ -35,7 +35,6 @@ jobs: cd ./openfasoc/generators/temp-sense-gen &&\ make sky130hd_temp &&\ python3 parse_rpt.py - "| tee -a file.log - echo $? + " && exit_code=$? | tee -a file.log if [ $? -ne 0 ]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi From 995d65d3dd9318c496d066c96f7852e94784ee37 Mon Sep 17 00:00:00 2001 From: Sai Charan Date: Sun, 1 Oct 2023 23:51:04 +0530 Subject: [PATCH 8/8] first store the exit code and then tee the logfile --- .github/workflows/cryo_gen.yml | 3 +-- .github/workflows/ldo_sky130hvl.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml index 95c2c695e..203c668a5 100644 --- a/.github/workflows/cryo_gen.yml +++ b/.github/workflows/cryo_gen.yml @@ -39,7 +39,6 @@ jobs: cd ./openfasoc/generators/cryo-gen &&\ make ${{ matrix.platform }}_cryo &&\ python3 parse_rpt.py ${{ matrix.platform }} - "| tee -a file.log - echo $? + " && exit_code=$? | tee -a file.log if [ $? -ne 0 ]; then exit 1; fi if grep "^Error" file.log; then exit 1; else exit 0; fi diff --git a/.github/workflows/ldo_sky130hvl.yml b/.github/workflows/ldo_sky130hvl.yml index bc0517949..7bf04cc07 100644 --- a/.github/workflows/ldo_sky130hvl.yml +++ b/.github/workflows/ldo_sky130hvl.yml @@ -35,6 +35,6 @@ jobs: cd ./openfasoc/generators/ldo-gen &&\ make sky130hvl_ldo &&\ python3 parse_rpt.py sky130hvl_ldo - "| tee -a file.log + " && exit_code=$? | tee -a file.log if [ $? -ne 0 ]; then exit 1; fi if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi