Project funded by the European Commission under grant agreement n°257829
New Electronics Concept: Wafer-Scale Epitaxial Graphene
ConceptGraphene
WP2 Characterization and integration
Deliverable 2.3 “Report on Device Integration”
Nature of deliverable: R = Report
Dissemination level: PU = Public
Lead Partner 1 Chalmers Techniska Hoegskola
Due date of deliverable: M24
ConceptGraphene D2.3 25 August 2012 2 / 10
Executive summary In this report we describe fabrication and initial characterization of a
prototype of a low ohmic Quantum Hall Array Resistance Standard –
consisting of 100 Hall bars, connected in parallel. Initial tests demonstrate
the device integrity and its readiness for the metrological evaluation by
partner 3 NPL. The developed technology allows scaling up the array
size in a routine manner and can be considered as a first step towards
metrological evaluation of similar arrays.
Contributors and their input Epitaxial graphene was grown by partner 6 –Linkoping University.
Device design has been supported by partner 3 – NPL
Device fabrication and initial characterization has been carried out by
partner 1. Report written by all contributors.
ConceptGraphene D2.3 25 August 2012 3 / 10
TABLE OF CONTENTS
Deliverable Summary ............................................................................................................................... 4!
1. The concept of quantum Hall array device ........................................................................................... 5!
2. Design .................................................................................................................................................. 5!
3. Fabrication ........................................................................................................................................... 6!
4. Preliminary electrical characterization .................................................................................................. 7!
5. Conclusions .......................................................................................................................................... 9!References ............................................................................................................................................... 9!
ConceptGraphene D2.3 25 August 2012 4 / 10
Deliverable Summary
The objective of this deliverable is to develop and test technology of integration of
multiple graphene devices on a wafer scale. We have designed and fabricated
several model devices with gradually increasing level of integration, starting from a
single Hall bar and ending with 100 graphene Hall bars connected in parallel
reported here.
Details of circuit design together with optical and SEM pictures of complete devices
are presented. Results of initial electronic characterization of fabricated devices are
also shown.
Results of these preliminary measurements are consistent with theoretical
predictions; however, complete quantum Hall measurements are yet to be made –
higher magnetic fields are necessary to drive this particular sample into the Quantum
Hall Regime. Device design allows simple modification of geometrical parameters of
the Hall bars as well as the number of Hall bars in the array. Therefore, more devices
with different geometry can be fabricated within a short time, supporting work on
metrological evaluation of the arrays.
ConceptGraphene D2.3 25 August 2012 5 / 10
1. The concept of quantum Hall array device
A single graphene Hall bar in quantum Hall regime provides a resistance standard
with universal resistance of RK/2=h/2e2≈13kΩ [1].
A resistance standard of RK/(2N) can be made by connecting N Hall bars in parallel.
This allows calibrating resistances of different value directly against the quantum
standard. Also, with lower resistance the measurement can be done at higher current,
thus reducing the measurement time. It is evident that making a quantum resistance
standard with low resistance requires integrating a large amount of Hall bars into a
single circuit; additionally, precision measurements of quantized resistance value in a
parallel array allow express analysis of the array quality.
2. Design
Individual Hall bars were designed to be 11µm long and 1µm wide, the total size
together with metallic contacts was 20x15µm2 (Figure 1). The largest array with
N=100 Hall bars had a size of 360x280µm2, therefore, it was possible to fit many
arrays on a single 7x7mm chip.
Figure 1: Drawing of a part of the array
ConceptGraphene D2.3 25 August 2012 6 / 10
The additional effect of contact and lead resistance which arises with parallel
connection of several Hall bars was reduced by implementing quadruple-parallel
connection [2], which should provide desired accuracy of <0.1ppb with
contact/interconnect resistance up to 100Ω.
Interconnections in large arrays were made with some redundancy so that accidental
breaking of few connecting wires wouldn't affect the device properties. Likewise,
redundant openings in graphene layer were made to reduce possible effect of small
defects in the etching pattern.
The design was implemented as an AutoLISP script that generates the entire CAD
drawing, taking number of Hall bars and all dimensions as parameters (see Appendix
1). This approach allows redesigning arrays of different size and geometry very
quickly.
3. Fabrication
The device was fabricated by standard electron beam lithography. Contacts and
interconnections were made with Ti/Au using thermal evaporation and lift-off process.
Interconnecting wires were made in two intersecting layers: 50nm thick bottom layer,
100nm thick SiO2 at the intersections and 150nm thick top layer, increasing thickness
was used to assure good step coverage.
Graphene layer was patterned by oxygen plasma through a PMMA mask. After
fabrication the device was spin-coated with encapsulation layer of P(MMA-MAA)/ZEP.
Encapsulation protects graphene surface from the environment and allows reduction
of the electron density by up to 1012cm-2 [3].
A number of arrays with N=4, 16, 36 and 100 (5 devices of each type) as well as 6
single Hall bars were fabricated on a single 7x7mm chip. Optical and SEM images of
different parts are shown in Figure 2.
Test structures were also fabricated on an insulating substrate (Si/SiO2) to check that
there is no leakage conductance between the intersecting leads. Resistance between
isolated contacts in these samples was above 10 GΩ at room temperature.
ConceptGraphene D2.3 25 August 2012 7 / 10
Figure 2: a) Optical image of the whole chip: columns 2 to 5 contain arrays with N=4, 16, 36 and
100 respectively, columns 1 and 6 contain single Hall bars and test structures; b) optical image
of N=100 array; c) optical image of a single Hall bar (exposed etching mask is visible) ; d) SEM
image of interconnections fabricated on a test substrate (in the actual device we have
deposited thicker top electrode to ensure the edge coverage).
4. Preliminary electrical characterization
26 structures were fabricated on the chip in total; Hall resistance between one pair of
voltage probes was measured for 22 of them both at room temperature and at 2K.
Some of the results are shown in Figure 3. Hall resistance in low magnetic field is
nearly proportional to magnetic field. Only individual Hall bar shows the onset of
Shubnikov - de Haas oscillations. They might as well be washed out in the arrays
because of the spread of parameters between the elements. Quantization, however,
is a much more robust effect, especially at the filling factor \nu=2 and we would
expect it to survive in the arrays albeit at somewhat higher magnetic fields.
a b
c d
ConceptGraphene D2.3 25 August 2012 8 / 10
The slope of Hall resistance curves for arrays of different size is inversely proportional
to the number of Hall bars (bottom right diagram in Figure 3) as expected from theory.
Carrier density in the arrays varies between 1.5·1012 and 2.5·1012 cm-2 while for single
Hall bars it is in between 0.9·1012 and 1.2·1012 cm-2. Possible reason for higher carrier
density in the arrays is that densely spaced interconnecting wires affect the thickness
of spin-coated polymer gate, rendering them less efficient.
Figure 3: Results of initial electrical characterization
ConceptGraphene D2.3 25 August 2012 9 / 10
5. Conclusions
Arrays of up to 100 Hall bars connected in parallel have been fabricated. Results of
preliminary electrical characterization suggest that the structures operate as
expected. The Quantum Hall regime could not be reached in magnetic fields that
were available for these measurements due to a high carrier density in the sample.
References 1. A. Tzalenchuk, S. Lara-Avila, A. Kalaboukhov, S. Paolillo, M. Syvajarvi, R. Yakimova, O. Kazakova,
T. J. B. M. Janssen, V. Fal'ko and S. Kubatkin, Nat. Nanotechnol. 5, 186 (2010)
2. F. Delahaye, J. Appl. Phys. 73, 7915 (1993)
3. S. Lara-Avila, K. Moth-Poulsen, R. Yakimova, T. Bjørnholm, V. Fal'ko, A. Tzalenchuk and
S. Kubatkin, Adv. Mater. 23, 878 (2011)
ConceptGraphene D2.3 25 August 2012 10 / 10
Appendix 1 Listing of AutoLISP script generating CAD drawing
Listing'of'AutoLISP'script'generating'CAD'drawing'�(setq scale 0.1) (setq w (+ 0.3 (* 10 scale))) (setq w1 (+ 0.3 (* 05 scale))) (setq l1 (* 10 scale)) (setq l2 (* 30 scale)) (setq l3 (* 10 scale)) (setq lc (* 10 scale)) (setq lc1 (* 10 scale)) (setq hc (* 10 scale)) (setq hc1 (* 10 scale)) (setq wo (* 20 scale)) (setq wo1 (* 20 scale)) (setq wc (* 07 scale)) (setq wco (* 15 scale)) (setq wc1 (* 03 scale)) (setq wco1 (* 15 scale)) (setq dc (* 00 scale)) (setq b (- (* 07 scale) 0.2)) (setq dlc (* 5 scale)) (setq dlc1 (* 5 scale)) (setq wiregap 10) (setq wirelength 150) (setq padwid 100) (setq padheig 200) (setq padgap 50) (setq padvgap 100) (setq padoff 100) (setq bo (* 10 scale)) (setq bgap (* -2 scale)) (setq bo1 (* 10 scale)) (setq bgap1 (* -2 scale)) (setq bco (- bo bgap)) (setq bco1 (- bo1 bgap1)) (setq etchlayer "arretch") (setq contactlayer "arrcont") (setq horizlayer "hconnect") (setq vertlayer "vconnect") (setq inslayer "insulation") (setq wi (* 10 scale)) (setq di (* 10 scale)) (setq dins (* 0.5 di)) (setq wietch (* 0.2 di)) (setq text_thick (* 0.067 wi)) (setq lclearance (* 20 scale)) (setq tclearance (* 20 scale)) (setq rclearance (* 10 scale)) (setq bclearance (* 10 scale)) (defun hallbar(x y) ; (x,y) is center of the Hall bar (setvar "clayer" etchlayer) (if false (command "pline" (list (- x (* w1 1.5) l2 l1 lc hc bo b) y ) (list (- x (* w1 1.5) l2 l1 lc hc bo b) (+ y (* wo 0.5) b) ) (list (- x (* w1 1.5) l2 l1 lc) (+ y (* wo 0.5) b) ) (list (- x (* w1 1.5) l2 l1) (+ y (* w 0.5) b) ) (list (- x (* w1 1.5) l2 b) (+ y (* w 0.5) b) ) (list (- x (* w1 1.5) l2 b) (+ y (* w 0.5) l3) ) (list (- x (* w1 1) l2 dc (* wo1 0.5) b) (+ y (* w 0.5) l3 lc1) )
(list (- x (* w1 1) l2 dc (* wo1 0.5) b) (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list (- x (* w1 1) l2 dc (* wo1 -0.5) (- b)) (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list (- x (* w1 1) l2 dc (* wo1 -0.5) (- b)) (+ y (* w 0.5) l3 lc1) ) (list (- x (* w1 0.5) l2 (- b)) (+ y (* w 0.5) l3) ) (list (- x (* w1 0.5) l2 (- b)) (+ y (* w 0.5) b) ) (list (- x (* w1 0.5) b) (+ y (* w 0.5) b) ) (list (- x (* w1 0.5) b) (+ y (* w 0.5) l3 b) ) (list (- x (* wo1 0.5) b) (+ y (* w 0.5) l3 lc1) ) (list (- x (* wo1 0.5) b) (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list x (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list x (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* wo1 0.5)) (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* wo1 0.5)) (+ y (* w 0.5) l3 lc1) ) (list (- x (* w1 0.5)) (+ y (* w 0.5) l3) ) (list (- x (* w1 0.5)) (+ y (* w 0.5)) ) (list (- x (* w1 0.5) l2) (+ y (* w 0.5)) ) (list (- x (* w1 0.5) l2) (+ y (* w 0.5) l3) ) (list (- x (* w1 1) l2 dc (* wo1 -0.5)) (+ y (* w 0.5) l3 lc1) ) (list (- x (* w1 1) l2 dc (* wo1 -0.5)) (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* w1 1) l2 dc (* wo1 0.5)) (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* w1 1) l2 dc (* wo1 0.5)) (+ y (* w 0.5) l3 lc1) ) (list (- x (* w1 1.5) l2) (+ y (* w 0.5) l3) ) (list (- x (* w1 1.5) l2) (+ y (* w 0.5)) ) (list (- x (* w1 1.5) l2 l1) (+ y (* w 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc) (+ y (* wo 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc hc bo) (+ y (* wo 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc hc bo) y ) "close") (command "pline" (list (- x (* w1 1.5) l2 l1 lc hc bo b) y ) (list (- x (* w1 1.5) l2 l1 lc hc bo b) (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list x (+ y (* w 0.5) l3 lc1 hc1 bo1 b) ) (list x (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* w1 1.5) l2 l1 lc hc bo) (+ y (* w 0.5) l3 lc1 hc1 bo1) ) (list (- x (* w1 1.5) l2 l1 lc hc bo) y ) "close") ) (command "mirror" (entlast) "" (list x y) (list x (+ y 1)) "N") (command "mirror" (entlast) "" (list x y) (list (+ x 1) y) "N") (command "mirror" (entlast) "" (list x y) (list x (+ y 1)) "N") (setvar "clayer" contactlayer) (command "pline" (list (- x (* w1 1.5) l2 l1 dlc) (+ y (* wc 0.5)) ) (list (- x (* w1 1.5) l2 l1 dlc) (- y (* wc 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc) (- y (* wco 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc hc bco) (- y (* wco 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc hc bco) (+ y (* wco 0.5)) ) (list (- x (* w1 1.5) l2 l1 lc) (+ y (* wco 0.5)) ) "close") (command "mirror" (entlast) "" (list x y) (list x (+ 1 y)) "N") (setvar "clayer" contactlayer) (command "pline" (list (- x w1 l2 (* wc1 0.5)) (+ y (* w 0.5) l3 dlc1) ) (list (- x w1 l2 dc (* wco1 0.5)) (+ y (* w 0.5) l3 lc1) ) (list (- x w1 l2 dc (* wco1 0.5)) (+ y (* w 0.5) l3 lc1 hc1 bco1) ) (list (- x w1 l2 dc (* wco1 -0.5)) (+ y (* w 0.5) l3 lc1 hc1 bco1) ) (list (- x w1 l2 dc (* wco1 -0.5)) (+ y (* w 0.5) l3 lc1) ) (list (- x w1 l2 (* wc1 -0.5)) (+ y (* w 0.5) l3 dlc1) ) "close") (command "mirror" (entlast) "" (list x y) (list x (+ y 1)) "N") (command "mirror" (entlast) "" (list x y) (list (+ x 1) y) "N") (command "mirror" (entlast) "" (list x y) (list x (+ y 1)) "N") (setvar "clayer" contactlayer) (command "pline" (list (- x (* wc1 0.5)) (+ y (* w 0.5) l3 dlc1)) (list (- x (* wco1 0.5)) (+ y (* w 0.5) l3 lc1)) (list (- x (* wco1 0.5)) (+ y (* w 0.5) l3 lc1 hc1 bco1))
(list (+ x (* wco1 0.5)) (+ y (* w 0.5) l3 lc1 hc1 bco1)) (list (+ x (* wco1 0.5)) (+ y (* w 0.5) l3 lc1)) (list (+ x (* wc1 0.5)) (+ y (* w 0.5) l3 dlc1)) "close") (command "mirror" (entlast) "" (list x y) (list (+ x 1) y) "N") (command "mirror" (entlast) "" (list x y) (list x (+ y 1)) "Y") (defun vprobeconnect (x y hbheig dy) (setvar "clayer" horizlayer) (command "rectangle" (list (- x w1 l2 (* 0.5 wi)) (- y (* 0.5 hbheig) (- b) (- bgap1) (- wi)) ) (list (- x w1 l2 (* -0.5 wi)) (- y (* 0.5 hbheig) bclearance (* 2 di) wi) ) ) (command "rectangle" (list (- x w1 l2 (* 0.5 wi)) (- y (* 0.5 hbheig) bclearance (* 5 di) (* 5 wi)) ) (list (- x w1 l2 (* -0.5 wi)) (- y dy (* -0.5 hbheig) b bgap1 wi) ) ) (setvar "clayer" etchlayer) (command "rectangle" (list (- x w1 l2 dc (* 0.5 wo1) b) (- y (* 0.5 hbheig)) ) (list (- x w1 l2 dc (* 0.5 wo1) b (- wietch)) (- y dy (* -0.5 hbheig)) ) ) (command "rectangle" (list (- x w1 l2 dc (* -0.5 wo1) (- b)) (- y (* 0.5 hbheig)) ) (list (- x w1 l2 dc (* -0.5 wo1) (- b) (+ wietch)) (- y dy (* -0.5 hbheig)) ) ) (setvar "clayer" vertlayer) (command "rectangle" (list (+ x w1 l2 (* -0.5 wi)) (- y (* 0.5 hbheig) bclearance (* 2 di) wi) ) (list (+ x w1 l2 (* 0.5 wi)) (- y dy (* -0.5 hbheig) b bgap1 wi) ) ) (command "rectangle" (list (- x (* 0.5 wi)) (- y (* 0.5 hbheig) (- b) (- bgap1) (- wi)) ) (list (- x (* -0.5 wi)) (- y (- dy (* 0.5 hbheig)) b bgap1 wi) ) ) (command "pline" (list (+ x w1 l2 (* -0.5 wi)) (- y (* 0.5 hbheig) (- b) (- bgap1) (- wi)) ) (list (+ x w1 l2 (* 0.5 wi)) (- y (* 0.5 hbheig) (- b) (- bgap1) (- wi)) ) (list (+ x w1 l2 (* 0.5 wi)) (- y (* 0.5 hbheig) bclearance di) ) (list (+ x w1 l2 (* 0.5 wi) di wi) (- y (* 0.5 hbheig) bclearance di) ) (list (+ x w1 l2 (* 0.5 wi) di wi) (- y (* 0.5 hbheig) bclearance (* 5 di) (* 5 wi)) ) (list (+ x w1 l2 (* 0.5 wi) di ) (- y (* 0.5 hbheig) bclearance (* 5 di) (* 5 wi)) ) (list (+ x w1 l2 (* 0.5 wi) di ) (- y (* 0.5 hbheig) bclearance di wi) ) (list (+ x w1 l2 (* -0.5 wi) ) (- y (* 0.5 hbheig) bclearance di wi) ) "close") (setvar "clayer" etchlayer) (command "rectangle" (list (- x (* 0.5 wo1) b) (- y (* 0.5 hbheig)) ) (list (- x (* 0.5 wo1) b (- wietch)) (- y dy (* -0.5 hbheig)) ) ) (command "rectangle" (list (- x (* -0.5 wo1) (- b)) (- y (* 0.5 hbheig)) ) (list (- x (* -0.5 wo1) (- b) (+ wietch)) (- y dy (* -0.5 hbheig)) ) ) (command "rectangle" (list (+ x w1 l2 dc (* -0.5 wo1) (- b)) (- y (* 0.5 hbheig)) ) (list (+ x w1 l2 dc (* -0.5 wo1) (- b) (+ wietch)) (- y dy (* -0.5 hbheig)) ) ) (command "rectangle" (list (+ x w1 l2 (* 0.5 wi) (* 0.5 di) (* -0.5 wietch)) (- y (* 0.5 hbheig) (* 1.5 di) wi (* -0.5 wietch)) ) (list (+ x w1 l2 (* 0.5 wi) (* 0.5 di) (* 0.5 wietch)) (- y dy (* -0.5 hbheig)) ) ) (command "rectangle" (list (+ x w1 l2 (* 1.5 wi) (* 1.5 di) (* -0.5 wietch)) (- y (* 0.5 hbheig)) ) (list (+ x w1 l2 (* 1.5 wi) (* 1.5 di) (* 0.5 wietch)) (- y dy (* -0.5 hbheig) (* -0.5 di) (* 0.5 wietch)) ) )
(command "rectangle" (list (+ x w1 l2 dc (* 0.5 wo1) b (- wietch)) (- y (* 0.5 hbheig)) ) (list (+ x w1 l2 (* 1.5 wi) (* 1.5 di) (* 0.5 wietch)) (- y (* 0.5 hbheig) wietch) ) ) ) (defun hlineconnect (x y hbwid dy extraline_right) (setvar "clayer" vertlayer) (command "rectangle" (list (- x (* 0.5 hbwid) (- b) (- bgap) (- wi)) (+ y dy (* 0.5 wi)) ) (list (- x (* 0.5 hbwid) lclearance di) (+ y dy (* -0.5 wi)) ) ) (setvar "clayer" etchlayer) (command "rectangle" (list (- x (* 0.5 hbwid) ) (+ y dy (* 0.5 wo) b) ) (list (- x (* 0.5 hbwid) lclearance (* 0.5 di) (* -0.5 wietch)) (+ y dy (* 0.5 wo) b (- wietch)) ) ) (command "rectangle" (list (- x (* 0.5 hbwid) ) (+ y dy (* -0.5 wo) (- b)) ) (list (- x (* 0.5 hbwid) lclearance (* 0.5 di) (* -0.5 wietch)) (+ y dy (* -0.5 wo) (- b) wietch) ) ) (setvar "clayer" horizlayer) (command "rectangle" (list (+ x (* 0.5 hbwid) (- b) (- bgap) (- wi)) (+ y dy (* 0.5 wi)) ) (list (+ x (* 0.5 hbwid) rclearance di (* (+ extraline_right 1) (+ di wi)) wi) (+ y dy (* -0.5 wi)) ) ) (setvar "clayer" etchlayer) (command "rectangle" (list (+ x (* 0.5 hbwid)) (+ y dy (* 0.5 wo) b) ) (list (+ x (* 0.5 hbwid) rclearance (* (+ extraline_right 2) (+ di wi)) (* 0.5 di) (* -0.5 wietch)) (+ y dy (* 0.5 wo) b (- wietch)) ) ) (command "rectangle" (list (+ x (* 0.5 hbwid)) (+ y dy (* -0.5 wo) (- b)) ) (list (+ x (* 0.5 hbwid) rclearance (* (+ extraline_right 2) (+ di wi)) (* 0.5 di) (* -0.5 wietch)) (+ y dy (* -0.5 wo) (- b) (+ wietch)) ) ) (setvar "clayer" horizlayer) (command "rectangle" (list (- x (* 0.5 hbwid) (- b) (- bgap) (- wi)) (+ y (* 0.5 wi)) ) (list (- x (* 0.5 hbwid) lclearance di wi di wi) (- y (* 0.5 wi)) ) ) (setvar "clayer" etchlayer) (command "rectangle" (list (- x (* 0.5 hbwid)) (+ y (* 0.5 wo) b) ) (list (- x (* 0.5 hbwid) lclearance di wi di wi (* 0.5 di) (* 0.5 wietch)) (+ y (* 0.5 wo) b (- wietch)) ) ) (command "rectangle" (list (- x (* 0.5 hbwid)) (+ y (* -0.5 wi) (* -0.5 di) (* -0.5 wietch)) ) (list (- x (* 0.5 hbwid) lclearance di wi di wi (* 0.5 di) (* 0.5 wietch)) (+ y (* -0.5 wi) (* -0.5 di) (* 0.5 wietch)) ) ) (setvar "clayer" horizlayer) (command "pline" (list (+ x (* 0.5 hbwid) (- b) (- bgap) (- wi)) (+ y (* 0.5 wi)) ) (list (+ x (* 0.5 hbwid) rclearance di wi) (+ y (* 0.5 wi)) ) (list (+ x (* 0.5 hbwid) rclearance di wi) (- y (* 0.5 wi) di) ) (list (+ x (* 0.5 hbwid) rclearance di (* (+ extraline_right 2) (+ di wi)) wi) (- y (* 0.5 wi) di) ) (list (+ x (* 0.5 hbwid) rclearance di (* (+ extraline_right 2) (+ di wi)) wi) (- y (* 0.5 wi) di wi) ) (list (+ x (* 0.5 hbwid) rclearance di ) (- y (* 0.5 wi) di wi) ) (list (+ x (* 0.5 hbwid) rclearance di ) (- y (* 0.5 wi)) ) (list (+ x (* 0.5 hbwid) (- b) (- bgap) (- wi)) (- y (* 0.5 wi)) ) "close") (setvar "clayer" etchlayer) (command "rectangle"
(list (+ x (* 0.5 hbwid)) (+ y (* 0.5 wo) b) ) (list (+ x (* 0.5 hbwid) rclearance di wi (* 0.5 di) (* 0.5 wietch)) (+ y (* 0.5 wo) b (- wietch)) ) ) (command "rectangle" (list (+ x (* 0.5 hbwid)) (- y (* 0.5 wo) b (- wietch)) ) (list (+ x (* 0.5 hbwid) wietch) (- y (* 1.5 wi) (* 1.5 di) (* 0.5 wietch)) ) ) (command "rectangle" (list (+ x (* 0.5 hbwid) wietch) (- y (* 1.5 wi) (* 1.5 di) (* -0.5 wietch)) ) (list (+ x (* 0.5 hbwid) rclearance di (* (+ extraline_right 2) (+ di wi)) wi (* 0.5 di) (* 0.5 wietch)) (- y (* 1.5 wi) (* 1.5 di) (* 0.5 wietch)) ) ) (command "rectangle" (list (+ x (* 0.5 hbwid) rclearance di wi (* 0.5 di) (* -0.5 wietch)) (+ y (* -0.5 wi) (* -0.5 di) (* 0.5 wietch)) ) (list (+ x (* 0.5 hbwid) rclearance di (* (+ extraline_right 2) (+ di wi)) wi (* 0.5 di) (* 0.5 wietch)) (+ y (* -0.5 wi) (* -0.5 di) (* -0.5 wietch)) ) ) ) (defun insulationmesh (x y nx ny gaps / xind yind) (setvar "clayer" inslayer) (setq xind 0) (repeat nx (setq xind (+ xind 1)) (setq yind 0) (repeat ny (setq yind (+ yind 1)) (if (not (member (list xind yind) gaps)) (command "rectangle" (list (+ x (* (- xind 1) (+ di wi) ) (- dins)) (- y (* (- yind 1) (+ di wi) ) (- dins)) ) (list (+ x (* (- xind 1) (+ di wi) ) wi dins ) (- y (* (- yind 1) (+ di wi) ) wi dins ) ) ) ) ) ) ) (defun array (x0 y0 nx ny / x y hbwid hbheig dx dy xind yind indices lind contlabels) (setq x x0) (setq hbwid (* 2 (+ (* 1.5 w1) l2 l1 lc hc bo b)) ) (setq hbheig (* 2 (+ (* 0.5 w) l3 lc1 hc1 bo1 b)) ) (setq dx (+ hbwid (* 7 di) (* 6 wi) lclearance rclearance) ) (setq dy (+ hbheig (* 6 di) (* 5 wi) tclearance bclearance) ) (setq xind 0) (repeat nx (setq y y0) (setq xind (+ xind 1)) (setq yind 0) (repeat ny (setq yind (+ yind 1)) (hallbar x y) (setvar "clayer" contactlayer) (if (= (rem yind 2) 0) (setq contlabels (list 1 2 3 4 5 6 7 8)) ;else (setq contlabels (list 5 6 7 8 1 2 3 4)) ) (if (> yind 1) (vprobeconnect x y hbheig dy) ) (if (= (rem yind 2) 1) (if (< xind nx) (hlineconnect x y hbwid dy 3) ;else (hlineconnect x y hbwid dy 0) ) )
(print (list x y xind yind)) (insulation x y hbwid hbheig (= (rem xind 2) 0) (= (rem yind 2) 0) (= xind 1) (= xind nx) (= yind 1) (= yind ny)) (setq y (+ y dy)) ) (vprobeconnectborder x y0 hbheig -1) (vprobeconnectborder x (- y dy) hbheig 1) (setq x (+ x dx)) ) (setq x (- x0 dx)) (setq xind -1) (repeat (+ nx 1) (setq xind (+ xind 1)) (if (> xind 0) (setq xx (+ x (* 0.5 hbwid) rclearance (* 2 di) wi) ) ;else (setq xx (+ x (* 0.5 hbwid) rclearance (* 2 di) wi (* 3 (+ wi di))) ) ) (if (and (> xind 0) (< xind nx)) (progn (if (= (rem xind 2) 1) (setq indices (list 8 7 6 5 1)) ;else (setq indices (list 4 3 2 5 1)) ) (setq nline 5) ) (progn;else (setq indices (list 5 1)) (setq nline 2) )) (setq lind 0) (repeat nline (setvar "clayer" vertlayer) (command "rectangle" (list xx (- y0 (* 0.5 hbheig) bclearance (* 3 di) (* 3 wi)) ) (list (+ xx wi) (+ y0 (* (- ny 1) dy) (* 0.5 hbheig) tclearance (* 3 di) (* 3 wi)) ) ) (boldtext (list xx (+ y0 (* (- ny 1) dy) (* 0.5 hbheig) tclearance (* 3 di) (* 3 wi) dins di) ) wi text_thick (nth lind indices) ) (boldtext (list xx (- y0 (* 0.5 hbheig) bclearance (* 3 di) (* 3 wi) dins di wi) ) wi text_thick (nth lind indices) ) (setvar "clayer" etchlayer) (if (= 0 lind) (command "rectangle" (list (- xx (* 0.5 di) (* 0.5 wietch)) (- y0 (* 0.5 hbheig) bclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch)) ) (list (- xx (* 0.5 di) (* -0.5 wietch)) (+ y0 (* (- ny 1) dy) (* 0.5 hbheig) tclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch)) ) ) ) (command "rectangle" (list (+ xx wi (* 0.5 di) (* 0.5 wietch)) (- y0 (* 0.5 hbheig) bclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch)) ) (list (+ xx wi (* 0.5 di) (* -0.5 wietch)) (+ y0 (* (- ny 1) dy) (* 0.5 hbheig) tclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch)) ) ) (setq xx (+ xx wi di) ) (setq lind (+ lind 1)) ) (setq x (+ x dx)) ) (setq yind -1) (setq y (- y0 dy)) (repeat (+ ny 1)
(setq yind (+ yind 1)) (if (> yind 0) (setq yy (+ y (* 0.5 hbheig) tclearance di) ) ;else (setq yy (+ y (* 0.5 hbheig) tclearance di (* 2 (+ wi di))) ) ) (if (and (> yind 0) (< yind ny)) (progn (if (= (rem yind 2) 1) (setq indices (list 6 1 7 8)) ;else (setq indices (list 2 5 3 4)) ) (setq nline 4) ) (progn;else (setq indices (list 4 3 2)) (setq nline 3) )) (setq lind 0) (repeat nline (setvar "clayer" horizlayer) (command "rectangle" (list (- x0 (* 0.5 hbwid) lclearance (* 2 di) (* 2 wi)) yy) (list (+ x0 (* (- nx 1) dx) (* 0.5 hbwid) rclearance (* 3 di) (* 3 wi) ) (+ yy wi)) ) (boldtext (list (- x0 (* 0.5 hbwid) lclearance (* 2 di) (* 2 wi) dins di wi) yy) wi text_thick (nth lind indices) ) (boldtext (list (+ x0 (* (- nx 1) dx) (* 0.5 hbwid) rclearance (* 3 di) (* 3 wi) dins di) yy) wi text_thick (nth lind indices) ) (setvar "clayer" etchlayer) (if (= 0 lind) (command "rectangle" (list (- x0 (* 0.5 hbwid) lclearance (* 2 di) (* 2 wi) (* 0.5 di) (* 0.5 wietch)) (- yy (* 0.5 di) (* 0.5 wietch)) ) (list (+ x0 (* (- nx 1) dx) (* 0.5 hbwid) rclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch) ) (- yy (* 0.5 di) (* -0.5 wietch))) ) ) (command "rectangle" (list (- x0 (* 0.5 hbwid) lclearance (* 2 di) (* 2 wi) (* 0.5 di) (* 0.5 wietch)) (+ yy wi (* 0.5 di) (* 0.5 wietch)) ) (list (+ x0 (* (- nx 1) dx) (* 0.5 hbwid) rclearance (* 3 di) (* 3 wi) (* 0.5 di) (* 0.5 wietch) ) (+ yy wi (* 0.5 di) (* -0.5 wietch))) ) (setq yy (+ yy wi di) ) (setq lind (+ lind 1)) ) (setq y (+ y dy)) ) ) (array -300 200 10 10)