Compare commits

...

5 Commits

Author SHA1 Message Date
sirlilpanda
04e1ad0d0a moved to dxfs 2026-02-25 21:13:45 +13:00
sirlilpanda
2516378755 added more comments 2026-02-25 21:13:25 +13:00
sirlilpanda
f94a6d137e new wafer layout and update the comments on some others 2026-02-25 21:13:05 +13:00
sirlilpanda
7526d8d2a1 added more comments to explain each part 2026-02-25 21:12:37 +13:00
sirlilpanda
21ed153977 some preset dxfs to use 2026-02-25 21:12:09 +13:00
15 changed files with 4257487 additions and 80 deletions

View File

@@ -1,70 +1,116 @@
// ================= README =================
// these are the normal parameters used by
// each one of the layout scripts
// however they do dont directly use them
// and instead have thier own copy
//
// this was done in order to have more control
// over each of the scripts themsevels
// allowing each to have even more parameters
// and having them show up in the open scad
// parameters window
// ================= README =================
// ================= openscad prams ================= // ================= openscad prams =================
$fa = 1;
// min angle
$fa = 0.1;
// min size
$fs = 0.01; $fs = 0.01;
// ================= openscad prams ================= // ================= openscad prams =================
// ================= meta ================= // ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1"; SCRIPT_VERSION="0.0.1";
// this really just need to be any mon font
// font for layout
FONT="Ubuntu Sans Mono:style=Regular"; FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1; test_number = 1;
// scale in m
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3; scale_unit = 1e3;
// ================= meta ================= // ================= meta =================
// ================= IDT ================= // ================= IDT =================
// the underlying substrate
substrate = "SI"; substrate = "SI";
// linbo // linbo
// the aoucstice wave speed in the substrate
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
// the target frequency of the IDT
freq = 50.0e6; freq = 50.0e6;
// $fs = (c/freq); // the distance between the input and output IDT
// should be between 100-200
// inout distance
distance = 50; distance = 50;
// number of finger // the number of fingers the IDT has
n_fingers = 50; n_fingers = 50;
// should be 50-70 // the length of the figure or aperture should be 50-70
finger_length = 60; finger_length = 60;
// for tweaking the design // the gap between both sides of the IDT (should be used for tweaking)
gap = 0; gap = 0;
// for tweaking the design // the thickness of the wire the connects all the fingers
thickness = 0; thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = false; has_id_number = false;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.003; leg_length = 0.003;
// the width of the leg
leg_width = 0.00001875; leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10; leg_angle = 10;
// the size of the bond pad
size = 0.002; size = 0.002;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square"; bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=7; info_block_offset_x=7;
info_block_offset_y=30; info_block_offset_y=30;
// total scale of infoblock
info_block_scale=0.3; info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4; title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5; prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 1; id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= array spacings =================
number_of_idts_per_quadrent=4;
idt_x_spacing = 10;
idt_y_spacing = 12.5;
// ================= array spacings =================
// ================= wafers ================= // ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4; wafer_size_inch = 4;
// ================= wafers ================= // ================= wafers =================

View File

@@ -0,0 +1,38 @@
{
"parameterSets": {
"design default values": {
"$fa": "1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "70",
"finger_length": "50",
"freq": "1e+7",
"gap": "0",
"has_id_number": "true",
"id_text_size": "1",
"idt_1_x_offset": "-15",
"idt_1_y_offset": "0",
"idt_2_x_offset": "15",
"idt_2_y_offset": "0",
"info_block_offset_x": "32",
"info_block_offset_y": "-7",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "SI",
"test_number": "2",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
{
"parameterSets": {
"design default values": {
"$fa": "0.1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "50",
"finger_length": "50",
"freq": "1e+7",
"gap": "0",
"has_id_number": "false",
"id_text_size": "1",
"idt_x_offset": "0",
"idt_y_offset": "0",
"info_block_offset_x": "25",
"info_block_offset_y": "10",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "SI",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
{
"parameterSets": {
"design default values": {
"$fa": "0.1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"cols": "10",
"distance": "50",
"finger_length": "60",
"freq": "3.45e+8",
"gap": "0",
"has_id_number": "true",
"id_text_size": "0.5",
"info_block_offset_x": "28",
"info_block_offset_y": "-5",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.001",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"rows": "10",
"scale_unit": "1000",
"size": "0.00075",
"spacing_x": "4",
"spacing_y": "7",
"substrate": "SI",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

View File

@@ -24,7 +24,9 @@ module bi_directional_idt(
// id number prams // id number prams
id_number = 0, id_number = 0,
has_id = false, has_id = false,
id_flip_dir = [1, 1, 1], id_scale = [1, 1, 1],
id_translate = [0, 0, 0],
id_rot = [0, 0, 0],
// extra // extra
post_scale = 1, post_scale = 1,
echo_stats = false, echo_stats = false,
@@ -46,7 +48,9 @@ module bi_directional_idt(
if (has_id) { if (has_id) {
color([255/255, 0/255, 255/255]) color([255/255, 0/255, 255/255])
translate([finger_length*lambda/2, has_bond_pads ? -(bond_pad_leg_length * post_scale * cos(bond_pad_angle)) : -lambda*finger_length/2, 0]) translate([finger_length*lambda/2, has_bond_pads ? -(bond_pad_leg_length * post_scale * cos(bond_pad_angle)) : -lambda*finger_length/2, 0])
scale(id_flip_dir) translate(id_translate)
rotate(id_rot)
scale(id_scale)
text(str(id_number), size=id_text_size, halign="center"); text(str(id_number), size=id_text_size, halign="center");
} }

View File

@@ -15,7 +15,6 @@ module bond_pad(
bond_pad_shape = "square", bond_pad_shape = "square",
post_scale = false post_scale = false
) { ) {
if (post_scale) {
circle(r=leg_width*post_scale); circle(r=leg_width*post_scale);
rotate([0, 0, leg_angle+180]) { rotate([0, 0, leg_angle+180]) {
@@ -33,16 +32,4 @@ module bond_pad(
// echo(str("x = ", post_scale*leg_length*cos(leg_angle+180))); // echo(str("x = ", post_scale*leg_length*cos(leg_angle+180)));
// echo(str("y = ", post_scale*leg_length*sin(leg_angle+180))); // echo(str("y = ", post_scale*leg_length*sin(leg_angle+180)));
} else {
rotate([0, 0, leg_angle+180]) {
translate([-leg_length/2, -leg_width, 0]) {
// color([0, 255/255, 255/255]) {
square(size=[leg_length, leg_width]);
// }
}
}
square(size=[size, size], center=true);
}
} }

View File

@@ -27,7 +27,7 @@ module delay_line(lambda = 1, n_fingers = 1, finger_length = 50, gap = 0, thickn
[b, l4*5-l4], [b, l4*5-l4],
[0, l4*5-l4] [0, l4*5-l4]
]; ];
// union () { union () {
translate([0, l2, 0]){ translate([0, l2, 0]){
for(i = [0:n_fingers]){ for(i = [0:n_fingers]){
@@ -64,6 +64,6 @@ module delay_line(lambda = 1, n_fingers = 1, finger_length = 50, gap = 0, thickn
square(size=[l4+thickness, l4]); square(size=[l4+thickness, l4]);
} }
} }
}
} }
} }

View File

@@ -0,0 +1,188 @@
include <../modules/bidirectional_idt.scad>
include <../modules/parameter_text.scad>
include <../modules/wafer.scad>
// ================= README =================
// these are the normal parameters used by
// each one of the layout scripts
// however they do dont directly use them
// and instead have thier own copy
//
// this was done in order to have more control
// over each of the scripts themsevels
// allowing each to have even more parameters
// and having them show up in the open scad
// parameters window
// ================= README =================
// ================= openscad prams =================
// min angle
$fa = 0.1;
// min size
$fs = 0.01;
// ================= openscad prams =================
// ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1";
// font for layout
FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1;
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3;
// ================= meta =================
// ================= IDT =================
// the underlying substrate
substrate = "SI";
// linbo
// the aoucstice wave speed in the substrate
c = 3992.0;
// si
// c = 3159.0;
// the target frequency of the IDT
freq = 345.0e6;
// the distance between the input and output IDT
// should be between 100-200
distance = 50;
// the number of fingers the IDT has
n_fingers = 50;
// the length of the figure or aperture should be 50-70
finger_length = 60;
// the gap between both sides of the IDT (should be used for tweaking)
gap = 0;
// the thickness of the wire the connects all the fingers
thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = true;
// ================= IDT =================
// ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.001;
// the width of the leg
leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10;
// the size of the bond pad
size = 0.00075;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square";
// ================= bond pad =================
// ================= text =================
info_block_offset_x=28;
info_block_offset_y=-5;
// total scale of infoblock
info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 0.5;
// ================= text =================
// ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4;
// ================= wafers =================
// ================= # IDTS =================
rows = 10;
cols = 10;
spacing_x = 4;
spacing_y = 7;
// ================= # IDTS =================
module params() {
parameter_text(
str("IDT ", substrate, "#", test_number),
[
str("c (ms): ", c),
str("freq (Hz): ", freq),
str("distance : ", distance),
str("n_fingers : ", n_fingers),
str("finger_length : ", finger_length),
str("gap : ", gap),
str("thickness : ", thickness),
str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle),
str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3),
str("version : ", SCRIPT_VERSION)
]
);
}
translate([info_block_offset_x, -info_block_offset_y, 0])
scale([info_block_scale, info_block_scale, info_block_scale])
params();
wafer(4*0.0254*scale_unit);
translate([-spacing_x*rows/2, -spacing_y*cols/2, 0])
for (x=[0:rows]) {
for (y=[0:cols]) {
translate([spacing_x*x, spacing_y*y, 0])
bi_directional_idt(
c,
freq,
n_fingers,
distance,
finger_length,
gap,
thickness,
post_scale=scale_unit,
center = true,
has_bond_pads = true,
bond_pad_angle = leg_angle,
bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length,
bond_pad_size = size,
has_id = has_id_number,
id_translate = [1.7, -0.5, 0],
id_rot = [0, 0, 90],
id_number = x*rows + y
);
}
}

View File

@@ -36,18 +36,18 @@ substrate = "LINBO";
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
freq = 50.0e6; freq = 10.0e6;
// $fs = (c/freq); // $fs = (c/freq);
// inout distance // inout distance
distance = 50; distance = 70;
// number of finger // number of finger
n_fingers = 50; n_fingers = 50;
// should be 50-70 // should be 50-70
finger_length = 60; finger_length = 50;
// for tweaking the design // for tweaking the design
gap = 0; gap = 0;
@@ -55,7 +55,7 @@ gap = 0;
// for tweaking the design // for tweaking the design
thickness = 0; thickness = 0;
has_id_number = false; has_id_number = true;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
@@ -67,8 +67,8 @@ bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=20; info_block_offset_x=32;
info_block_offset_y=-15; info_block_offset_y=-7;
info_block_scale=0.3; info_block_scale=0.3;
title_text_size = 4; title_text_size = 4;
prop_text_size = 2.5; prop_text_size = 2.5;
@@ -76,9 +76,9 @@ id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= IDT Pos ================= // ================= IDT Pos =================
idt_1_x_offset = -5; idt_1_x_offset = -15;
idt_1_y_offset = 0; idt_1_y_offset = 0;
idt_2_x_offset = 5; idt_2_x_offset = 15;
idt_2_y_offset = 0; idt_2_y_offset = 0;
// ================= IDT Pos ================= // ================= IDT Pos =================
@@ -128,6 +128,7 @@ bi_directional_idt(
bond_pad_leg_width = leg_width, bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length, bond_pad_leg_length = leg_length,
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number,
center = true center = true
); );
@@ -146,5 +147,7 @@ bi_directional_idt(
bond_pad_leg_width = leg_width, bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length, bond_pad_leg_length = leg_length,
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number,
id_number = 1,
center = true center = true
); );

View File

@@ -0,0 +1,37 @@
{
"parameterSets": {
"frogs": {
"$fa": "1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "50",
"finger_length": "60",
"freq": "5e+7",
"gap": "0",
"has_id_number": "true",
"id_text_size": "1",
"idt_x_spacing": "10",
"idt_y_spacing": "12.5",
"info_block_offset_x": "7",
"info_block_offset_y": "30",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"number_of_idts_per_quadrent": "4",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "LINBO",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

View File

@@ -156,7 +156,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent, id_number = i + number_of_idts_per_quadrent,
id_flip_dir = [1, -1, -1] id_scale = [1, -1, -1]
); );
} }
} }
@@ -182,7 +182,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent*2, id_number = i + number_of_idts_per_quadrent*2,
id_flip_dir = [-1, 1, 1] id_scale = [-1, 1, 1]
); );
} }
translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) { translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) {
@@ -203,7 +203,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent*3, id_number = i + number_of_idts_per_quadrent*3,
id_flip_dir = [-1, -1, 1] id_scale = [-1, -1, 1]
); );
} }
} }

View File

@@ -15,75 +15,121 @@ include <../modules/wafer.scad>
// parameters window // parameters window
// ================= README ================= // ================= README =================
// ================= openscad prams ================= // ================= openscad prams =================
$fa = 1;
// min angle
$fa = 0.1;
// min size
$fs = 0.01; $fs = 0.01;
// ================= openscad prams ================= // ================= openscad prams =================
// ================= meta ================= // ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1"; SCRIPT_VERSION="0.0.1";
// this really just need to be any mon font
// font for layout
FONT="Ubuntu Sans Mono:style=Regular"; FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1; test_number = 1;
// scale in m
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3; scale_unit = 1e3;
// ================= meta ================= // ================= meta =================
// ================= IDT ================= // ================= IDT =================
substrate = "LINBO";
// the underlying substrate
substrate = "SI";
// linbo // linbo
// the aoucstice wave speed in the substrate
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
freq = 50.0e6;
// $fs = (c/freq); // the target frequency of the IDT
freq = 10.0e6;
// inout distance // the distance between the input and output IDT
// should be between 100-200
distance = 50; distance = 50;
// number of finger // the number of fingers the IDT has
n_fingers = 50; n_fingers = 50;
// should be 50-70 // the length of the figure or aperture should be 50-70
finger_length = 60; finger_length = 50;
// for tweaking the design // the gap between both sides of the IDT (should be used for tweaking)
gap = 0; gap = 0;
// for tweaking the design // the thickness of the wire the connects all the fingers
thickness = 0; thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = false; has_id_number = false;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.003; leg_length = 0.003;
// the width of the leg
leg_width = 0.00001875; leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10; leg_angle = 10;
// the size of the bond pad
size = 0.002; size = 0.002;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square"; bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=20;
info_block_offset_y=-15; info_block_offset_x=25;
info_block_offset_y=10;
// total scale of infoblock
info_block_scale=0.3; info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4; title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5; prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 1; id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= IDT Pos =================
idt_x_offset = 0;
idt_y_offset = 0;
// ================= IDT Pos =================
// ================= wafers ================= // ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4; wafer_size_inch = 4;
// ================= wafers ================= // ================= wafers =================
// ================= IDT Pos =================
// the x offset of the IDT from the center
idt_x_offset = 0;
// the y offset of the IDT from the center
idt_y_offset = 0;
// ================= IDT Pos =================
module params() { module params() {
parameter_text( parameter_text(
str("IDT ", substrate, "#", test_number), str("IDT ", substrate, "#", test_number),
@@ -98,7 +144,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*scale_unit),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );