From 3c25ae08a6a9388815022e1fa365e53f948af352 Mon Sep 17 00:00:00 2001 From: Uri Shaked Date: Wed, 26 Jun 2024 21:22:52 +0300 Subject: [PATCH] feat(analog): magic script to create a new analog project --- def/analog/magic_init_project.tcl | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 def/analog/magic_init_project.tcl diff --git a/def/analog/magic_init_project.tcl b/def/analog/magic_init_project.tcl new file mode 100644 index 0000000..a04be87 --- /dev/null +++ b/def/analog/magic_init_project.tcl @@ -0,0 +1,54 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2024 Tiny Tapeout LTD +# Author: Uri Shaked +# Description: This script initializes a new Magic project for an analog design on Tiny Tapeout. + +# Important: before running this script, download the the .def file from +# https://raw.githubusercontent.com/TinyTapeout/tt-support-tools/tt08/def/analog/tt_analog_1x2.def + +# Change the settings below to match your design: +# ------------------------------------------------ +set TOP_LEVEL_CELL tt_um_analog_example +set TEMPLATE_FILE tt_analog_1x2.def +set POWER_STRIPE_WIDTH 2um ;# The minimum width is 1.2um + +# Power stripes: NET name, x position. You can add additional power stripes for each net, as needed. +set POWER_STRIPES { + VDPWR 1um + VGND 4um +} +# If you use the 3v3 template, uncomment the line below: +#lappend POWER_STRIPES VAPWR 7um + +# Read in the pin positions +# ------------------------- +def read $TEMPLATE_FILE +cellname rename tt_um_template $TOP_LEVEL_CELL + +# Draw the power stripes +# -------------------------------- +proc draw_power_stripe {name x} { + global POWER_STRIPE_WIDTH + box $x 5um $x 220.76um + box width $POWER_STRIPE_WIDTH + paint met4 + label $name FreeSans 0.25u -met4 + port make + port use [expr {$name eq "VGND" ? "ground" : "power"}] + port class bidirectional + port connections n s e w +} + +# You can extra power stripes, as you need. +foreach {name x} $POWER_STRIPES { + puts "Drawing power stripe $name at $x" + draw_power_stripe $name $x +} + +# Save the layout and export GDS/LEF +# ---------------------------------- +save ${TOP_LEVEL_CELL}.mag +file mkdir gds +gds write gds/${TOP_LEVEL_CELL}.gds +file mkdir lef +lef write lef/${TOP_LEVEL_CELL}.lef -hide -pinonly