Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View urish's full-sized avatar

Uri Shaked urish

View GitHub Profile
@urish
urish / fix-windows-path.js
Created April 7, 2024 10:18
Node.js script to remove duplicate path entries on Windows 11
// The script removes duplicate path entries from the User's path.
// It prints a power shell command that you should execute in order to update
// the User's path with the new value.
const { execSync } = require('child_process');
const machinePath = execSync('powershell.exe [Environment]::GetEnvironmentVariable(\\"Path\\", [EnvironmentVariableTarget]::Machine)').toString();
const userPath = execSync('powershell.exe [Environment]::GetEnvironmentVariable(\\"Path\\", [EnvironmentVariableTarget]::User)').toString();
const machinePathParts = machinePath.split(';');
@urish
urish / lib.rs
Last active April 5, 2024 20:39
Rust inverter chip (prototype API)
// Wokwi Custom Chips with Rust
use wokwi_chips_api::println;
use wokwi_chips_api::pin::{Pin, PinMode, WatchEdge};
// chipInit() will be called once per chip instance.
#[no_mangle]
pub unsafe extern "C" fn chipInit() {
println!("Hello from Rust Chip!");
v {xschem version=3.4.4 file_version=1.2
}
G {}
K {}
V {}
S {}
E {}
T {Transmission gate (incl. inverter)} 380 -190 0 0 0.4 0.4 {}
N 680 -980 1000 -980 { lab=VPWR}
N 840 -740 870 -740 {
@urish
urish / text-orient.sch
Created March 14, 2024 11:44
Text orientation test for Xschem Viewer
v {xschem version=3.4.5 file_version=1.2
}
G {}
K {}
V {}
S {}
E {}
L 4 70 -80 90 -80 {}
L 4 80 -90 80 -70 {}
L 4 80 70 80 90 {}
@urish
urish / tt02-caravel-breakout-test-firmware.ino
Last active March 4, 2024 17:36
Quick test firmware for TT02 using the standard caravel breakout board
#include <defs.h>
//#include <math.h>
#include <stub.h>
#include <hw/common.h>
#include <uart.h>
#include <uart_api.h>
// there is some Caravel issue happening that prevents the usual SET and CLR from working
// a fast read followed by write results in the whole register being cleared.
unsigned int temp;
@urish
urish / tt-analog-draw.tcl
Last active February 15, 2024 15:19
Minimal analog project for TT06 (just bare minimum to pass tapeout)
# Important: before running this script, download the the .def file from
# https://github.com/TinyTapeout/tt-support-tools/blob/tt06/def/analog/tt_block_1x2_pg_ana.def
def read tt_block_1x2_pg_ana.def
cellname rename tt_um_template tt_um_analog_example
# VPWR
box 100 500 250 22076
paint met4
label VPWR FreeSans met4
@urish
urish / gds.yaml
Last active November 3, 2023 13:48
Tiny Tapeout Custom GDS submission - GDS action
# Copy this file to .github/workflows/gds.yaml
name: gds
on:
push:
workflow_dispatch:
jobs:
gds:
@urish
urish / scanchain-controller.py
Last active October 23, 2023 12:19
TinyTapeout 02 External Scanchain controller
from machine import Pin
import time
CLK_PERIOD_MS = 1
NUM_DESIGNS = 250 # should be higher
# from chip's perspective
# pinout here: https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico/1
ext_clk = Pin(6, Pin.OUT)
ext_latch = Pin(7, Pin.OUT)
@urish
urish / scanchain-driver.py
Created October 20, 2023 11:00
Tiny Tapeout Scanchain Driver
from machine import Pin, Timer
import time
CLK_PERIOD_MS = 1
NUM_DESIGNS = 2 # should be higher
# from chip's perspective
# pinout here: https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico/1
ext_clk = Pin(6, Pin.OUT)
ext_latch = Pin(7, Pin.OUT)
@urish
urish / gds_compare.py
Created October 18, 2023 08:51
Compare two GDS files using klayout scripting
# Usage:
# klayout -b -r compare.py -rd gds1=file1.gds -rd gds2=file2.gds
import sys
import pya
def compare_gds(file1, file2):
diff = pya.LayoutDiff()
# Load the layouts