diff --git a/.gitignore b/.gitignore index ba3b54a..1ece069 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ thhor_crs.xy *.gbr *.cnc *.zip +gerber/*.pdf +gerber/*.odt +gerber/thhor_crs-*.png *.o *.d *.eeprom @@ -25,6 +28,6 @@ sensor/*.pdf vcd *.log sallen-key-pulse.hex + *~.pcb *.backup -*.xy diff --git a/gerber/.gitignore b/gerber/.gitignore deleted file mode 100644 index 3e46260..0000000 --- a/gerber/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.xy -*.gbr -*.cnc -*.zip -*.pdf -*.odt -*-bot.png -*-top.png -*.bom diff --git a/gerber/thhor_crs/Makefile b/gerber/Makefile similarity index 53% rename from gerber/thhor_crs/Makefile rename to gerber/Makefile index bcf82e9..97c46e3 100644 --- a/gerber/thhor_crs/Makefile +++ b/gerber/Makefile @@ -1,3 +1,3 @@ PROJ = thhor_crs VERSION = v01 -include ../gerber.makefile +include gerber.makefile diff --git a/gerber/thhor_crs/README.md b/gerber/README.md similarity index 100% rename from gerber/thhor_crs/README.md rename to gerber/README.md diff --git a/gerber/gerber.makefile b/gerber/gerber.makefile index 7175588..a44907f 100644 --- a/gerber/gerber.makefile +++ b/gerber/gerber.makefile @@ -2,10 +2,8 @@ # PROJ = … # VERSION = v01 -HERE = .. -PCBDIR = $(HERE)/.. GERBERS = $(PROJ).plated-drill.cnc -GVP2MAKE = $(HERE)/gvp2make.py +GVP2MAKE = ./gvp2make.py GV_OPT = -D600 default: zip bom png @@ -23,21 +21,18 @@ GERBER_AWK = '/- +[-a-z_]+\.[-a-z]+\.[-a-z]+ +[a-z]/{print $$2}' rm -fv $@ zip $@ $< $$(awk $(GERBER_AWK) $<) -%.plated-drill.cnc: $(PCBDIR)/%.pcb +%.plated-drill.cnc: ../%.pcb pcb -x gerber --gerberfile $* --name-style single $< bom: $(PROJ)_bom.pdf -%.bom: $(PCBDIR)/%.pcb +%.bom: ../%.pcb pcb -x bom --bomfile $@ $< %_bom.txt: %.bom bom.py -h $< > $@ -%_bom.pdf: %.bom $(HERE)/bom.py - $(word 2,$^) -h $< | utf82pdf > $@ +%_bom.pdf: %.bom bom.py + bom.py -h $< | utf82pdf > $@ .PRECIOUS: %.plated-drill.cnc %.png - -clean: - rm -f *.png *.pdf *.bom *.gbr *.cnc diff --git a/gerber/thhor_crs/thhor_crs-bot.gvp b/gerber/thhor_crs-bot.gvp similarity index 100% rename from gerber/thhor_crs/thhor_crs-bot.gvp rename to gerber/thhor_crs-bot.gvp diff --git a/gerber/thhor_crs/thhor_crs-top.gvp b/gerber/thhor_crs-top.gvp similarity index 100% rename from gerber/thhor_crs/thhor_crs-top.gvp rename to gerber/thhor_crs-top.gvp diff --git a/gerber/thhor_crs/thhor_crs.dxf b/gerber/thhor_crs.dxf similarity index 100% rename from gerber/thhor_crs/thhor_crs.dxf rename to gerber/thhor_crs.dxf diff --git a/gerber/thhor_crs/thhor_crs.gvp b/gerber/thhor_crs.gvp similarity index 100% rename from gerber/thhor_crs/thhor_crs.gvp rename to gerber/thhor_crs.gvp diff --git a/gerber/thhor_crs.png b/gerber/thhor_crs.png new file mode 100644 index 0000000..b739005 Binary files /dev/null and b/gerber/thhor_crs.png differ diff --git a/gerber/thhor_crs/thhor_crs.png b/gerber/thhor_crs/thhor_crs.png deleted file mode 100644 index 55e4b02..0000000 Binary files a/gerber/thhor_crs/thhor_crs.png and /dev/null differ diff --git a/gerber/thhor_csa/Makefile b/gerber/thhor_csa/Makefile deleted file mode 100644 index 4370d7a..0000000 --- a/gerber/thhor_csa/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -PROJ = thhor_csa -VERSION = v01 -include ../gerber.makefile diff --git a/gerber/thhor_csa/README.md b/gerber/thhor_csa/README.md deleted file mode 100644 index 6ecbb29..0000000 --- a/gerber/thhor_csa/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Project thhor_csa version v01 - -Six layer rigid PCB, 6mil/8mil rules, 0.3mm vias, 8mil annular - -- Size: 60x80 mm² -- Thickness: 1.6 mm. -- With soldermask, no silk. -- Surface finish HAL. - -## Copper layer order: - -- thhor_csa.top.gbr top side copper -- thhor_csa.ground.gbr chassis/analog ground -- thhor_csa.vcc.gbr power Vcc plane -- thhor_csa.vss.gbr power Vss plane -- thhor_csa.vfet.gbr power Vfet plane -- thhor_csa.bottom.gbr back side copper - -## Mechanical layers - -- thhor_csa.plated-drill.cnc drill file -- thhor_csa.outline.gbr board outline -- thhor_csa.topmask.gbr soldermask top -- thhor_csa.bottommask.gbr soldermask bottom - -## Pretty picture - -![gerbv export](thhor_csa.png) diff --git a/gerber/thhor_csa/thhor_csa-bot.gvp b/gerber/thhor_csa/thhor_csa-bot.gvp deleted file mode 100644 index 82203ae..0000000 --- a/gerber/thhor_csa/thhor_csa-bot.gvp +++ /dev/null @@ -1,82 +0,0 @@ -(gerbv-file-version! "2.0A") -(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr") - (cons 'visible #f) - (cons 'color #(27113 27113 27113)) - (cons 'alpha #(12079)) -) -(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr") - (cons 'visible #f) - (cons 'color #(65535 50491 34053)) - (cons 'alpha #(12079)) -) -(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr") - (cons 'visible #f) - (cons 'color #(65535 34990 63468)) - (cons 'alpha #(15163)) -) -(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr") - (cons 'visible #f) - (cons 'color #(0 24400 24400)) - (cons 'alpha #(15163)) -) -(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr") - (cons 'visible #t) - (cons 'color #(60294 24022 3320)) -) -(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr") - (cons 'visible #t) - (cons 'color #(63479 30069 17733)) -) -(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr") - (cons 'visible #f) - (cons 'color #(29344 65535 28765)) -) -(define-layer! 7 (cons 'filename "thhor_csa.top.gbr") - (cons 'visible #f) - (cons 'color #(63383 4945 17070)) - (cons 'alpha #(27242)) -) -(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr") - (cons 'visible #f) - (cons 'color #(65535 2469 0)) - (cons 'alpha #(23644)) -) -(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr") - (cons 'inverted #t) - (cons 'visible #f) - (cons 'color #(25200 65535 30627)) -) -(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc") - (cons 'visible #t) - (cons 'color #(61307 61307 61307)) - (cons 'alpha #(65535)) - (cons 'attribs (list - (list 'autodetect 'Boolean 1) - (list 'zero_suppression 'Enum 0) - (list 'units 'Enum 0) - (list 'digits 'Integer 4) - )) -) -(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr") - (cons 'visible #t) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr") - (cons 'visible #t) - (cons 'color #(65535 47429 0)) - (cons 'alpha #(65535)) -) -(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) -) -(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa") - (cons 'color #(65535 65535 65535)) -) -(set-render-type! 3) diff --git a/gerber/thhor_csa/thhor_csa-top.gvp b/gerber/thhor_csa/thhor_csa-top.gvp deleted file mode 100644 index c0bc56f..0000000 --- a/gerber/thhor_csa/thhor_csa-top.gvp +++ /dev/null @@ -1,82 +0,0 @@ -(gerbv-file-version! "2.0A") -(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr") - (cons 'visible #f) - (cons 'color #(27113 27113 27113)) - (cons 'alpha #(12079)) -) -(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr") - (cons 'visible #f) - (cons 'color #(65535 50491 34053)) - (cons 'alpha #(12079)) -) -(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr") - (cons 'visible #f) - (cons 'color #(65535 34990 63468)) - (cons 'alpha #(15163)) -) -(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr") - (cons 'visible #f) - (cons 'color #(0 24400 24400)) - (cons 'alpha #(15163)) -) -(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr") - (cons 'visible #f) - (cons 'color #(60294 24022 3320)) -) -(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr") - (cons 'visible #f) - (cons 'color #(63479 30069 17733)) -) -(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr") - (cons 'visible #f) - (cons 'color #(29344 65535 28765)) -) -(define-layer! 7 (cons 'filename "thhor_csa.top.gbr") - (cons 'visible #t) - (cons 'color #(63383 4945 17070)) - (cons 'alpha #(27242)) -) -(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr") - (cons 'visible #t) - (cons 'color #(65535 2469 0)) - (cons 'alpha #(23644)) -) -(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr") - (cons 'inverted #t) - (cons 'visible #f) - (cons 'color #(25200 65535 30627)) -) -(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc") - (cons 'visible #t) - (cons 'color #(61307 61307 61307)) - (cons 'alpha #(65535)) - (cons 'attribs (list - (list 'autodetect 'Boolean 1) - (list 'zero_suppression 'Enum 0) - (list 'units 'Enum 0) - (list 'digits 'Integer 4) - )) -) -(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr") - (cons 'visible #t) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr") - (cons 'visible #t) - (cons 'color #(65535 47429 0)) - (cons 'alpha #(65535)) -) -(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) -) -(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa") - (cons 'color #(65535 65535 65535)) -) -(set-render-type! 3) diff --git a/gerber/thhor_csa/thhor_csa.gvp b/gerber/thhor_csa/thhor_csa.gvp deleted file mode 100644 index e3514eb..0000000 --- a/gerber/thhor_csa/thhor_csa.gvp +++ /dev/null @@ -1,82 +0,0 @@ -(gerbv-file-version! "2.0A") -(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr") - (cons 'visible #t) - (cons 'color #(27113 27113 27113)) - (cons 'alpha #(12079)) -) -(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr") - (cons 'visible #t) - (cons 'color #(65535 50491 34053)) - (cons 'alpha #(12079)) -) -(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr") - (cons 'visible #t) - (cons 'color #(65535 34990 63468)) - (cons 'alpha #(15163)) -) -(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr") - (cons 'visible #t) - (cons 'color #(0 24400 24400)) - (cons 'alpha #(15163)) -) -(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr") - (cons 'visible #t) - (cons 'color #(60294 24022 3320)) -) -(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr") - (cons 'visible #f) - (cons 'color #(63479 30069 17733)) -) -(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr") - (cons 'visible #f) - (cons 'color #(29344 65535 28765)) -) -(define-layer! 7 (cons 'filename "thhor_csa.top.gbr") - (cons 'visible #t) - (cons 'color #(63383 4945 17070)) - (cons 'alpha #(27242)) -) -(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr") - (cons 'visible #f) - (cons 'color #(65535 2469 0)) - (cons 'alpha #(23644)) -) -(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr") - (cons 'inverted #t) - (cons 'visible #f) - (cons 'color #(25200 65535 30627)) -) -(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc") - (cons 'visible #t) - (cons 'color #(61307 61307 61307)) - (cons 'alpha #(65535)) - (cons 'attribs (list - (list 'autodetect 'Boolean 1) - (list 'zero_suppression 'Enum 0) - (list 'units 'Enum 0) - (list 'digits 'Integer 4) - )) -) -(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) - (cons 'alpha #(65535)) -) -(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr") - (cons 'visible #t) - (cons 'color #(65535 47429 0)) - (cons 'alpha #(65535)) -) -(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr") - (cons 'visible #f) - (cons 'color #(0 0 0)) -) -(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa") - (cons 'color #(65535 65535 65535)) -) -(set-render-type! 3) diff --git a/gerber/thhor_csa/thhor_csa.png b/gerber/thhor_csa/thhor_csa.png deleted file mode 100644 index d2d1169..0000000 Binary files a/gerber/thhor_csa/thhor_csa.png and /dev/null differ diff --git a/src/config.c b/src/config.c index 20858e1..c3556ac 100644 --- a/src/config.c +++ b/src/config.c @@ -21,17 +21,15 @@ const struct config config = { [0] = 0xd1 | FM_READ, // Buffer 1 Read (Low-Frequency) [1] = 0xd3 | FM_READ, // Buffer 2 Read (Low-Frequency) }, - .page_start = 0x0400, + .page_start = 0x0800, .page_end = 0x1000, #ifdef HAVE_nFETs .pwm_min = 0x0000, .pwm_max = 0xffff, #endif #ifdef HAVE_FPGA - .fpga_config_page = 0x100, - .fpga_config_count = 3955, - .dorn_config_page = 8, - .dorn_config_count = 1, + .fpga_config_page = 8, + .fpga_config_count = 504, #endif }; diff --git a/src/config.h b/src/config.h index a452524..c51aab5 100644 --- a/src/config.h +++ b/src/config.h @@ -26,8 +26,6 @@ struct config { #ifdef HAVE_FPGA uint16_t fpga_config_page; uint16_t fpga_config_count; - uint16_t dorn_config_page; - uint16_t dorn_config_count; #endif }; diff --git a/src/dose.py b/src/dose.py index 2605d58..2ace36c 100755 --- a/src/dose.py +++ b/src/dose.py @@ -645,7 +645,7 @@ class dose_cmd(uart.uart): status |= 0x10 # PS_528 dest &=~ self.PIPE["FLASH"] if dest & self.PIPE["FPGA"] and not n: - n = 512//64 * npages + n = 512/64 * npages if dest & self.PIPE["FLASH"]: flash = flags2int(self.FSS, ["Write", "Ready", "P528"]) status |= 0x10 # PS_528 @@ -661,8 +661,6 @@ class dose_cmd(uart.uart): source, dest, status, valid, 0, astatus, n, psize//2, 0, 0, page, npages-1, flash) - if self._verbose >= 2: - print(f"PIPE {n=} {b2hex(d)}", file=sys.stderr) return self.cmd(c, d) def erase_flash(self, page, npages=1): @@ -744,7 +742,7 @@ class dose_cmd(uart.uart): f.close() return result - def write_pipe(self, data=[], timeout=2, n=None, parity=None, bfill=b'\0', pfill=b'\xff'): + def write_pipe(self, data=[], timeout=2, n=None, parity="pipe", bfill=b'\0', pfill=b'\xff'): if isinstance(data, str): f = open(data, "rb") data = [] @@ -806,7 +804,7 @@ class dose_cmd(uart.uart): s = 1 if nn: break - if parity and bb != b: + if bb != b: raise ValueError(f"block number mismatch {b=} != {bb=}") if b >= len(page): break @@ -842,11 +840,6 @@ class dose_cmd(uart.uart): self.pipe("CMD", "CONFIG", n=n*64) self.write_pipe(filename, n=n) - def fpga_config_f(self, filename="../fpga/quartus/thhor_crs.rbf"): - self.fpga_reset() - n = os.stat(filename).st_size - self.pipe("FLASH", "CONFIG", page=0x100, n=n) - def fix_page(self, page): if self.load_galois(): page = bch.fix_page(page) diff --git a/src/fpga.c b/src/fpga.c index 7fce601..9204ce5 100644 --- a/src/fpga.c +++ b/src/fpga.c @@ -168,7 +168,7 @@ uint8_t fpga_pipe_ready() const struct pipe pipe_config_fpga_config = { .source = pipe_flash, .dest = pipe_fpga, - .status = PS_BCH | PS_528 | PS_OUT, + .status = PS_BCH | PS_528, .fpga = { .status = AS_CONFIG, }, @@ -179,5 +179,5 @@ void fpga_config(uint16_t page, uint16_t count) fpga_reset(); pipe = pipe_config_fpga_config; pipe.fpga.count = count; - flash_start_stream(page, count >> 3, FS_Read|FS_528|FS_Ready); + flash_start_stream(page, count >> 3, FS_Read|FS_528); } diff --git a/src/pipe.c b/src/pipe.c index e47b1e1..a373092 100644 --- a/src/pipe.c +++ b/src/pipe.c @@ -22,8 +22,6 @@ uint8_t pipe_busy() return 0; } -uint8_t pipe_sleep; - uint8_t pipe_poll() { /************************************************************ @@ -49,7 +47,6 @@ uint8_t pipe_poll() // the data goes nowhere. uint8_t r = pipe.status; uint8_t dest = pipe.dest; - pipe_sleep = 1; if (pipe_busy() || !dest) return r; @@ -68,11 +65,10 @@ uint8_t pipe_poll() if (dest & pipe_cmd && valid & 0x1f) // cmd did not drain the buffer, yet goto done; - if (dest & pipe_flash && ~fs.status & FS_Ready) { + if (dest & pipe_flash && ~fs.status & FS_Ready) // flash did not finish yet, successfully - pipe_sleep = ~fs.status & FS_Busy; goto done; - } + // Return if next ADC reading is not yet due. // Come back here, until is is. @@ -83,7 +79,6 @@ uint8_t pipe_poll() // We are done with this buffer r &=~ PS_OUT; - pipe_sleep = 0; // Continue the flash stream. @@ -205,7 +200,6 @@ adc_done: goto done; // The buffer is full, send it. - pipe_sleep = 0; r |= PS_OUT; #ifdef HAVE_FPGA diff --git a/src/pipe.h b/src/pipe.h index dcafc5f..11519cf 100644 --- a/src/pipe.h +++ b/src/pipe.h @@ -35,8 +35,6 @@ struct pipe { #endif } pipe; -extern uint8_t pipe_sleep; - struct pipe_config { struct pipe pipe; uint16_t page; diff --git a/src/thhor.c b/src/thhor.c index 77c967a..a666889 100644 --- a/src/thhor.c +++ b/src/thhor.c @@ -48,7 +48,7 @@ int main() // The sleep command will execute even when an irq becomes // pending after cli(). It will wake us immediately. cli(); - if (!command_pending() && pipe_sleep) { + if (!command_pending() || adc_busy() || spi_busy_p()) { sei(); sleep_cpu(); } @@ -56,7 +56,5 @@ int main() command(); if (~magic.flags & hold_pipe) pipe_poll(); - else - pipe_sleep = 1; } } diff --git a/thhor_csa-topbot.png b/thhor_csa-topbot.png index 6396ca1..9d1145f 100644 Binary files a/thhor_csa-topbot.png and b/thhor_csa-topbot.png differ diff --git a/thhor_csa.pcb b/thhor_csa.pcb index bf5026d..b39fc89 100644 --- a/thhor_csa.pcb +++ b/thhor_csa.pcb @@ -9,8 +9,8 @@ Grid[0.5000mm 0.0000 0.0000 1] PolyArea[200000000.000000] Thermal[0.500000] DRC[0.1999mm 0.0100mm 0.1500mm 0.0025mm 0.3000mm 0.2000mm] -Flags("nameonpcb,alldirection,clearnew,thindrawpoly") -Groups("1,c:2:5:4:3:6,s:7:8") +Flags("nameonpcb,alldirection,clearnew,thindrawpoly,locknames") +Groups("1,c:2:3:4:5:6,s:7:8") Styles["Signal,0.2000mm,0.7000mm,0.3000mm,0.2000mm,0.5000mm:Power,0.6000mm,1.0000mm,0.5000mm,0.2000mm,0.8000mm:Fat,1.0000mm,4.0000mm,2.2000mm,0.2000mm,4.1000mm:Skinny,0.1524mm,0.6101mm,0.3000mm,0.1524mm"] Symbol[' ' 0.4572mm] ( @@ -7581,7 +7581,6 @@ Layer(1 "top" "copper") Text[21.5000mm 43.0000mm 0 261 "THHOR CSA V01M" "clearline"] Text[20.9000mm 39.1000mm 1 168 "2026-05-04 SiB" "clearline"] Text[23.3000mm 39.1000mm 1 152 "FORGE.BEXUS.ORG" "clearline"] - Text[55.5000mm 27.5000mm 1 300 "1" "clearline"] Polygon("via") ( [22.2000mm 15.2000mm] [22.1933mm 15.2368mm] [22.1862mm 15.2714mm] [22.1246mm 15.6076mm] [22.1035mm 15.6311mm] @@ -7631,25 +7630,17 @@ Layer(1 "top" "copper") ) Layer(2 "ground" "copper") ( - Text[55.5000mm 25.5000mm 1 300 "2" "clearline"] Polygon("clearpoly") ( - [65.0000mm 83.5000mm] [63.5000mm 85.0000mm] [7.5000mm 85.0000mm] [6.0000mm 83.5000mm] [6.0000mm 7.5000mm] - [7.5000mm 6.0000mm] [63.5000mm 6.0000mm] [65.0000mm 7.5000mm] - Hole ( - [55.5000mm 12.0000mm] [55.5000mm 28.5000mm] [60.0000mm 28.5000mm] [60.0000mm 12.0000mm] - ) + [65.0000mm 83.5000mm] [65.0000mm 7.5000mm] [63.5000mm 6.0000mm] [7.5000mm 6.0000mm] [6.0000mm 7.5000mm] + [6.0000mm 83.5000mm] [7.5000mm 85.0000mm] [63.5000mm 85.0000mm] ) ) Layer(3 "vfet" "copper") ( - Text[55.5000mm 17.0000mm 1 300 "5" "clearline"] Polygon("clearpoly") ( [6.0000mm 6.0000mm] [65.0000mm 6.0000mm] [65.0000mm 85.0000mm] [6.0000mm 85.0000mm] - Hole ( - [55.5000mm 12.0000mm] [55.5000mm 28.5000mm] [60.0000mm 28.5000mm] [60.0000mm 12.0000mm] - ) ) ) Layer(4 "vss" "copper") @@ -7690,7 +7681,6 @@ Layer(4 "vss" "copper") Line[58.3000mm 71.6000mm 58.8000mm 71.6000mm 0.2000mm 0.4000mm "clearline"] Line[58.8000mm 71.6000mm 61.1000mm 69.3000mm 0.2000mm 0.4000mm "clearline"] Line[61.1000mm 69.3000mm 61.1000mm 57.2000mm 0.2000mm 0.4000mm "clearline"] - Text[55.5000mm 20.0000mm 1 300 "4" "clearline"] Polygon("clearpoly") ( [65.0000mm 39.0000mm] [40.0000mm 39.0000mm] [34.5000mm 33.5000mm] [34.5000mm 6.0000mm] [6.0000mm 6.0000mm] @@ -7709,7 +7699,6 @@ Layer(5 "vcc" "copper") Line[16.1000mm 66.3000mm 16.3000mm 70.4000mm 0.2000mm 0.4000mm "clearline"] Line[10.2000mm 57.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"] Line[11.7000mm 66.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"] - Text[55.5000mm 22.5000mm 1 300 "3" "clearline"] Polygon("clearpoly") ( [34.5000mm 6.0000mm] [6.0000mm 6.0000mm] [6.0000mm 56.5000mm] [65.0000mm 56.5000mm] [65.0000mm 39.0000mm] @@ -8351,7 +8340,6 @@ Layer(6 "bottom" "copper") Line[54.8000mm 72.1000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"] Line[55.6000mm 70.4000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"] Line[54.1000mm 70.4000mm 53.1000mm 72.1000mm 0.2000mm 0.4000mm "clearline"] - Text[55.5000mm 13.0000mm 1 300 "6" "clearline,onsolder"] ) Layer(7 "outline" "outline") (