From 79fa5c8237009e4543595d44908cb64ba5cebb34 Mon Sep 17 00:00:00 2001 From: sirlilpanda Date: Mon, 23 Feb 2026 20:47:58 +1300 Subject: [PATCH] custom layout for the wafers --- wafer_layouts/cross_pattern_idt.scad | 151 ++++++++++++++++++ wafer_layouts/hex_layout_idt.scad | 174 +++++++++++++++++++++ wafer_layouts/pair_idt.scad | 150 ++++++++++++++++++ wafer_layouts/quadrant_array.scad | 220 +++++++++++++++++++++++++++ wafer_layouts/single_idt.scad | 130 ++++++++++++++++ 5 files changed, 825 insertions(+) create mode 100644 wafer_layouts/cross_pattern_idt.scad create mode 100644 wafer_layouts/hex_layout_idt.scad create mode 100644 wafer_layouts/pair_idt.scad create mode 100644 wafer_layouts/quadrant_array.scad create mode 100644 wafer_layouts/single_idt.scad diff --git a/wafer_layouts/cross_pattern_idt.scad b/wafer_layouts/cross_pattern_idt.scad new file mode 100644 index 0000000..e3f684b --- /dev/null +++ b/wafer_layouts/cross_pattern_idt.scad @@ -0,0 +1,151 @@ +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 ================= +$fa = 1; +$fs = 0.01; +// ================= openscad prams ================= + +// ================= meta ================= +SCRIPT_VERSION="0.0.1"; +// this really just need to be any mon font +FONT="Ubuntu Sans Mono:style=Regular"; +test_number = 1; +// scale in m +scale_unit = 1e3; +// ================= meta ================= + + +// ================= IDT ================= +substrate = "LINBO"; +// linbo +c = 3992.0; +// si +// c = 3159.0; +freq = 50.0e6; + +// $fs = (c/freq); + +// inout distance +distance = 150; + +// number of finger +n_fingers = 50; + +// should be 50-70 +finger_length = 60; + +// for tweaking the design +gap = 0; + +// for tweaking the design +thickness = 0; + +has_id_number = false; +// ================= IDT ================= + +// ================= bond pad ================= +leg_length = 0.003; +leg_width = 0.00001875; +leg_angle = 10; +size = 0.002; +bond_pad_shape = "square"; +// ================= bond pad ================= + +// ================= text ================= +info_block_offset_x=20; +info_block_offset_y=-30; +info_block_scale=0.3; +title_text_size = 4; +prop_text_size = 2.5; +id_text_size = 1; +// ================= text ================= + +// ================= IDT Pos ================= +idt_1_x_offset = 0; +idt_1_y_offset = 0; +idt_2_x_offset = 0; +idt_2_y_offset = 0; +// ================= IDT Pos ================= + + +// ================= wafers ================= +wafer_size_inch = 4; +// ================= wafers ================= + +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(wafer_size_inch*25.4); + +translate([idt_1_x_offset, idt_1_y_offset, 0]) +rotate([0, 0, 90]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); + +translate([idt_2_x_offset, idt_2_y_offset, 0]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); \ No newline at end of file diff --git a/wafer_layouts/hex_layout_idt.scad b/wafer_layouts/hex_layout_idt.scad new file mode 100644 index 0000000..72d023f --- /dev/null +++ b/wafer_layouts/hex_layout_idt.scad @@ -0,0 +1,174 @@ +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 ================= +$fa = 1; +$fs = 0.01; +// ================= openscad prams ================= + +// ================= meta ================= +SCRIPT_VERSION="0.0.1"; +// this really just need to be any mon font +FONT="Ubuntu Sans Mono:style=Regular"; +test_number = 1; +// scale in m +scale_unit = 1e3; +// ================= meta ================= + + +// ================= IDT ================= +substrate = "LINBO"; +// linbo +c = 3992.0; +// si +// c = 3159.0; +freq = 50.0e6; + +// $fs = (c/freq); + +// inout distance +distance = 150; + +// number of finger +n_fingers = 50; + +// should be 50-70 +finger_length = 60; + +// for tweaking the design +gap = 0; + +// for tweaking the design +thickness = 0; + +has_id_number = false; +// ================= IDT ================= + +// ================= bond pad ================= + +leg_length = 0.003; +leg_width = 0.00001875; +leg_angle = 10; +size = 0.002; +bond_pad_shape = "square"; + +// ================= bond pad ================= + +// ================= text ================= + +info_block_offset_x=20; +info_block_offset_y=-30; +info_block_scale=0.3; +title_text_size = 4; +prop_text_size = 2.5; +id_text_size = 1; + +// ================= text ================= + +// ================= IDT Pos ================= +idt_1_x_offset = 0; +idt_1_y_offset = 0; +idt_2_x_offset = 0; +idt_2_y_offset = 0; +// ================= IDT Pos ================= + + +// ================= wafers ================= +wafer_size_inch = 4; +// ================= wafers ================= + +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(wafer_size_inch*25.4); + +translate([idt_1_x_offset, idt_1_y_offset, 0]) +rotate([0, 0, 60]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); + +translate([idt_2_x_offset, idt_2_y_offset, 0]) +rotate([0, 0, 120]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); + +translate([idt_2_x_offset, idt_2_y_offset, 0]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); \ No newline at end of file diff --git a/wafer_layouts/pair_idt.scad b/wafer_layouts/pair_idt.scad new file mode 100644 index 0000000..bc8cf4c --- /dev/null +++ b/wafer_layouts/pair_idt.scad @@ -0,0 +1,150 @@ +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 ================= +$fa = 1; +$fs = 0.01; +// ================= openscad prams ================= + +// ================= meta ================= +SCRIPT_VERSION="0.0.1"; +// this really just need to be any mon font +FONT="Ubuntu Sans Mono:style=Regular"; +test_number = 1; +// scale in m +scale_unit = 1e3; +// ================= meta ================= + + +// ================= IDT ================= +substrate = "LINBO"; +// linbo +c = 3992.0; +// si +// c = 3159.0; +freq = 50.0e6; + +// $fs = (c/freq); + +// inout distance +distance = 50; + +// number of finger +n_fingers = 50; + +// should be 50-70 +finger_length = 60; + +// for tweaking the design +gap = 0; + +// for tweaking the design +thickness = 0; + +has_id_number = false; +// ================= IDT ================= + +// ================= bond pad ================= +leg_length = 0.003; +leg_width = 0.00001875; +leg_angle = 10; +size = 0.002; +bond_pad_shape = "square"; +// ================= bond pad ================= + +// ================= text ================= +info_block_offset_x=20; +info_block_offset_y=-15; +info_block_scale=0.3; +title_text_size = 4; +prop_text_size = 2.5; +id_text_size = 1; +// ================= text ================= + +// ================= IDT Pos ================= +idt_1_x_offset = -5; +idt_1_y_offset = 0; +idt_2_x_offset = 5; +idt_2_y_offset = 0; +// ================= IDT Pos ================= + + +// ================= wafers ================= +wafer_size_inch = 4; +// ================= wafers ================= + +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(wafer_size_inch*25.4); + +translate([idt_1_x_offset, idt_1_y_offset, 0]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); + +translate([idt_2_x_offset, idt_2_y_offset, 0]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true +); \ No newline at end of file diff --git a/wafer_layouts/quadrant_array.scad b/wafer_layouts/quadrant_array.scad new file mode 100644 index 0000000..26302a7 --- /dev/null +++ b/wafer_layouts/quadrant_array.scad @@ -0,0 +1,220 @@ +include <../modules/bidirectional_idt.scad> +include <../modules/wafer.scad> +include <../modules/parameter_text.scad> +// include <../pramas.scad> + + +// ================= openscad prams ================= +$fa = 1; +$fs = 0.01; +// ================= openscad prams ================= + +// ================= meta ================= +SCRIPT_VERSION="0.0.1"; +// this really just need to be any mon font +FONT="Ubuntu Sans Mono:style=Regular"; +test_number = 1; +// scale in m +scale_unit = 1e3; +// ================= meta ================= + + +// ================= IDT ================= +substrate = "LINBO"; +// linbo +c = 3992.0; +// si +// c = 3159.0; +freq = 50.0e6; + +// $fs = (c/freq); + +// inout distance +distance = 50; + +// number of finger +n_fingers = 50; + +// should be 50-70 +finger_length = 60; + +// for tweaking the design +gap = 0; + +// for tweaking the design +thickness = 0; + +has_id_number = true; +// ================= IDT ================= + +// ================= bond pad ================= +leg_length = 0.003; +leg_width = 0.00001875; +leg_angle = 10; +size = 0.002; +bond_pad_shape = "square"; +// ================= bond pad ================= + +// ================= text ================= +info_block_offset_x=7; +info_block_offset_y=30; +info_block_scale=0.3; +title_text_size = 4; +prop_text_size = 2.5; +id_text_size = 1; +// ================= text ================= + +// ================= array spacings ================= +number_of_idts_per_quadrent=4; +idt_x_spacing = 10; +idt_y_spacing = 12.5; +// ================= array spacings ================= + + +// ================= wafers ================= +wafer_size_inch = 4; +// ================= wafers ================= + +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]) { +rotate([0, 0, -90]) +scale([info_block_scale, info_block_scale, info_block_scale]) { + params(); +} +} + +rotate([0, 0, 180]) +translate([info_block_offset_x, -info_block_offset_y, 0]) { +rotate([0, 0, -90]) +scale([info_block_scale, info_block_scale, info_block_scale]) { + params(); +} +} + + + +if ($preview) +wafer(wafer_size_inch*0.0254*scale_unit); +// echo(str("number_of_idts_per_quadrent : ", number_of_idts_per_quadrent)); +for (i=[0:number_of_idts_per_quadrent-1]) { + translate([idt_x_spacing/4, 0, 0]) { + translate([i * idt_x_spacing, idt_y_spacing/2, 0]) { + bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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_number = i + ); + } + translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) { + scale([1, -1, 1]) { + bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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_number = i + number_of_idts_per_quadrent, + id_flip_dir = [1, -1, -1] + ); + } + } + } + + scale([-1, 1, 1]) + translate([idt_x_spacing/4, 0, 0]) { + + translate([i * idt_x_spacing, idt_y_spacing/2, 0]) { + bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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_number = i + number_of_idts_per_quadrent*2, + id_flip_dir = [-1, 1, 1] + ); + } + translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) { + scale([1, -1, 1]) { + bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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_number = i + number_of_idts_per_quadrent*3, + id_flip_dir = [-1, -1, 1] + ); + } + } + } +} + +// bond_pad( +// leg_length = 0.0075, +// leg_width = 0.00001875, +// leg_angle = 20, +// size = 0.0075, +// bond_pad_shape = "square", +// post_scale = scale_unit +// ); \ No newline at end of file diff --git a/wafer_layouts/single_idt.scad b/wafer_layouts/single_idt.scad new file mode 100644 index 0000000..06666cc --- /dev/null +++ b/wafer_layouts/single_idt.scad @@ -0,0 +1,130 @@ +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 ================= +$fa = 1; +$fs = 0.01; +// ================= openscad prams ================= + +// ================= meta ================= +SCRIPT_VERSION="0.0.1"; +// this really just need to be any mon font +FONT="Ubuntu Sans Mono:style=Regular"; +test_number = 1; +// scale in m +scale_unit = 1e3; +// ================= meta ================= + + +// ================= IDT ================= +substrate = "LINBO"; +// linbo +c = 3992.0; +// si +// c = 3159.0; +freq = 50.0e6; + +// $fs = (c/freq); + +// inout distance +distance = 50; + +// number of finger +n_fingers = 50; + +// should be 50-70 +finger_length = 60; + +// for tweaking the design +gap = 0; + +// for tweaking the design +thickness = 0; + +has_id_number = false; +// ================= IDT ================= + +// ================= bond pad ================= +leg_length = 0.003; +leg_width = 0.00001875; +leg_angle = 10; +size = 0.002; +bond_pad_shape = "square"; +// ================= bond pad ================= + +// ================= text ================= +info_block_offset_x=20; +info_block_offset_y=-15; +info_block_scale=0.3; +title_text_size = 4; +prop_text_size = 2.5; +id_text_size = 1; +// ================= text ================= + +// ================= IDT Pos ================= +idt_x_offset = 0; +idt_y_offset = 0; +// ================= IDT Pos ================= + +// ================= wafers ================= +wafer_size_inch = 4; +// ================= wafers ================= + +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(wafer_size_inch*25.4); + +translate([0, 0, 0]) +bi_directional_idt( + c, + freq, + n_fingers, + distance, + finger_length, + gap, + thickness, + post_scale=scale_unit, + 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, + center = true, + echo_stats = true +); \ No newline at end of file