From 10727efea74a2ea023d406344f12beba5f61be0e Mon Sep 17 00:00:00 2001 From: TinyTapeoutBot <139130078+TinyTapeoutBot@users.noreply.github.com> Date: Mon, 7 Oct 2024 16:26:15 +0300 Subject: [PATCH] feat: update project tt_um_mattvenn_analog_ring_osc from mattvenn/tt08-analog-ring-osc Commit: 22baf3f00c8e7cee92763c6cceda71bfaacac4d6 Workflow: https://github.com/mattvenn/tt08-analog-ring-osc/actions/runs/11216470507 --- .../tt_um_mattvenn_analog_ring_osc/LICENSE | 201 +++++++ .../commit_id.json | 8 + .../docs/info.md | 36 ++ .../docs/output_waveform.png | Bin 0 -> 33680 bytes .../tt_um_mattvenn_analog_ring_osc/info.yaml | 65 +++ .../tt_um_mattvenn_analog_ring_osc.gds | Bin 0 -> 266420 bytes .../tt_um_mattvenn_analog_ring_osc.lef | 531 ++++++++++++++++++ .../tt_um_mattvenn_analog_ring_osc.v | 82 +++ 8 files changed, 923 insertions(+) create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/LICENSE create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/commit_id.json create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/docs/info.md create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/docs/output_waveform.png create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/info.yaml create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.gds create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.lef create mode 100644 projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.v diff --git a/projects/tt_um_mattvenn_analog_ring_osc/LICENSE b/projects/tt_um_mattvenn_analog_ring_osc/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/projects/tt_um_mattvenn_analog_ring_osc/commit_id.json b/projects/tt_um_mattvenn_analog_ring_osc/commit_id.json new file mode 100644 index 0000000..52b277a --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/commit_id.json @@ -0,0 +1,8 @@ +{ + "app": "custom_gds action", + "repo": "https://github.com/mattvenn/tt08-analog-ring-osc", + "commit": "22baf3f00c8e7cee92763c6cceda71bfaacac4d6", + "workflow_url": "https://github.com/mattvenn/tt08-analog-ring-osc/actions/runs/11216470507", + "sort_id": 1728307568808, + "analog": true +} \ No newline at end of file diff --git a/projects/tt_um_mattvenn_analog_ring_osc/docs/info.md b/projects/tt_um_mattvenn_analog_ring_osc/docs/info.md new file mode 100644 index 0000000..5e01bd6 --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/docs/info.md @@ -0,0 +1,36 @@ + + +## How it works + +Aiming to create 2 ring oscillators at around 600MHz and 300MHz. The output will be quite attenuated due to the pad. + +* Ring oscillator 1 is made of 18 inverters and a NAND gate for enable. +* Ring oscillator 2 is made of 36 inverters and a NAND gate for enable. + +To get a good output current, a 2 stage inverter is used with large drive transistors. + +* [Ring oscillator 1](https://xschem-viewer.com/?file=https%3A%2F%2Fgithub.com%2Fmattvenn%2Ftt08-analog-ring-osc%2Fblob%2Fmain%2Fxschem%2Fring.sch) +* [Ring oscillator 2](https://xschem-viewer.com/?file=https%3A%2F%2Fgithub.com%2Fmattvenn%2Ftt08-analog-ring-osc%2Fblob%2Fmain%2Fxschem%2Fring_2.sch) +* [Driver](https://xschem-viewer.com/?file=https://github.com/mattvenn/tt08-analog-ring-osc/blob/main/xschem/driver.sch) + +The output waveform of the 600MHz is expected to be as shown in the cyan trace (out_parax). The ring_out_parax and pre_drive_parax are internal signals. See the xschem test bench for more details. + +![output waveform](output_waveform.png) + +## How to test + +* Enable 600 MHz oscillator 1 by setting user input pin 0 high and measure the signal at analog output 0. +* Enable 300 MHz oscillator 2 by setting user input pin 1 high and measure the signal at analog output 1. + +The 300 MHz ring oscillator had a problem with a missing contact in TT08, and is not expected to work. It has been fixed for TT09. + +## External hardware + +Oscilloscope. diff --git a/projects/tt_um_mattvenn_analog_ring_osc/docs/output_waveform.png b/projects/tt_um_mattvenn_analog_ring_osc/docs/output_waveform.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3919e2d620867cd87b4ffea8e51402bf6906c6 GIT binary patch literal 33680 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 Ri6H7nGOrY+iX@D_{2%2<#uWen literal 0 HcmV?d00001 diff --git a/projects/tt_um_mattvenn_analog_ring_osc/info.yaml b/projects/tt_um_mattvenn_analog_ring_osc/info.yaml new file mode 100644 index 0000000..27669a6 --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/info.yaml @@ -0,0 +1,65 @@ +# Tiny Tapeout project information +project: + title: "Ring Oscillators" # Project title + author: "Matt Venn" # Your name + discord: "mattvenn" # Your discord username, for communication and automatically assigning you a Tapeout role (optional) + description: "Ring Oscillators using analog output pins" # One line description of what your project does + language: "Analog" # other examples include Verilog, Amaranth, VHDL, etc + clock_hz: 0 # Clock frequency in Hz (or 0 if not applicable) + + # How many tiles your design occupies? A single tile is about 167x108 uM. + tiles: "1x2" # Valid values for analog projects: 1x2, 2x2 + + # How many analog pins does your project use? + analog_pins: 2 # Valid values: 0 to 6 + uses_3v3: false # Set to true if your project uses 3.3V (VAPWR) in addition to 1.8V (VDPWR) + + # Your top module name must start with "tt_um_". Make it unique by including your github username: + top_module: "tt_um_mattvenn_analog_ring_osc" + + # List your project's source files here. Source files must be in ./src and you must list each source file separately, one per line: + source_files: + - "project.v" + +# The pinout of your project. Leave unused pins blank. DO NOT delete or add any pins. +pinout: + # Inputs + ui[0]: "Enable ring 1" + ui[1]: "Enable ring 2" + ui[2]: "" + ui[3]: "" + ui[4]: "" + ui[5]: "" + ui[6]: "" + ui[7]: "" + + # Outputs + uo[0]: "ring_oscillator1" + uo[1]: "ring_oscillator2" + uo[2]: "" + uo[3]: "" + uo[4]: "" + uo[5]: "" + uo[6]: "" + uo[7]: "" + + # Bidirectional pins + uio[0]: "" + uio[1]: "" + uio[2]: "" + uio[3]: "" + uio[4]: "" + uio[5]: "" + uio[6]: "" + uio[7]: "" + + # Analog pins - make sure to also set "analog_pins" above, else the pins won't be connected + ua[0]: "" + ua[1]: "" + ua[2]: "" + ua[3]: "" + ua[4]: "" + ua[5]: "" + +# Do not change! +yaml_version: 6 diff --git a/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.gds b/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.gds new file mode 100644 index 0000000000000000000000000000000000000000..ed7dcd84195ed8df48db7577bb4cef51300e2c0f GIT binary patch literal 266420 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 Z7xlh=`+fgrzkR*$zS*}w!H#2W_5X1Ugf0L8 literal 0 HcmV?d00001 diff --git a/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.lef b/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.lef new file mode 100644 index 0000000..7c48c83 --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.lef @@ -0,0 +1,531 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO tt_um_mattvenn_analog_ring_osc + CLASS BLOCK ; + FOREIGN tt_um_mattvenn_analog_ring_osc ; + ORIGIN 0.000 0.000 ; + SIZE 161.000 BY 225.760 ; + PIN clk + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 143.830 224.760 144.130 225.760 ; + END + END clk + PIN ena + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 146.590 224.760 146.890 225.760 ; + END + END ena + PIN rst_n + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 141.070 224.760 141.370 225.760 ; + END + END rst_n + PIN ua[0] + DIRECTION INOUT ; + USE SIGNAL ; + ANTENNADIFFAREA 15.839999 ; + PORT + LAYER met4 ; + RECT 151.810 0.000 152.710 1.000 ; + END + END ua[0] + PIN ua[1] + DIRECTION INOUT ; + USE SIGNAL ; + ANTENNADIFFAREA 15.839999 ; + PORT + LAYER met4 ; + RECT 132.490 0.000 133.390 1.000 ; + END + END ua[1] + PIN ua[2] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 113.170 0.000 114.070 1.000 ; + END + END ua[2] + PIN ua[3] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 93.850 0.000 94.750 1.000 ; + END + END ua[3] + PIN ua[4] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 74.530 0.000 75.430 1.000 ; + END + END ua[4] + PIN ua[5] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 55.210 0.000 56.110 1.000 ; + END + END ua[5] + PIN ua[6] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 35.890 0.000 36.790 1.000 ; + END + END ua[6] + PIN ua[7] + DIRECTION INOUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 16.570 0.000 17.470 1.000 ; + END + END ua[7] + PIN ui_in[0] + DIRECTION INPUT ; + USE SIGNAL ; + ANTENNAGATEAREA 0.495000 ; + PORT + LAYER met4 ; + RECT 138.310 224.760 138.610 225.760 ; + END + END ui_in[0] + PIN ui_in[1] + DIRECTION INPUT ; + USE SIGNAL ; + ANTENNAGATEAREA 0.495000 ; + PORT + LAYER met4 ; + RECT 135.550 224.760 135.850 225.760 ; + END + END ui_in[1] + PIN ui_in[2] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 132.790 224.760 133.090 225.760 ; + END + END ui_in[2] + PIN ui_in[3] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 130.030 224.760 130.330 225.760 ; + END + END ui_in[3] + PIN ui_in[4] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 127.270 224.760 127.570 225.760 ; + END + END ui_in[4] + PIN ui_in[5] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 124.510 224.760 124.810 225.760 ; + END + END ui_in[5] + PIN ui_in[6] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 121.750 224.760 122.050 225.760 ; + END + END ui_in[6] + PIN ui_in[7] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 118.990 224.760 119.290 225.760 ; + END + END ui_in[7] + PIN uio_in[0] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 116.230 224.760 116.530 225.760 ; + END + END uio_in[0] + PIN uio_in[1] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 113.470 224.760 113.770 225.760 ; + END + END uio_in[1] + PIN uio_in[2] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 110.710 224.760 111.010 225.760 ; + END + END uio_in[2] + PIN uio_in[3] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 107.950 224.760 108.250 225.760 ; + END + END uio_in[3] + PIN uio_in[4] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 105.190 224.760 105.490 225.760 ; + END + END uio_in[4] + PIN uio_in[5] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 102.430 224.760 102.730 225.760 ; + END + END uio_in[5] + PIN uio_in[6] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 99.670 224.760 99.970 225.760 ; + END + END uio_in[6] + PIN uio_in[7] + DIRECTION INPUT ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 96.910 224.760 97.210 225.760 ; + END + END uio_in[7] + PIN uio_oe[0] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 49.990 224.760 50.290 225.760 ; + END + END uio_oe[0] + PIN uio_oe[1] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 47.230 224.760 47.530 225.760 ; + END + END uio_oe[1] + PIN uio_oe[2] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 44.470 224.760 44.770 225.760 ; + END + END uio_oe[2] + PIN uio_oe[3] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 41.710 224.760 42.010 225.760 ; + END + END uio_oe[3] + PIN uio_oe[4] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 38.950 224.760 39.250 225.760 ; + END + END uio_oe[4] + PIN uio_oe[5] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 36.190 224.760 36.490 225.760 ; + END + END uio_oe[5] + PIN uio_oe[6] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 33.430 224.760 33.730 225.760 ; + END + END uio_oe[6] + PIN uio_oe[7] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 30.670 224.760 30.970 225.760 ; + END + END uio_oe[7] + PIN uio_out[0] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 72.070 224.760 72.370 225.760 ; + END + END uio_out[0] + PIN uio_out[1] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 69.310 224.760 69.610 225.760 ; + END + END uio_out[1] + PIN uio_out[2] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 66.550 224.760 66.850 225.760 ; + END + END uio_out[2] + PIN uio_out[3] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 63.790 224.760 64.090 225.760 ; + END + END uio_out[3] + PIN uio_out[4] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 61.030 224.760 61.330 225.760 ; + END + END uio_out[4] + PIN uio_out[5] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 58.270 224.760 58.570 225.760 ; + END + END uio_out[5] + PIN uio_out[6] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 55.510 224.760 55.810 225.760 ; + END + END uio_out[6] + PIN uio_out[7] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 52.750 224.760 53.050 225.760 ; + END + END uio_out[7] + PIN uo_out[0] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 94.150 224.760 94.450 225.760 ; + END + END uo_out[0] + PIN uo_out[1] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 91.390 224.760 91.690 225.760 ; + END + END uo_out[1] + PIN uo_out[2] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 88.630 224.760 88.930 225.760 ; + END + END uo_out[2] + PIN uo_out[3] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 85.870 224.760 86.170 225.760 ; + END + END uo_out[3] + PIN uo_out[4] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 83.110 224.760 83.410 225.760 ; + END + END uo_out[4] + PIN uo_out[5] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 80.350 224.760 80.650 225.760 ; + END + END uo_out[5] + PIN uo_out[6] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 77.590 224.760 77.890 225.760 ; + END + END uo_out[6] + PIN uo_out[7] + DIRECTION OUTPUT ; + USE SIGNAL ; + ANTENNADIFFAREA 41.928497 ; + PORT + LAYER met4 ; + RECT 74.830 224.760 75.130 225.760 ; + END + END uo_out[7] + PIN VDPWR + DIRECTION INOUT ; + USE POWER ; + PORT + LAYER met4 ; + RECT 1.000 5.000 3.000 220.760 ; + END + END VDPWR + PIN VGND + DIRECTION INOUT ; + USE GROUND ; + PORT + LAYER met4 ; + RECT 4.000 5.000 6.000 220.760 ; + END + END VGND + OBS + LAYER li1 ; + RECT 122.730 10.300 152.380 66.090 ; + LAYER met1 ; + RECT 117.925 4.550 154.100 72.530 ; + LAYER met2 ; + RECT 19.900 3.550 153.400 124.950 ; + LAYER met3 ; + RECT 1.000 2.050 153.425 72.525 ; + LAYER met4 ; + RECT 6.000 224.360 30.270 224.760 ; + RECT 31.370 224.360 33.030 224.760 ; + RECT 34.130 224.360 35.790 224.760 ; + RECT 36.890 224.360 38.550 224.760 ; + RECT 39.650 224.360 41.310 224.760 ; + RECT 42.410 224.360 44.070 224.760 ; + RECT 45.170 224.360 46.830 224.760 ; + RECT 47.930 224.360 49.590 224.760 ; + RECT 50.690 224.360 52.350 224.760 ; + RECT 53.450 224.360 55.110 224.760 ; + RECT 56.210 224.360 57.870 224.760 ; + RECT 58.970 224.360 60.630 224.760 ; + RECT 61.730 224.360 63.390 224.760 ; + RECT 64.490 224.360 66.150 224.760 ; + RECT 67.250 224.360 68.910 224.760 ; + RECT 70.010 224.360 71.670 224.760 ; + RECT 72.770 224.360 74.430 224.760 ; + RECT 75.530 224.360 77.190 224.760 ; + RECT 78.290 224.360 79.950 224.760 ; + RECT 81.050 224.360 82.710 224.760 ; + RECT 83.810 224.360 85.470 224.760 ; + RECT 86.570 224.360 88.230 224.760 ; + RECT 89.330 224.360 90.990 224.760 ; + RECT 92.090 224.360 93.750 224.760 ; + RECT 94.850 224.360 96.510 224.760 ; + RECT 97.610 224.360 99.270 224.760 ; + RECT 100.370 224.360 102.030 224.760 ; + RECT 103.130 224.360 104.790 224.760 ; + RECT 105.890 224.360 107.550 224.760 ; + RECT 108.650 224.360 110.310 224.760 ; + RECT 111.410 224.360 113.070 224.760 ; + RECT 114.170 224.360 115.830 224.760 ; + RECT 116.930 224.360 118.590 224.760 ; + RECT 119.690 224.360 121.350 224.760 ; + RECT 122.450 224.360 124.110 224.760 ; + RECT 125.210 224.360 126.870 224.760 ; + RECT 127.970 224.360 129.630 224.760 ; + RECT 130.730 224.360 132.390 224.760 ; + RECT 133.490 224.360 135.150 224.760 ; + RECT 136.250 224.360 137.910 224.760 ; + RECT 139.010 224.360 140.670 224.760 ; + RECT 141.770 224.360 143.430 224.760 ; + RECT 144.530 224.360 146.190 224.760 ; + RECT 147.290 224.360 153.405 224.760 ; + RECT 6.000 221.160 153.405 224.360 ; + RECT 6.400 4.600 153.405 221.160 ; + RECT 6.000 1.400 153.405 4.600 ; + RECT 6.000 1.000 16.170 1.400 ; + RECT 17.870 1.000 35.490 1.400 ; + RECT 37.190 1.000 54.810 1.400 ; + RECT 56.510 1.000 74.130 1.400 ; + RECT 75.830 1.000 93.450 1.400 ; + RECT 95.150 1.000 112.770 1.400 ; + RECT 114.470 1.000 132.090 1.400 ; + RECT 133.790 1.000 151.410 1.400 ; + RECT 153.110 1.000 153.405 1.400 ; + END +END tt_um_mattvenn_analog_ring_osc +END LIBRARY + diff --git a/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.v b/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.v new file mode 100644 index 0000000..4006b55 --- /dev/null +++ b/projects/tt_um_mattvenn_analog_ring_osc/tt_um_mattvenn_analog_ring_osc.v @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2024 Your Name + * SPDX-License-Identifier: Apache-2.0 + */ + +`default_nettype none + +module tt_um_mattvenn_analog_ring_osc ( + input wire VGND, + input wire VDPWR, // 1.8v power supply +// input wire VAPWR, // 3.3v power supply + input wire [7:0] ui_in, // Dedicated inputs + output wire [7:0] uo_out, // Dedicated outputs + input wire [7:0] uio_in, // IOs: Input path + output wire [7:0] uio_out, // IOs: Output path + output wire [7:0] uio_oe, // IOs: Enable path (active high: 0=input, 1=output) + inout wire [7:0] ua, // Analog pins, only ua[5:0] can be used + input wire ena, // always 1 when the design is powered, so you can ignore it + input wire clk, // clock + input wire rst_n // reset_n - low to reset +); + + wire ring_0_out; + wire ring_2_out; + + ring ring_0( + .VDD(VDPWR), + .VSS(VGND), + .enable(ui_in[0]), + .out(ring_0_out) + ); + + driver driver_0( + .VDD(VDPWR), + .VSS(VGND), + .in(ring_0_out), + .out(ua[0]) + ); + + ring_2 ring_2( + .VDD(VDPWR), + .VSS(VGND), + .enable(ui_in[1]), + .out(ring_2_out) + ); + + driver driver_2( + .VDD(VDPWR), + .VSS(VGND), + .in(ring_2_out), + .out(ua[1]) + ); + + // ties for the output enables + assign uo_out[0] = VGND; + assign uo_out[1] = VGND; + assign uo_out[2] = VGND; + assign uo_out[3] = VGND; + assign uo_out[4] = VGND; + assign uo_out[5] = VGND; + assign uo_out[6] = VGND; + assign uo_out[7] = VGND; + + assign uio_out[0] = VGND; + assign uio_out[1] = VGND; + assign uio_out[2] = VGND; + assign uio_out[3] = VGND; + assign uio_out[4] = VGND; + assign uio_out[5] = VGND; + assign uio_out[6] = VGND; + assign uio_out[7] = VGND; + + assign uio_oe[0] = VGND; + assign uio_oe[1] = VGND; + assign uio_oe[2] = VGND; + assign uio_oe[3] = VGND; + assign uio_oe[4] = VGND; + assign uio_oe[5] = VGND; + assign uio_oe[6] = VGND; + assign uio_oe[7] = VGND; + +endmodule