From 7d984d88a0d44a5fc762bbc95a0bbae70a75d700 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 07:22:44 -0800 Subject: [PATCH 01/19] Update TOOLS.md Fixed a typo. --- TOOLS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TOOLS.md b/TOOLS.md index 715ab61..805d8d2 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -11,7 +11,7 @@ curl -L -o /tmp/silicon-installer.sh https://github.com/proppy/conda-eda/release bash /tmp/silicon-installer.sh -p silicon-env -b source silicon-env/bin/activate ``` - **Note**: Make to check the latest or recommended [conda EDA release](https://github.com/proppy/conda-eda/releases/). Please refer to the [conda EDA documentation](https://hdl.github.io/conda-eda/). + **Note**: Be sure to check the latest or recommended [conda EDA release](https://github.com/proppy/conda-eda/releases/). Please refer to the [conda EDA documentation](https://hdl.github.io/conda-eda/). * A number of useful pointers are also available on the [SSCS OSE Webpage](https://sscs-ose.github.io/) * Feel free to post questions to the [#ieee-sscs-dc-23](https://join.slack.com/share/enQtNDc1MjgzMTc4NTYyMC03YTY5NjI0NGUxN2UyMjgzZmI5YTQyYTcxMzQxY2M4NjUyMTk3ODE3ZTgzNTY2ZmQ3M2Y0NjYyZDQ4NWZjYmQ5) Slack channel or open Git Hub issues. From aaa12b281b37bacc0102d62bf93e44703b954bc3 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:17:29 -0800 Subject: [PATCH 02/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f622612..1341e9d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@     [Call for proposals](CALL.md) -    [How to submit a proposal](HOWTO.md) +    [How to participate](HOWTO.md)     [Target specifications](SPECS.md)     [Design tools](TOOLS.md)     [FAQ](FAQ.md) From 97f6f3f84dac8b931c30187927176af72274ee2c Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:21:08 -0800 Subject: [PATCH 03/19] Update CALL.md --- CALL.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CALL.md b/CALL.md index 384793a..56169d3 100644 --- a/CALL.md +++ b/CALL.md @@ -7,3 +7,5 @@ The IEEE Solid-State Circuits Society is pleased to announce its third open-sour The goal of this chipathon is to bring together IC design newbies, enthusiasts and experienced mentors to benefit from the collaboration opportunities enabled by the rapidly growing open-source IC design movement. In contrast to previous chipathon editions (which were open-ended), this year’s goal is to create a specific set of building blocks that can be re-used to benefit the community as a whole. The design target (depicted in the graphic below) is a “lab bench on a chip” system that can be used to characterize basic analog circuit blocks through oscilloscope and waveform generator functionality. Participants are requested to submit innovative ideas on how these blocks should be implemented. A jury will select the best proposals (submitted as Jupyter notebooks) to assemble a collection of teams that will work together toward tapeout. We anticipate tapeouts of several candidate designs toward the end of the year, targeting GlobalFoundries’ [GF180MCU technology](https://gf180mcu-pdk.readthedocs.io/en/latest/). + + From b540f585c3c8f68f944e6c4194505a8435d9026e Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:21:34 -0800 Subject: [PATCH 04/19] Update CALL.md --- CALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CALL.md b/CALL.md index 56169d3..e15fbb8 100644 --- a/CALL.md +++ b/CALL.md @@ -8,4 +8,4 @@ The goal of this chipathon is to bring together IC design newbies, enthusiasts a The design target (depicted in the graphic below) is a “lab bench on a chip” system that can be used to characterize basic analog circuit blocks through oscilloscope and waveform generator functionality. Participants are requested to submit innovative ideas on how these blocks should be implemented. A jury will select the best proposals (submitted as Jupyter notebooks) to assemble a collection of teams that will work together toward tapeout. We anticipate tapeouts of several candidate designs toward the end of the year, targeting GlobalFoundries’ [GF180MCU technology](https://gf180mcu-pdk.readthedocs.io/en/latest/). - + From 185598d379358d0161097caa265a0ad41d094d8c Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:21:56 -0800 Subject: [PATCH 05/19] Update CALL.md --- CALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CALL.md b/CALL.md index e15fbb8..5e257e2 100644 --- a/CALL.md +++ b/CALL.md @@ -8,4 +8,4 @@ The goal of this chipathon is to bring together IC design newbies, enthusiasts a The design target (depicted in the graphic below) is a “lab bench on a chip” system that can be used to characterize basic analog circuit blocks through oscilloscope and waveform generator functionality. Participants are requested to submit innovative ideas on how these blocks should be implemented. A jury will select the best proposals (submitted as Jupyter notebooks) to assemble a collection of teams that will work together toward tapeout. We anticipate tapeouts of several candidate designs toward the end of the year, targeting GlobalFoundries’ [GF180MCU technology](https://gf180mcu-pdk.readthedocs.io/en/latest/). - + From e4e92fe05646c3df3cba72466dcc6786d7645939 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:22:11 -0800 Subject: [PATCH 06/19] Update CALL.md --- CALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CALL.md b/CALL.md index 5e257e2..f8b84e7 100644 --- a/CALL.md +++ b/CALL.md @@ -8,4 +8,4 @@ The goal of this chipathon is to bring together IC design newbies, enthusiasts a The design target (depicted in the graphic below) is a “lab bench on a chip” system that can be used to characterize basic analog circuit blocks through oscilloscope and waveform generator functionality. Participants are requested to submit innovative ideas on how these blocks should be implemented. A jury will select the best proposals (submitted as Jupyter notebooks) to assemble a collection of teams that will work together toward tapeout. We anticipate tapeouts of several candidate designs toward the end of the year, targeting GlobalFoundries’ [GF180MCU technology](https://gf180mcu-pdk.readthedocs.io/en/latest/). - + From b277015184fce83e54ab33a1a82cc4b7f60ebadd Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:36:50 -0800 Subject: [PATCH 07/19] Create README.md --- diagrams/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 diagrams/README.md diff --git a/diagrams/README.md b/diagrams/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/diagrams/README.md @@ -0,0 +1 @@ + From 325cb4c8e0f5f668887bf5653c01a08c50542d5a Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:39:04 -0800 Subject: [PATCH 08/19] block diagram.drawio --- diagrams/Untitled Diagram.drawio | 1 + 1 file changed, 1 insertion(+) create mode 100644 diagrams/Untitled Diagram.drawio diff --git a/diagrams/Untitled Diagram.drawio b/diagrams/Untitled Diagram.drawio new file mode 100644 index 0000000..f812011 --- /dev/null +++ b/diagrams/Untitled Diagram.drawio @@ -0,0 +1 @@ +UzV2zq1wL0osyPDNT0nNUTV2VTV2LsrPL4GwciucU3NyVI0MMlNUjV1UjYwMgFjVyA2HrCFY1qAgsSg1rwSLBiADYTaQg2Y1AA== \ No newline at end of file From abfcd5988fa099ec1638c2036a6b8ff234429cd1 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:39:24 -0800 Subject: [PATCH 09/19] BlockDiagram.drawio --- diagrams/Untitled Diagram.drawio | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/diagrams/Untitled Diagram.drawio b/diagrams/Untitled Diagram.drawio index f812011..7a9761a 100644 --- a/diagrams/Untitled Diagram.drawio +++ b/diagrams/Untitled Diagram.drawio @@ -1 +1,13 @@ -UzV2zq1wL0osyPDNT0nNUTV2VTV2LsrPL4GwciucU3NyVI0MMlNUjV1UjYwMgFjVyA2HrCFY1qAgsSg1rwSLBiADYTaQg2Y1AA== \ No newline at end of file + + + + + + + + + + + + + From 13e4b542e0fc42f8e44c1138dd47fbeb3dd01cf5 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Sat, 4 Feb 2023 16:40:54 -0800 Subject: [PATCH 10/19] Update Untitled Diagram.drawio --- diagrams/Untitled Diagram.drawio | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/diagrams/Untitled Diagram.drawio b/diagrams/Untitled Diagram.drawio index 7a9761a..aa1b336 100644 --- a/diagrams/Untitled Diagram.drawio +++ b/diagrams/Untitled Diagram.drawio @@ -1,11 +1,11 @@ - + - + From 43d5f69221c4f472e630884e6be2e3c33e1fb539 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Mon, 6 Feb 2023 14:26:00 -0800 Subject: [PATCH 11/19] First draft of Specs and some minor updates --- CALL.md | 6 ++-- README.md | 2 +- SPECS.md | 28 ++++++++++++++++-- diagrams/README.md | 1 - .../.$block_diagram.drawio.bkp | 0 figures/block_diagram.drawio | 1 + figures/block_diagram.png | Bin 0 -> 59851 bytes overview.png => figures/overview.png | Bin 8 files changed, 31 insertions(+), 7 deletions(-) delete mode 100644 diagrams/README.md rename diagrams/Untitled Diagram.drawio => figures/.$block_diagram.drawio.bkp (100%) create mode 100644 figures/block_diagram.drawio create mode 100644 figures/block_diagram.png rename overview.png => figures/overview.png (100%) diff --git a/CALL.md b/CALL.md index f8b84e7..c57390b 100644 --- a/CALL.md +++ b/CALL.md @@ -1,11 +1,11 @@ ## 2023 SSCS “PICO” Open-Source Chipathon -### – Submission deadline: May 1, 2023 – +### – Submission deadline: May 1, 2023 – -The IEEE Solid-State Circuits Society is pleased to announce its third open-source integrated circuit (IC) design contest under the umbrella of its [PICO](https://sscs.ieee.org/about/solid-state-circuits-directions/sscs-pico-program) Program (Platform for IC Design Outreach). While this contest is open to any individual or team, we encourage the participation of pre-college students, undergraduates, and geographical regions that are underrepresented within the IC design community. +The IEEE Solid-State Circuits Society is pleased to announce its third open-source integrated circuit (IC) design contest under the umbrella of its [PICO](https://sscs.ieee.org/about/solid-state-circuits-directions/sscs-pico-program) Program (Platform for IC Design Outreach). While this contest is open to any individual or team, we encourage the participation of pre-college students, undergraduates, and geographical regions that are underrepresented within the IC design community. The goal of this chipathon is to bring together IC design newbies, enthusiasts and experienced mentors to benefit from the collaboration opportunities enabled by the rapidly growing open-source IC design movement. In contrast to previous chipathon editions (which were open-ended), this year’s goal is to create a specific set of building blocks that can be re-used to benefit the community as a whole. The design target (depicted in the graphic below) is a “lab bench on a chip” system that can be used to characterize basic analog circuit blocks through oscilloscope and waveform generator functionality. Participants are requested to submit innovative ideas on how these blocks should be implemented. A jury will select the best proposals (submitted as Jupyter notebooks) to assemble a collection of teams that will work together toward tapeout. We anticipate tapeouts of several candidate designs toward the end of the year, targeting GlobalFoundries’ [GF180MCU technology](https://gf180mcu-pdk.readthedocs.io/en/latest/). - + diff --git a/README.md b/README.md index 1341e9d..48838fb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SSCS “PICO” Open-Source Chipathon - + diff --git a/SPECS.md b/SPECS.md index fdf2da8..dc7cbb9 100644 --- a/SPECS.md +++ b/SPECS.md @@ -1,6 +1,30 @@ +# Specifications + +The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage. + + + +To our knowledge, there aren't any published prior-art designs that we can build on. However, we can draw some inspiration from a similar system that was designed for discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. + +What follows below are initial thoughts and minimum specs for each one of our major system components. All teams are encouraged to exceed the minimum requirements and explore what is possible! + +**1. Scope MUX and signal conditioning** +The oscilloscope design should have an input MUX that allows the macro's user to switch the ADC to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail inputs. The signal conditioning circuitry should have a small input capacitance and essentially "infinite" input resistance. On the output side, there must be significant drive strength to handle the high-speed ADCs and deal with their charge kickback (if applicable). A plus for signal conditioning block would be to include transimpedance stages for current measurements. + +| Specification | Symbol | Baseline requirement | Comment | +| ------------- | ------ |--------------------- |-------- | +| Scope input capacitance | Cin | <5pF | From each diff. input to ground +| Number of differential input channels | N | >=8 +| Noise | Neq | <0.5 LSBrms | Contribution of the front-end to the ADC's sampled noise -https://digilent.com/reference/test-and-measurement/analog-discovery-2/start +**2. AWG MUX and signal conditioning** -https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide +**3. Clock generator** +**4. ADCs** + +**5. DACs** + +**6. Digital interface** +One of the primary goals here is to enable a convenient USB interface to a host computer. Teams working on this aspect should design both the on- and off-chip digital circuitry. For the off-chip board, we can consider the lowest cost boards from [Digilent](https://digilent.com/shop/boards-and-components/system-boards/introductory-boards/?sort=priceasc). The USB UART provided [here](https://github.com/ricynlee/cmod-a7-uart-sram-test) could be useful for establishing the communication. diff --git a/diagrams/README.md b/diagrams/README.md deleted file mode 100644 index 8b13789..0000000 --- a/diagrams/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/diagrams/Untitled Diagram.drawio b/figures/.$block_diagram.drawio.bkp similarity index 100% rename from diagrams/Untitled Diagram.drawio rename to figures/.$block_diagram.drawio.bkp diff --git a/figures/block_diagram.drawio b/figures/block_diagram.drawio new file mode 100644 index 0000000..174e849 --- /dev/null +++ b/figures/block_diagram.drawio @@ -0,0 +1 @@ +zZVdb9owFIZ/TS4XJTGl5LIFRjWt0yQuQL1BJjkk7uycyDYk7NfPJk4gCt2Y1E67is97TvzxPv7wyFTUC0nL/BlT4F4UpLVHZl4UhVE8MR+rHBsljqNGyCRLXdFZWLKf4MTAqXuWguoVakSuWdkXEywKSHRPo1Ji1S/bIe+PWtIMBsIyoXyorliqc6eGQXBOPAHLcjf05M4lBG2LnaBymmJ1IZG5R6YSUTctUU+BW/NaX5r/Pr+R7SYmodC3/ECejysIq/X08Aov65cZhrOHT66XA+V7t2A3WX1sHahypmFZ0sTGlaHskcdcC26i0DSpKhvfd6wGM9TjcF7tICA11BeSm+cCUICWR1PisqT1zG0aEru4ukBAnJZfuN+J1GHPur7PzpiGM+e6Ud+SzdPitY5X2/lWlMF6qb/QW4wqkRUa5PxgFq6cO3bNzOymr3QL/DsqphkWJrdFrVGYgm5XBCZIqcqth6eAcpbZ0gRsr33T224fXI3GsumrtHMRdWYPow/ckJG2zq/oAXYohfIVK2Bjww7VgMsVem+iisZ9VPdkiCq+Qmo89sPJB7GK/szqf+FCt0pLmmg/pck7ARn1gUR3QyD3V4CMxh9Eg/xbGjvG+RQ5mvbMeIs/wEU3cDqVt9d8+HtygqnErJ4WgHvli93GvEDakNxE7wAx7jMcXTlU3QvUu//+/voz4fkNOuUuXnIy/wU= \ No newline at end of file diff --git a/figures/block_diagram.png b/figures/block_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..56934accd58fbcc3c078aa797a10f6725162e176 GIT binary patch literal 59851 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 literal 0 HcmV?d00001 diff --git a/overview.png b/figures/overview.png similarity index 100% rename from overview.png rename to figures/overview.png From fc0520908f32690837b93954295115ca5957f550 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Mon, 6 Feb 2023 14:27:42 -0800 Subject: [PATCH 12/19] Update SPECS.md --- SPECS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPECS.md b/SPECS.md index dc7cbb9..0aaf99c 100644 --- a/SPECS.md +++ b/SPECS.md @@ -1,6 +1,6 @@ # Specifications -The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage. +The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of a Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage. From 77ffb9141bde01fe68b8ccc40798f16d4d944ecb Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Mon, 6 Feb 2023 14:28:58 -0800 Subject: [PATCH 13/19] Update SPECS.md --- SPECS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPECS.md b/SPECS.md index 0aaf99c..0f7020c 100644 --- a/SPECS.md +++ b/SPECS.md @@ -9,7 +9,7 @@ To our knowledge, there aren't any published prior-art designs that we can build What follows below are initial thoughts and minimum specs for each one of our major system components. All teams are encouraged to exceed the minimum requirements and explore what is possible! **1. Scope MUX and signal conditioning** -The oscilloscope design should have an input MUX that allows the macro's user to switch the ADC to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail inputs. The signal conditioning circuitry should have a small input capacitance and essentially "infinite" input resistance. On the output side, there must be significant drive strength to handle the high-speed ADCs and deal with their charge kickback (if applicable). A plus for signal conditioning block would be to include transimpedance stages for current measurements. +The oscilloscope design should have an input MUX that allows the macro's user to switch the ADC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail inputs. The signal conditioning circuitry should have a small input capacitance and essentially "infinite" input resistance. On the output side, there must be significant drive strength to handle the high-speed ADCs and deal with their charge kickback (if applicable). A plus for signal conditioning block would be to include transimpedance stages for current measurements. | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | From 9d3922d2bc3260d4085429fbf740287d40e002cd Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Mon, 6 Feb 2023 14:30:20 -0800 Subject: [PATCH 14/19] Update SPECS.md --- SPECS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPECS.md b/SPECS.md index 0f7020c..08dcdfd 100644 --- a/SPECS.md +++ b/SPECS.md @@ -1,4 +1,4 @@ -# Specifications +# Target specifications The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of a Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage. From f82681aa541c73c0b9842423f4a6dcb1e1fde52f Mon Sep 17 00:00:00 2001 From: Mehdi Saligane <48068702+msaligane@users.noreply.github.com> Date: Mon, 6 Feb 2023 20:58:10 -0500 Subject: [PATCH 15/19] Update SPECS.md --- SPECS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SPECS.md b/SPECS.md index 08dcdfd..2b2b348 100644 --- a/SPECS.md +++ b/SPECS.md @@ -2,7 +2,9 @@ The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of a Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage. - +

+ +

To our knowledge, there aren't any published prior-art designs that we can build on. However, we can draw some inspiration from a similar system that was designed for discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. From 9e08b74f968929c71db5bde2fea5097c5055f33b Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Tue, 7 Feb 2023 14:42:33 -0800 Subject: [PATCH 16/19] Updated specs --- .vscode/settings.json | 8 ++++++++ SPECS.md | 41 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..db1e382 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "cSpell.words": [ + "Intermodulation", + "Nyquist", + "tapeouts", + "transimpedance" + ] +} \ No newline at end of file diff --git a/SPECS.md b/SPECS.md index 2b2b348..35763a6 100644 --- a/SPECS.md +++ b/SPECS.md @@ -6,27 +6,58 @@ The purpose of this page is to seed some ideas on what the “lab bench on a ch

-To our knowledge, there aren't any published prior-art designs that we can build on. However, we can draw some inspiration from a similar system that was designed for discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. +To our knowledge, there aren't any published prior-art “lab bench on a chip” designs that we can build on. However, we can draw some inspiration from a similar system that was designed for and with discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. -What follows below are initial thoughts and minimum specs for each one of our major system components. All teams are encouraged to exceed the minimum requirements and explore what is possible! +Generally, think of this entire project is an experiment. We want to explore what a team of enthusiasts, spread across the globe, can do within the new environment of open-source IC design. Even if we don't succeed at building the complete target system in our first attempt, the community can re-use the various blocks that we design for future iterations or for an entirely different purpose. + +What follows below are initial thoughts and baseline specs for each one of our major system components. All teams are encouraged to exceed these requirements and explore what is possible! **1. Scope MUX and signal conditioning** -The oscilloscope design should have an input MUX that allows the macro's user to switch the ADC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail inputs. The signal conditioning circuitry should have a small input capacitance and essentially "infinite" input resistance. On the output side, there must be significant drive strength to handle the high-speed ADCs and deal with their charge kickback (if applicable). A plus for signal conditioning block would be to include transimpedance stages for current measurements. +The oscilloscope design should have an input MUX that allows the macro's user to switch the ADC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail inputs. The signal conditioning circuitry should have a small input capacitance and essentially "infinite" input resistance. On the output side, there must be significant drive strength to handle the high-speed ADCs and deal with their charge kickback (if applicable). A plus for signal conditioning block would be to include transimpedance stages for current measurements. The Analog Discovery 2 has adjustable offsets in each channel. This may not be needed for our design. | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | | Scope input capacitance | Cin | <5pF | From each diff. input to ground -| Number of differential input channels | N | >=8 +| Number of differential input channels | N | $\geq8$ | For a future project, much larger N could be beneficial for enabling "tiny tapeouts" for analog circuits with many small blocks +| Programmable gain | G | 0.25, 0.5, 1, 2, 4, 8 | Gain <1 needed since ADC likely cannot handle rail-to-rail inputs +| Bandwidth | BW | Maximize | Should be linked to ADC's acquisition bandwidth | Noise | Neq | <0.5 LSBrms | Contribution of the front-end to the ADC's sampled noise **2. AWG MUX and signal conditioning** +The arbitrary waveform generator design should have an output MUX that allows the macro's user to direct the DAC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail outputs. The MUX resistance will limit the AWG drive strength, but this should be OK for small on-chip loads. + +| Specification | Symbol | Baseline requirement | Comment | +| ------------- | ------ |--------------------- |-------- | +| Max. AWG load capacitance | CL | 10pF | Driver stability must be ensured up to this level +| Number of differential input channels | N | $\geq8$ | For a future project, much larger N could be beneficial for enabling "tiny tapeouts" for analog circuits with many small blocks +| Bandwidth | BW | Maximize | Should be linked to DAC's Nyquist bandwidth +| Slew rate | SR | $\geq V_{peak}\cdot 2\pi BW$ | Align with bandwidth, assuming largest supported signal +| Output noise | PSD | <20nV/rt-Hz | **3. Clock generator** +The clock generator(s) for both the ADC and DAC should be designed in alignment with the target specs for these converters. For example, the clock generator's jitter should not lead to a significant SNR degradation at the maximum input frequency. **4. ADCs** +The ADC and DAC design tasks wil likely the most challenging and time consuming. An important objective is to minimize silicon area while still achieving attractive specs for the given application. Teams working on this block should consider re-using existing designs, as for instance this [12-bit SAR ADC](https://github.com/w32agobot/SKY130_SAR-ADC). It is desirable to have at least two ADCs (as shown in the system diagram) so that two signals can be measured simultaneously in real time, but this is not a must. + +| Specification | Symbol | Baseline requirement | Comment | +| ------------- | ------ |--------------------- |-------- | +| Sampling rate | fs | $\geq$ 1.5MS/s | +| Effective number of bits | ENOB | $\geq9$ | Measured near Nyquist +| Input capacitance | Cin | $\leq$ 5pF | + **5. DACs** +For the DAC, it may be best to aim for a current steering topology (also used in the Analog Discovery 2). Such a DAC will produce a differential output current that is converted to a differential voltage and image-filtered by the AWG signal conditioning block. Off the shelf current steering DACs are typically designed for high currents to interface with 50 Ohm loads. This is not a requirement in our on-chip environment; we can deviate to minimize circuit area. + +| Specification | Symbol | Baseline requirement | Comment | +| ------------- | ------ |--------------------- |-------- | +| Update rate | fs | $\geq$ 10MS/s | +| Number of bits | B | $\geq$ 10 | +| Intermodulation distortion | IM3 | $\geq$ -60dB | Measured near Nyquist +| Noise spectral density | NSD | | To be aligned with overall PSD spec for the AWG path + **6. Digital interface** -One of the primary goals here is to enable a convenient USB interface to a host computer. Teams working on this aspect should design both the on- and off-chip digital circuitry. For the off-chip board, we can consider the lowest cost boards from [Digilent](https://digilent.com/shop/boards-and-components/system-boards/introductory-boards/?sort=priceasc). The USB UART provided [here](https://github.com/ricynlee/cmod-a7-uart-sram-test) could be useful for establishing the communication. +One of the primary goals here is to enable a convenient USB interface to a host computer. Teams working on this aspect should design both the on- and off-chip digital circuitry. For the off-chip board, we can consider the lowest cost boards from [Digilent](https://digilent.com/shop/boards-and-components/system-boards/introductory-boards/?sort=priceasc). The USB UART provided [here](https://github.com/ricynlee/cmod-a7-uart-sram-test) could be useful for establishing the communication. \ No newline at end of file From 79cf5e51cc9da759991854c16d21af6087c2306d Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:00:39 -0800 Subject: [PATCH 17/19] Updated block diagram --- SPECS.md | 2 +- figures/.$block_diagram.drawio.bkp | 13 ------------- figures/block_diagram.drawio | 2 +- figures/block_diagram.png | Bin 59851 -> 0 bytes figures/block_diagram.svg | 4 ++++ 5 files changed, 6 insertions(+), 15 deletions(-) delete mode 100644 figures/.$block_diagram.drawio.bkp delete mode 100644 figures/block_diagram.png create mode 100644 figures/block_diagram.svg diff --git a/SPECS.md b/SPECS.md index 35763a6..73d4b5b 100644 --- a/SPECS.md +++ b/SPECS.md @@ -3,7 +3,7 @@ The purpose of this page is to seed some ideas on what the “lab bench on a chip” target design may look like. Further teamwork and thinking is required to turn this into a workable design that we can tape out toward the end of the year. Each participating team may choose to work on one or more of the six building blocks identified in the diagram below. The proposals submitted by each team (in the form of a Jupyter notebook) should describe in detail how you want to implement your chosen block(s), what the specifications will be, and in addition provide convincing calculations and simulation results. Layouts are not required at the proposal stage.

- +

To our knowledge, there aren't any published prior-art “lab bench on a chip” designs that we can build on. However, we can draw some inspiration from a similar system that was designed for and with discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. diff --git a/figures/.$block_diagram.drawio.bkp b/figures/.$block_diagram.drawio.bkp deleted file mode 100644 index aa1b336..0000000 --- a/figures/.$block_diagram.drawio.bkp +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/figures/block_diagram.drawio b/figures/block_diagram.drawio index 174e849..efd5321 100644 --- a/figures/block_diagram.drawio +++ b/figures/block_diagram.drawio @@ -1 +1 @@ -zZVdb9owFIZ/TS4XJTGl5LIFRjWt0yQuQL1BJjkk7uycyDYk7NfPJk4gCt2Y1E67is97TvzxPv7wyFTUC0nL/BlT4F4UpLVHZl4UhVE8MR+rHBsljqNGyCRLXdFZWLKf4MTAqXuWguoVakSuWdkXEywKSHRPo1Ji1S/bIe+PWtIMBsIyoXyorliqc6eGQXBOPAHLcjf05M4lBG2LnaBymmJ1IZG5R6YSUTctUU+BW/NaX5r/Pr+R7SYmodC3/ECejysIq/X08Aov65cZhrOHT66XA+V7t2A3WX1sHahypmFZ0sTGlaHskcdcC26i0DSpKhvfd6wGM9TjcF7tICA11BeSm+cCUICWR1PisqT1zG0aEru4ukBAnJZfuN+J1GHPur7PzpiGM+e6Ud+SzdPitY5X2/lWlMF6qb/QW4wqkRUa5PxgFq6cO3bNzOymr3QL/DsqphkWJrdFrVGYgm5XBCZIqcqth6eAcpbZ0gRsr33T224fXI3GsumrtHMRdWYPow/ckJG2zq/oAXYohfIVK2Bjww7VgMsVem+iisZ9VPdkiCq+Qmo89sPJB7GK/szqf+FCt0pLmmg/pck7ARn1gUR3QyD3V4CMxh9Eg/xbGjvG+RQ5mvbMeIs/wEU3cDqVt9d8+HtygqnErJ4WgHvli93GvEDakNxE7wAx7jMcXTlU3QvUu//+/voz4fkNOuUuXnIy/wU= \ No newline at end of file +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 \ No newline at end of file diff --git a/figures/block_diagram.png b/figures/block_diagram.png deleted file mode 100644 index 56934accd58fbcc3c078aa797a10f6725162e176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59851 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
T(RhDyR3Ax3p$Yn_}>@&7p#lGyw7`-7Lv z!qv}QK9t7ka}IjakE_3C6T;$h-#|S?m0=&pyDjX)jcP$vQze_OU*YY&h~lnUO;q#S z!SYE)9Yw8EN$M@hPC7iigNnfxJd`Hfu0nQgg7*|j%C7-<1uvlGA-uGn54eX=N?7M< zU%kZAB}~J8g^ltKPN;6~B2I-$^RJ2O3zL^r%R>7+(X*6S-5DbCyT_cBp6juhKKgyZ z7MLy`>@=k+*y7BKf<8r9(^JcK=eK@eg28|fX3pb@o0D>MJ-B*UJ$OD;%&&j|@M}`a zy*dv6K-z#j2I5mzEG|#G5aomjg1`R15AHiyEV2B;7^K{L8nA~WSW8Yn-#^TP%kWIO z7XmHd6H3QjBq*+i-Wj>{*E28}Jb;&e`q_Sd8ube2?MVSflN)D z=l{pZ(s9Aa_8oda1anaig)a5f03(Xd{6zK47*KgB~W&gbi;@*Xgi_X~iwA?EdY;fJE7CJ@jvP>9x-lX}7x(qZ#%=Jc9{N6qmX<>x+ zESjkzeQXgv3ayPRt@H3MZTVQro=mr%3DwMU2-qzA+ID?Xp-8_W&oLQ|>mieN8blG+ zxwgl<61i4p>F<25({oa26MQ$tQyhQe*Rx<*!4%SFBjl06-erE&x>Dg^B;C>#XNP`L zejs~hxo(#o>-WW}VJXe^_*T&QN)kPQu75`l(w$GI?#Qm|9tVoy6C(DLzy7Ht3EYPX zmN2b6cEts{z7@vAcQX?g(6MaK?@j!k#OIYEN#niQ%>48 zz?`c@6&@QK`%zOFXsCx%bk&xZ$&Ho>U?Kndj2s;gcK-K9Zg-LeCM=>>uKzdIOBa_h z`?+6Fi6Ss(hNVr-iUWsGIc}kT`4i=3{FKe@pvbW^;c_X5;xDsYMVHC%zN0^_yA(tz n^HsAV0NDn9{}2(c?_qiQ87v!1P<=zeANflv7Yi>K-2Hz5KIYgk diff --git a/figures/block_diagram.svg b/figures/block_diagram.svg new file mode 100644 index 0000000..76e17e5 --- /dev/null +++ b/figures/block_diagram.svg @@ -0,0 +1,4 @@ + + + +
MUX
MUX
Scope Signal Conditioning
Scope Signal C...
N differential scope inputs
N differential...
ADC
ADC
Signal Conditioning
Signal Conditi...
ADC
ADC
FPGA board
FPGA board
USB
USB
On chip
On chip
Clock generator
Clock gener...
1
1
4
4
3
3
MUX
MUX
Scope Signal Conditioning
Scope Signal C...
N differential AWG outputs
N differential...
DAC
DAC
AWG Signal Conditioning
AWG Signal Con...
DAC
DAC
2
2
5
5
Data buffers
 & interface
Data buffers...
6
6
Off chip
Off chip
Text is not SVG - cannot display
\ No newline at end of file From 3096ccce56edaa6e3210788fa54ee3ee1667ea6d Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:07:01 -0800 Subject: [PATCH 18/19] Update SPECS.md --- SPECS.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SPECS.md b/SPECS.md index 73d4b5b..bf77171 100644 --- a/SPECS.md +++ b/SPECS.md @@ -6,7 +6,7 @@ The purpose of this page is to seed some ideas on what the “lab bench on a ch

-To our knowledge, there aren't any published prior-art “lab bench on a chip” designs that we can build on. However, we can draw some inspiration from a similar system that was designed for and with discrete circuits. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. +To our knowledge, there aren't any published prior-art “lab bench on a chip” designs that we can build on. However, we can draw some inspiration from a similar system that was designed for PCB measurements. The [Analog Discovery 2](https://digilent.com/reference/test-and-measurement/analog-discovery-2/start) is a multifunction instrument that has all the functionality we are looking for (and more) and comes with detailed [schematics](https://digilent.com/reference/test-and-measurement/analog-discovery-2/hardware-design-guide). While this documentation provides a first-order idea on what we should build, the circuit design style will be somewhat different for on-chip circuitry. Additionally, it will be difficult to match all specifications within a reasonable area budget and given the 180 nm technology that we have at our disposal. Generally, think of this entire project is an experiment. We want to explore what a team of enthusiasts, spread across the globe, can do within the new environment of open-source IC design. Even if we don't succeed at building the complete target system in our first attempt, the community can re-use the various blocks that we design for future iterations or for an entirely different purpose. @@ -17,7 +17,7 @@ The oscilloscope design should have an input MUX that allows the macro's user to | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | -| Scope input capacitance | Cin | <5pF | From each diff. input to ground +| Scope input capacitance | Cin | < 5pF | From each diff. input to ground | Number of differential input channels | N | $\geq8$ | For a future project, much larger N could be beneficial for enabling "tiny tapeouts" for analog circuits with many small blocks | Programmable gain | G | 0.25, 0.5, 1, 2, 4, 8 | Gain <1 needed since ADC likely cannot handle rail-to-rail inputs | Bandwidth | BW | Maximize | Should be linked to ADC's acquisition bandwidth @@ -25,11 +25,11 @@ The oscilloscope design should have an input MUX that allows the macro's user to **2. AWG MUX and signal conditioning** -The arbitrary waveform generator design should have an output MUX that allows the macro's user to direct the DAC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail outputs. The MUX resistance will limit the AWG drive strength, but this should be OK for small on-chip loads. +The arbitrary waveform generator design should have an output MUX that allows the macro's user to direct the DAC resources to a number of different test points within the DUT. It is desirable to have the MUX work for rail-to-rail outputs. The MUX resistance will limit the AWG drive strength, but this should be OK for small on-chip loads. The Analog Discovery 2 has adjustable offsets in each channel. This may not be needed for our design. | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | -| Max. AWG load capacitance | CL | 10pF | Driver stability must be ensured up to this level +| AWG load capacitance | CL | $\leq$ 10pF | Driver stability must be ensured up to this level | Number of differential input channels | N | $\geq8$ | For a future project, much larger N could be beneficial for enabling "tiny tapeouts" for analog circuits with many small blocks | Bandwidth | BW | Maximize | Should be linked to DAC's Nyquist bandwidth | Slew rate | SR | $\geq V_{peak}\cdot 2\pi BW$ | Align with bandwidth, assuming largest supported signal @@ -39,7 +39,7 @@ The arbitrary waveform generator design should have an output MUX that allows th The clock generator(s) for both the ADC and DAC should be designed in alignment with the target specs for these converters. For example, the clock generator's jitter should not lead to a significant SNR degradation at the maximum input frequency. **4. ADCs** -The ADC and DAC design tasks wil likely the most challenging and time consuming. An important objective is to minimize silicon area while still achieving attractive specs for the given application. Teams working on this block should consider re-using existing designs, as for instance this [12-bit SAR ADC](https://github.com/w32agobot/SKY130_SAR-ADC). It is desirable to have at least two ADCs (as shown in the system diagram) so that two signals can be measured simultaneously in real time, but this is not a must. +The ADC and DAC design tasks will likely the most challenging and time consuming. An important objective is to minimize silicon area while still achieving attractive specs for the given application. Teams working on this block should consider re-using existing designs, as for instance this [12-bit SAR ADC](https://github.com/w32agobot/SKY130_SAR-ADC). It is desirable to have at least two ADCs (as shown in the system diagram) so that two signals can be measured simultaneously in real time, but this is not a must. | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | @@ -49,7 +49,7 @@ The ADC and DAC design tasks wil likely the most challenging and time consuming. **5. DACs** -For the DAC, it may be best to aim for a current steering topology (also used in the Analog Discovery 2). Such a DAC will produce a differential output current that is converted to a differential voltage and image-filtered by the AWG signal conditioning block. Off the shelf current steering DACs are typically designed for high currents to interface with 50 Ohm loads. This is not a requirement in our on-chip environment; we can deviate to minimize circuit area. +For the DAC, it may be best to aim for a current steering topology (also used in the Analog Discovery 2). Such a DAC will produce a differential output current that is converted to a differential voltage and image-filtered by the AWG signal conditioning block. Off the shelf current steering DACs are typically designed for high currents to interface with 50 Ohm loads. This is not a requirement in our on-chip environment; we can deviate to minimize circuit area. It is desirable to have at least two DACs (as shown in the system diagram) so that two signals can be generated simultaneously in real time, but this is not a must. | Specification | Symbol | Baseline requirement | Comment | | ------------- | ------ |--------------------- |-------- | From ce4acb191d65395cfd03e7aa6b8452129e425020 Mon Sep 17 00:00:00 2001 From: Boris Murmann <62622760+bmurmann@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:11:10 -0800 Subject: [PATCH 19/19] Update FAQ.md --- FAQ.md | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/FAQ.md b/FAQ.md index b64f20e..f6af9ab 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,25 +1,16 @@ # FAQ Q: Do I need to be an IEEE SSCS member to participate? -A: No, but you are encouraged to join and benefit from our broad range of resources. Please refer to this link. +A: No, but you are encouraged to join and benefit from our broad range of resources. Please refer to this [link](https://sscs.ieee.org/membership). Q: May I re-use someone else’s open-source design? A: Yes! Please be sure to give credit to the original contributor. Q: Does my design need to be open-source? -A: Yes. Your design must be posted on a git-compatible repo and be publicly accessible. The project top-level must include a license file for an approved open-source license agreement (we recommend using the Apache-2.0 license). Third-party source code must be identified, and source code must contain proper headers. Refer to the Open MPW Shuttle Program FAQ for further guidance. +A: Yes. Your design must be posted on a git-compatible repo and be publicly accessible. The project top-level must include a license file for an approved open-source license agreement (we recommend using the Apache-2.0 license). Third-party source code must be identified, and source code must contain proper headers. Q: What is the purpose of the planned online meetups? -A: We will use these meetings for project presentations, networking among teams, short lectures on various circuit design topics, tool support as well as any other topic that will help you learn and succeed! +A: We will use these meetings for project presentations, networking among teams, short lectures on various circuit design topics, tool support as well as any other topic that will help us learn and succeed! -Q: What happens if I am selected, but cannot finish my design by the chipathon’s tapeout deadline? -A: You can participate in a later Google-sponsored Open-MPW run. - -Q: Will I be able to allocate a full 10 mm2 Caravel seat for my tapeout? -A: It is possible, but will depend on the size of your block. We will try to combine a number of blocks to maximize chip area utilization and to create useful subsystems (for example, ADC combined with a reference generator). We will use the meetups to plan possible design mergers. - -Q: Will all selected teams be able to tape out? -A: We will perform design status audits before the tapeout and may only advance a subset of the designs based on their readiness. - -Q: I am not a participating designer, but would like to contribute as a volunteer/mentor, is this possible? +Q: I would like to contribute as a volunteer/mentor, is this possible? A: Yes! Please sign up [here](https://sscs.ieee.org/volunteer-opportunities#SSCD).