From f94a6d137e9efe5ead3772ce56bad6141e5165fd Mon Sep 17 00:00:00 2001 From: sirlilpanda Date: Wed, 25 Feb 2026 21:13:05 +1300 Subject: [PATCH] new wafer layout and update the comments on some others --- wafer_layouts/gird_array_idt.scad | 188 ++++++++++++++++++++++++++++++ wafer_layouts/pair_idt.scad | 19 +-- wafer_layouts/quadrant_array.json | 37 ++++++ wafer_layouts/quadrant_array.scad | 6 +- wafer_layouts/single_idt.scad | 88 ++++++++++---- 5 files changed, 306 insertions(+), 32 deletions(-) create mode 100644 wafer_layouts/gird_array_idt.scad create mode 100644 wafer_layouts/quadrant_array.json diff --git a/wafer_layouts/gird_array_idt.scad b/wafer_layouts/gird_array_idt.scad new file mode 100644 index 0000000..69fb730 --- /dev/null +++ b/wafer_layouts/gird_array_idt.scad @@ -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 + ); + + } +} + + diff --git a/wafer_layouts/pair_idt.scad b/wafer_layouts/pair_idt.scad index bc8cf4c..12944ee 100644 --- a/wafer_layouts/pair_idt.scad +++ b/wafer_layouts/pair_idt.scad @@ -36,18 +36,18 @@ substrate = "LINBO"; c = 3992.0; // si // c = 3159.0; -freq = 50.0e6; +freq = 10.0e6; // $fs = (c/freq); // inout distance -distance = 50; +distance = 70; // number of finger n_fingers = 50; // should be 50-70 -finger_length = 60; +finger_length = 50; // for tweaking the design gap = 0; @@ -55,7 +55,7 @@ gap = 0; // for tweaking the design thickness = 0; -has_id_number = false; +has_id_number = true; // ================= IDT ================= // ================= bond pad ================= @@ -67,8 +67,8 @@ bond_pad_shape = "square"; // ================= bond pad ================= // ================= text ================= -info_block_offset_x=20; -info_block_offset_y=-15; +info_block_offset_x=32; +info_block_offset_y=-7; info_block_scale=0.3; title_text_size = 4; prop_text_size = 2.5; @@ -76,9 +76,9 @@ id_text_size = 1; // ================= text ================= // ================= IDT Pos ================= -idt_1_x_offset = -5; +idt_1_x_offset = -15; idt_1_y_offset = 0; -idt_2_x_offset = 5; +idt_2_x_offset = 15; idt_2_y_offset = 0; // ================= IDT Pos ================= @@ -128,6 +128,7 @@ bi_directional_idt( bond_pad_leg_width = leg_width, bond_pad_leg_length = leg_length, bond_pad_size = size, + has_id = has_id_number, center = true ); @@ -146,5 +147,7 @@ bi_directional_idt( bond_pad_leg_width = leg_width, bond_pad_leg_length = leg_length, bond_pad_size = size, + has_id = has_id_number, + id_number = 1, center = true ); \ No newline at end of file diff --git a/wafer_layouts/quadrant_array.json b/wafer_layouts/quadrant_array.json new file mode 100644 index 0000000..9f5ef0d --- /dev/null +++ b/wafer_layouts/quadrant_array.json @@ -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" +} diff --git a/wafer_layouts/quadrant_array.scad b/wafer_layouts/quadrant_array.scad index 26302a7..9d4f01b 100644 --- a/wafer_layouts/quadrant_array.scad +++ b/wafer_layouts/quadrant_array.scad @@ -156,7 +156,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) { bond_pad_size = size, has_id = has_id_number, 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, has_id = has_id_number, 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]) { @@ -203,7 +203,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) { bond_pad_size = size, has_id = has_id_number, id_number = i + number_of_idts_per_quadrent*3, - id_flip_dir = [-1, -1, 1] + id_scale = [-1, -1, 1] ); } } diff --git a/wafer_layouts/single_idt.scad b/wafer_layouts/single_idt.scad index 06666cc..ed01360 100644 --- a/wafer_layouts/single_idt.scad +++ b/wafer_layouts/single_idt.scad @@ -15,75 +15,121 @@ include <../modules/wafer.scad> // parameters window // ================= README ================= + // ================= openscad prams ================= -$fa = 1; + +// min angle +$fa = 0.1; + +// min size $fs = 0.01; // ================= openscad prams ================= // ================= meta ================= +// version number of the current script SCRIPT_VERSION="0.0.1"; -// this really just need to be any mon font + +// font for layout FONT="Ubuntu Sans Mono:style=Regular"; + +// the test number ref number for this set of IDTs 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; + // ================= meta ================= - // ================= IDT ================= -substrate = "LINBO"; + +// the underlying substrate +substrate = "SI"; + // linbo +// the aoucstice wave speed in the substrate c = 3992.0; // si // 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; -// number of finger +// the number of fingers the IDT has n_fingers = 50; -// should be 50-70 -finger_length = 60; +// the length of the figure or aperture should be 50-70 +finger_length = 50; -// for tweaking the design +// the gap between both sides of the IDT (should be used for tweaking) gap = 0; -// for tweaking the design +// 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 = false; // ================= 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.003; + +// 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.002; + +// the shape of the bond pad (not implemented) bond_pad_shape = "square"; + // ================= bond pad ================= // ================= 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; + +// 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 = 1; + // ================= text ================= -// ================= IDT Pos ================= -idt_x_offset = 0; -idt_y_offset = 0; -// ================= IDT Pos ================= - // ================= wafers ================= +// the size of the wafer in inchs (why inch and not metric like everything else because its standard) wafer_size_inch = 4; // ================= 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() { parameter_text( str("IDT ", substrate, "#", test_number), @@ -98,7 +144,7 @@ module params() { str("leg_length : ", leg_length), str("leg_angle : ", leg_angle), str("size : ", size), - str("feat. size (mm): ", (c/freq)*1e3), + str("feat. size (mm): ", (c/freq)*scale_unit), str("version : ", SCRIPT_VERSION) ] );