From 2a78acbec201f8e4bb39f78bae1d3704484b0165 Mon Sep 17 00:00:00 2001 From: TinyTapeoutBot <139130078+TinyTapeoutBot@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:32:43 +0300 Subject: [PATCH] feat: update project tt_um_aleena from aleena-duk/tinytapeoutsig Commit: d5813adf9437ff2fa69c2d7bb37f754786787018 Workflow: https://github.com/aleena-duk/tinytapeoutsig/actions/runs/8756035538 --- projects/tt_um_aleena/LICENSE | 201 ++++++++ projects/tt_um_aleena/commit_id.json | 8 + projects/tt_um_aleena/docs/info.md | 20 + projects/tt_um_aleena/info.yaml | 62 +++ projects/tt_um_aleena/tt_um_aleena.gds | Bin 0 -> 64038 bytes projects/tt_um_aleena/tt_um_aleena.lef | 647 +++++++++++++++++++++++++ projects/tt_um_aleena/tt_um_aleena.v | 19 + 7 files changed, 957 insertions(+) create mode 100644 projects/tt_um_aleena/LICENSE create mode 100644 projects/tt_um_aleena/commit_id.json create mode 100644 projects/tt_um_aleena/docs/info.md create mode 100644 projects/tt_um_aleena/info.yaml create mode 100644 projects/tt_um_aleena/tt_um_aleena.gds create mode 100644 projects/tt_um_aleena/tt_um_aleena.lef create mode 100644 projects/tt_um_aleena/tt_um_aleena.v diff --git a/projects/tt_um_aleena/LICENSE b/projects/tt_um_aleena/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/projects/tt_um_aleena/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_aleena/commit_id.json b/projects/tt_um_aleena/commit_id.json new file mode 100644 index 0000000..20f9e38 --- /dev/null +++ b/projects/tt_um_aleena/commit_id.json @@ -0,0 +1,8 @@ +{ + "app": "custom_gds action", + "repo": "https://github.com/aleena-duk/tinytapeoutsig", + "commit": "d5813adf9437ff2fa69c2d7bb37f754786787018", + "workflow_url": "https://github.com/aleena-duk/tinytapeoutsig/actions/runs/8756035538", + "sort_id": 1713540758630, + "analog": true +} \ No newline at end of file diff --git a/projects/tt_um_aleena/docs/info.md b/projects/tt_um_aleena/docs/info.md new file mode 100644 index 0000000..c98af05 --- /dev/null +++ b/projects/tt_um_aleena/docs/info.md @@ -0,0 +1,20 @@ + + +## How it works + + ReLu and sigmoid activation functions are included + +## How to test + +For ReLu:The output is same as the input value if it is positive and zero otherwise. +For Sigmoid:Used for binary classification and predict the probability as output. +## External hardware + +A voltage source at analog pin 1 and analog pin 4 which is an output of an ANN diff --git a/projects/tt_um_aleena/info.yaml b/projects/tt_um_aleena/info.yaml new file mode 100644 index 0000000..2d25687 --- /dev/null +++ b/projects/tt_um_aleena/info.yaml @@ -0,0 +1,62 @@ +# Tiny Tapeout project information +project: + title: "Analog Sigmoid" # Project title + author: "aleena" # Your name + discord: "" # Your discord username, for communication and automatically assigning you a Tapeout role (optional) + description: "Activation functions for neuromorphic computing" # 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: 1x1 (digital only), 1x2, 2x2, 3x2, 4x2, 6x2 or 8x2 + + # Your top module name must start with "tt_um_". Make it unique by including your github username: + top_module: "tt_um_aleena" + + # 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]: "" + 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 - you can add more if you use them, up to 6. + # Keep only the "ua" pins you are actually using, and *delete* any unused "ua" pins. + # The first pins is always ua[0], and the pin numbers must be sequential. + ua[0]: "in1" + ua[1]: "out1" + ua[2]: "gnd1" + ua[3]: "in2" + ua[4]: "out2" +# Do not change! +yaml_version: 6 + diff --git a/projects/tt_um_aleena/tt_um_aleena.gds b/projects/tt_um_aleena/tt_um_aleena.gds new file mode 100644 index 0000000000000000000000000000000000000000..efe7021c3181691c9f549d2be036c3b0970642a1 GIT binary patch literal 64038 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