From a0119ef7f603b3323c922787f0356441bb05c3ac Mon Sep 17 00:00:00 2001 From: TinyTapeoutBot <139130078+TinyTapeoutBot@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:35:03 +0200 Subject: [PATCH] feat: update project tt_um_couchand_analog_switch from couchand/tt09-analog-switch Commit: 68eaa30864089d3166e81c0aa23e34a06047ece3 Workflow: https://github.com/couchand/tt09-analog-switch/actions/runs/11691120731 --- projects/tt_um_couchand_analog_switch/LICENSE | 201 ++++++++ .../commit_id.json | 8 + .../tt_um_couchand_analog_switch/docs/info.md | 16 + .../tt_um_couchand_analog_switch/info.yaml | 65 +++ .../tt_um_couchand_analog_switch.gds | Bin 0 -> 56518 bytes .../tt_um_couchand_analog_switch.lef | 488 ++++++++++++++++++ .../tt_um_couchand_analog_switch.v | 23 + 7 files changed, 801 insertions(+) create mode 100644 projects/tt_um_couchand_analog_switch/LICENSE create mode 100644 projects/tt_um_couchand_analog_switch/commit_id.json create mode 100644 projects/tt_um_couchand_analog_switch/docs/info.md create mode 100644 projects/tt_um_couchand_analog_switch/info.yaml create mode 100644 projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.gds create mode 100644 projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.lef create mode 100644 projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.v diff --git a/projects/tt_um_couchand_analog_switch/LICENSE b/projects/tt_um_couchand_analog_switch/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/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_couchand_analog_switch/commit_id.json b/projects/tt_um_couchand_analog_switch/commit_id.json new file mode 100644 index 00000000..84a676cb --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/commit_id.json @@ -0,0 +1,8 @@ +{ + "app": "custom_gds action", + "repo": "https://github.com/couchand/tt09-analog-switch", + "commit": "68eaa30864089d3166e81c0aa23e34a06047ece3", + "workflow_url": "https://github.com/couchand/tt09-analog-switch/actions/runs/11691120731", + "sort_id": 1730835298277, + "analog": true +} \ No newline at end of file diff --git a/projects/tt_um_couchand_analog_switch/docs/info.md b/projects/tt_um_couchand_analog_switch/docs/info.md new file mode 100644 index 00000000..29c4941c --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/docs/info.md @@ -0,0 +1,16 @@ + + +## How it works + +This is a basic analog switch. When the control input is high, the X and Y analog inputs are connected. When the control input is low, they are not connected. + +## How to test + +Connect X to digital high. Connect a pull-down resistor from Y to ground. Change the value of the control input, and verify that the voltage at Y matches. diff --git a/projects/tt_um_couchand_analog_switch/info.yaml b/projects/tt_um_couchand_analog_switch/info.yaml new file mode 100644 index 00000000..901a878a --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/info.yaml @@ -0,0 +1,65 @@ +# Tiny Tapeout project information +project: + title: "Analog Switch" # Project title + author: "Andrew Dona-Couch" # Your name + discord: "couchand" # Your discord username, for communication and automatically assigning you a Tapeout role (optional) + description: "A simple analog switch." # 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_couchand_analog_switch" + + # 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]: "Control Input" + ui[1]: "" + ui[2]: "" + ui[3]: "" + ui[4]: "" + ui[5]: "" + ui[6]: "" + ui[7]: "" + + # Outputs + uo[0]: "" + uo[1]: "" + 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]: "X" + ua[1]: "Y" + ua[2]: "" + ua[3]: "" + ua[4]: "" + ua[5]: "" + +# Do not change! +yaml_version: 6 diff --git a/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.gds b/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.gds new file mode 100644 index 0000000000000000000000000000000000000000..8512ec977c63672d8fe6a5d85a5deafab74dd4a7 GIT binary patch literal 56518 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 literal 0 HcmV?d00001 diff --git a/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.lef b/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.lef new file mode 100644 index 00000000..fefd6ffc --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.lef @@ -0,0 +1,488 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO tt_um_couchand_analog_switch + CLASS BLOCK ; + FOREIGN tt_um_couchand_analog_switch ; + 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 2.088000 ; + PORT + LAYER met4 ; + RECT 151.810 0.000 152.710 1.000 ; + END + END ua[0] + PIN ua[1] + DIRECTION INOUT ; + USE SIGNAL ; + ANTENNADIFFAREA 4.176000 ; + 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 7.776000 ; + 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 ; + 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 TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 49.990 224.760 50.290 225.760 ; + END + END uio_oe[0] + PIN uio_oe[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 47.230 224.760 47.530 225.760 ; + END + END uio_oe[1] + PIN uio_oe[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 44.470 224.760 44.770 225.760 ; + END + END uio_oe[2] + PIN uio_oe[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 41.710 224.760 42.010 225.760 ; + END + END uio_oe[3] + PIN uio_oe[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 38.950 224.760 39.250 225.760 ; + END + END uio_oe[4] + PIN uio_oe[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 36.190 224.760 36.490 225.760 ; + END + END uio_oe[5] + PIN uio_oe[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 33.430 224.760 33.730 225.760 ; + END + END uio_oe[6] + PIN uio_oe[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 30.670 224.760 30.970 225.760 ; + END + END uio_oe[7] + PIN uio_out[0] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 72.070 224.760 72.370 225.760 ; + END + END uio_out[0] + PIN uio_out[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 69.310 224.760 69.610 225.760 ; + END + END uio_out[1] + PIN uio_out[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 66.550 224.760 66.850 225.760 ; + END + END uio_out[2] + PIN uio_out[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 63.790 224.760 64.090 225.760 ; + END + END uio_out[3] + PIN uio_out[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 61.030 224.760 61.330 225.760 ; + END + END uio_out[4] + PIN uio_out[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 58.270 224.760 58.570 225.760 ; + END + END uio_out[5] + PIN uio_out[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 55.510 224.760 55.810 225.760 ; + END + END uio_out[6] + PIN uio_out[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 52.750 224.760 53.050 225.760 ; + END + END uio_out[7] + PIN uo_out[0] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 94.150 224.760 94.450 225.760 ; + END + END uo_out[0] + PIN uo_out[1] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 91.390 224.760 91.690 225.760 ; + END + END uo_out[1] + PIN uo_out[2] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 88.630 224.760 88.930 225.760 ; + END + END uo_out[2] + PIN uo_out[3] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 85.870 224.760 86.170 225.760 ; + END + END uo_out[3] + PIN uo_out[4] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 83.110 224.760 83.410 225.760 ; + END + END uo_out[4] + PIN uo_out[5] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 80.350 224.760 80.650 225.760 ; + END + END uo_out[5] + PIN uo_out[6] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + PORT + LAYER met4 ; + RECT 77.590 224.760 77.890 225.760 ; + END + END uo_out[6] + PIN uo_out[7] + DIRECTION OUTPUT TRISTATE ; + USE SIGNAL ; + 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 54.000 109.000 66.790 123.500 ; + LAYER met1 ; + RECT 1.000 109.000 66.350 126.500 ; + LAYER met2 ; + RECT 1.000 108.500 73.000 126.500 ; + LAYER met3 ; + RECT 1.000 108.500 153.000 126.500 ; + LAYER met4 ; + RECT 62.500 224.360 63.390 224.800 ; + RECT 64.490 224.360 66.150 224.800 ; + RECT 67.250 224.360 68.910 224.800 ; + RECT 70.010 224.360 71.670 224.800 ; + RECT 72.770 224.360 74.430 224.800 ; + RECT 75.530 224.360 77.190 224.800 ; + RECT 78.290 224.360 79.950 224.800 ; + RECT 81.050 224.360 82.710 224.800 ; + RECT 83.810 224.360 85.470 224.800 ; + RECT 86.570 224.360 88.230 224.800 ; + RECT 89.330 224.360 90.990 224.800 ; + RECT 92.090 224.360 93.750 224.800 ; + RECT 94.850 224.360 96.510 224.800 ; + RECT 97.610 224.360 99.270 224.800 ; + RECT 100.370 224.360 102.030 224.800 ; + RECT 103.130 224.360 104.790 224.800 ; + RECT 105.890 224.360 107.550 224.800 ; + RECT 108.650 224.360 110.310 224.800 ; + RECT 111.410 224.360 113.070 224.800 ; + RECT 114.170 224.360 115.830 224.800 ; + RECT 116.930 224.360 118.590 224.800 ; + RECT 119.690 224.360 121.350 224.800 ; + RECT 122.450 224.360 124.110 224.800 ; + RECT 125.210 224.360 126.870 224.800 ; + RECT 127.970 224.360 129.630 224.800 ; + RECT 130.730 224.360 132.390 224.800 ; + RECT 133.490 224.360 135.150 224.800 ; + RECT 136.250 224.360 137.910 224.800 ; + RECT 139.010 224.360 140.670 224.800 ; + RECT 141.770 224.360 143.430 224.800 ; + RECT 144.530 224.360 146.190 224.800 ; + RECT 147.290 224.360 153.000 224.800 ; + RECT 62.500 1.400 153.000 224.360 ; + RECT 62.500 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 ; + END +END tt_um_couchand_analog_switch +END LIBRARY + diff --git a/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.v b/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.v new file mode 100644 index 00000000..f340bac3 --- /dev/null +++ b/projects/tt_um_couchand_analog_switch/tt_um_couchand_analog_switch.v @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2024 Andrew Dona-Couch + * SPDX-License-Identifier: Apache-2.0 + */ + +`default_nettype none + +module tt_um_couchand_analog_switch ( + 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 +); + +endmodule