From fcae23785ee362640cb26febdda31bada054f518 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Tue, 4 Oct 2022 17:15:49 -0500 Subject: [PATCH] Throw everything up I think that previously, I had not actually commited any of this to git. This adds all of the new effinix stuff that I had been working on for months. The gist of all of this is that the intel fpga is expensive and does not exist, whereas the effinix ones are not as expensive and more existant. This redoes the project to use the dev board, as well as a custom board that I may or may not make. --- hw/efinix_fpga/HexDriver.sv | 27 + hw/efinix_fpga/SevenSeg.sv | 42 + hw/efinix_fpga/addr_decode.sv | 24 + hw/efinix_fpga/board_io.sv | 27 + hw/efinix_fpga/crc7.sv | 106 + hw/efinix_fpga/ip/sdram/sdram.v | 4236 +++++++++++++++++ hw/efinix_fpga/ip/sdram/sdram_define.vh | 80 + hw/efinix_fpga/ip/sdram/sdram_tmpl.v | 83 + hw/efinix_fpga/ip/sdram/sdram_tmpl.vhd | 132 + hw/efinix_fpga/ip/sdram/settings.json | 44 + hw/efinix_fpga/memory_mapper.sv | 58 + hw/efinix_fpga/outflow/super6502.err.log | 159 + hw/efinix_fpga/outflow/super6502.info.log | 397 ++ hw/efinix_fpga/outflow/super6502.map.out | 113 + hw/efinix_fpga/outflow/super6502.warn.log | 93 + hw/efinix_fpga/sd_controller.sv | 235 + hw/efinix_fpga/sdram_adapter.sv | 68 + hw/efinix_fpga/super6502.peri.pre_import.xml | 275 ++ hw/efinix_fpga/super6502.peri.xml | 196 + hw/efinix_fpga/super6502.sv | 256 + hw/efinix_fpga/super6502.xml | 83 + hw/efinix_fpga/uart.sv | 228 + hw/efinix_fpga/work_pt/peri_load.bak | 31 + hw/efinix_fpga/work_pt/peri_res.json | 3 + hw/efinix_fpga/work_syn/run_efx_map.sh | 1 + .../efinix_shield-2022-06-13_154311.zip | Bin 0 -> 16638 bytes .../efinix_shield-2022-06-13_154853.zip | Bin 0 -> 19040 bytes .../efinix_shield-2022-06-13_155543.zip | Bin 0 -> 22907 bytes .../efinix_shield-2022-06-13_160229.zip | Bin 0 -> 22949 bytes .../efinix_shield-2022-06-13_212515.zip | Bin 0 -> 23452 bytes .../efinix_shield-2022-06-23_205544.zip | Bin 0 -> 23452 bytes .../efinix_shield-2022-08-01_180601.zip | Bin 0 -> 23465 bytes .../efinix_shield-2022-08-01_183247.zip | Bin 0 -> 23465 bytes .../efinix_shield-2022-08-03_164127.zip | Bin 0 -> 23465 bytes .../efinix_shield-2022-08-05_140907.zip | Bin 0 -> 23465 bytes hw/efinix_shield/efinix_shield.kicad_pcb | 2 + hw/efinix_shield/efinix_shield.kicad_prl | 75 + hw/efinix_shield/efinix_shield.kicad_pro | 326 ++ hw/efinix_shield/efinix_shield.kicad_sch | 2602 ++++++++++ hw/efinix_shield/fp-info-cache | 1 + hw/efinix_shield/sym-lib-table | 208 + hw/kicad_library | 1 + sw/cc65 | 2 +- 43 files changed, 10213 insertions(+), 1 deletion(-) create mode 100644 hw/efinix_fpga/HexDriver.sv create mode 100644 hw/efinix_fpga/SevenSeg.sv create mode 100644 hw/efinix_fpga/addr_decode.sv create mode 100644 hw/efinix_fpga/board_io.sv create mode 100644 hw/efinix_fpga/crc7.sv create mode 100644 hw/efinix_fpga/ip/sdram/sdram.v create mode 100644 hw/efinix_fpga/ip/sdram/sdram_define.vh create mode 100644 hw/efinix_fpga/ip/sdram/sdram_tmpl.v create mode 100644 hw/efinix_fpga/ip/sdram/sdram_tmpl.vhd create mode 100644 hw/efinix_fpga/ip/sdram/settings.json create mode 100644 hw/efinix_fpga/memory_mapper.sv create mode 100644 hw/efinix_fpga/outflow/super6502.err.log create mode 100644 hw/efinix_fpga/outflow/super6502.info.log create mode 100644 hw/efinix_fpga/outflow/super6502.map.out create mode 100644 hw/efinix_fpga/outflow/super6502.warn.log create mode 100644 hw/efinix_fpga/sd_controller.sv create mode 100644 hw/efinix_fpga/sdram_adapter.sv create mode 100644 hw/efinix_fpga/super6502.peri.pre_import.xml create mode 100644 hw/efinix_fpga/super6502.peri.xml create mode 100644 hw/efinix_fpga/super6502.sv create mode 100644 hw/efinix_fpga/super6502.xml create mode 100644 hw/efinix_fpga/uart.sv create mode 100644 hw/efinix_fpga/work_pt/peri_load.bak create mode 100644 hw/efinix_fpga/work_pt/peri_res.json create mode 100755 hw/efinix_fpga/work_syn/run_efx_map.sh create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_154311.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_154853.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_155543.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_160229.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_212515.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-23_205544.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-01_180601.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-01_183247.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-03_164127.zip create mode 100644 hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-05_140907.zip create mode 100644 hw/efinix_shield/efinix_shield.kicad_pcb create mode 100644 hw/efinix_shield/efinix_shield.kicad_prl create mode 100644 hw/efinix_shield/efinix_shield.kicad_pro create mode 100644 hw/efinix_shield/efinix_shield.kicad_sch create mode 100644 hw/efinix_shield/fp-info-cache create mode 100644 hw/efinix_shield/sym-lib-table create mode 160000 hw/kicad_library diff --git a/hw/efinix_fpga/HexDriver.sv b/hw/efinix_fpga/HexDriver.sv new file mode 100644 index 0000000..0cce9d4 --- /dev/null +++ b/hw/efinix_fpga/HexDriver.sv @@ -0,0 +1,27 @@ +module HexDriver (input [3:0] In0, + output logic [6:0] Out0); + + always_comb + begin + unique case (In0) + 4'b0000 : Out0 = 7'b1000000; // '0' + 4'b0001 : Out0 = 7'b1111001; // '1' + 4'b0010 : Out0 = 7'b0100100; // '2' + 4'b0011 : Out0 = 7'b0110000; // '3' + 4'b0100 : Out0 = 7'b0011001; // '4' + 4'b0101 : Out0 = 7'b0010010; // '5' + 4'b0110 : Out0 = 7'b0000010; // '6' + 4'b0111 : Out0 = 7'b1111000; // '7' + 4'b1000 : Out0 = 7'b0000000; // '8' + 4'b1001 : Out0 = 7'b0010000; // '9' + 4'b1010 : Out0 = 7'b0001000; // 'A' + 4'b1011 : Out0 = 7'b0000011; // 'b' + 4'b1100 : Out0 = 7'b1000110; // 'C' + 4'b1101 : Out0 = 7'b0100001; // 'd' + 4'b1110 : Out0 = 7'b0000110; // 'E' + 4'b1111 : Out0 = 7'b0001110; // 'F' + default : Out0 = 7'bX; + endcase + end + +endmodule diff --git a/hw/efinix_fpga/SevenSeg.sv b/hw/efinix_fpga/SevenSeg.sv new file mode 100644 index 0000000..ff2179e --- /dev/null +++ b/hw/efinix_fpga/SevenSeg.sv @@ -0,0 +1,42 @@ +module SevenSeg( + input clk, + input rst, + + input rw, + + input [7:0] data, + input cs, + input [1:0] addr, + + output logic [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5 +); + +logic [7:0] _data [3:0]; + +always_ff @(posedge clk) begin + if (rst) + _data = '{default:'0}; + if (~rw & cs) + _data[addr] <= data; +end + + +logic [3:0] hex_4[5:0]; + +assign {hex_4[5], hex_4[4]} = _data[2]; +assign {hex_4[3], hex_4[2]} = _data[1]; +assign {hex_4[1], hex_4[0]} = _data[0]; + +logic [6:0] _HEX0, _HEX1, _HEX2, _HEX3, _HEX4, _HEX5; + +HexDriver hex_drivers[5:0] (hex_4, {_HEX5, _HEX4, _HEX3, _HEX2, _HEX1, _HEX0}); + +assign HEX0 = _HEX0 | {7{~_data[3][0]}}; +assign HEX1 = _HEX1 | {7{~_data[3][1]}}; +assign HEX2 = _HEX2 | {7{~_data[3][2]}}; +assign HEX3 = _HEX3 | {7{~_data[3][3]}}; +assign HEX4 = _HEX4 | {7{~_data[3][4]}}; +assign HEX5 = _HEX5 | {7{~_data[3][5]}}; + + +endmodule diff --git a/hw/efinix_fpga/addr_decode.sv b/hw/efinix_fpga/addr_decode.sv new file mode 100644 index 0000000..bcfde85 --- /dev/null +++ b/hw/efinix_fpga/addr_decode.sv @@ -0,0 +1,24 @@ +module addr_decode( + input logic [23:0] addr, + output logic sdram_cs, + output logic rom_cs, + output logic hex_cs, + output logic uart_cs, + output logic irq_cs, + output logic board_io_cs, + output logic mm_cs1, + output logic mm_cs2, + output logic sd_cs +); + +assign rom_cs = addr >= 24'h008000 && addr < 24'h010000; +assign sdram_cs = addr < 24'h007fe0 || addr >= 24'h010000; +assign mm_cs1 = addr >= 24'h007fe0 && addr < 24'h007ff0; +assign hex_cs = addr >= 24'h007ff0 && addr < 24'h007ff4; +assign uart_cs = addr >= 24'h007ff4 && addr < 24'h007ff6; +assign board_io_cs = addr == 24'h007ff6; +assign mm_cs2 = addr == 24'h007ff7; +assign sd_cs = addr >= 24'h007ff8 && addr < 24'h007ffe; +assign irq_cs = addr == 24'h007fff; + +endmodule diff --git a/hw/efinix_fpga/board_io.sv b/hw/efinix_fpga/board_io.sv new file mode 100644 index 0000000..d83d1b3 --- /dev/null +++ b/hw/efinix_fpga/board_io.sv @@ -0,0 +1,27 @@ +module board_io( + input clk, + input rst, + + input rw, + + input [7:0] data_in, + input cs, + input [1:0] addr, + + output logic [7:0] data_out, + + output logic [7:0] led, + input [7:0] sw +); + +assign data_out = sw; + + +always_ff @(posedge clk) begin + if (rst) + led = '0; + if (~rw & cs) + led <= data_in; +end + +endmodule diff --git a/hw/efinix_fpga/crc7.sv b/hw/efinix_fpga/crc7.sv new file mode 100644 index 0000000..e009826 --- /dev/null +++ b/hw/efinix_fpga/crc7.sv @@ -0,0 +1,106 @@ +module crc7 #(parameter POLYNOMIAL = 8'h89) +( + input clk, + input rst, + + input load, + input [39:0] data_in, + + output logic [6:0] crc_out, + output logic valid +); + +logic [46:0] data; +logic [46:0] next_data; +logic [46:0] polyshift; + +typedef enum bit [1:0] {IDLE, WORKING, VALID} macro_t; +struct packed { + macro_t macro; + logic [5:0] count; +} state, next_state; + +always_ff @(posedge clk) begin + if (rst) begin + polyshift <= {POLYNOMIAL, 39'b0}; //start all the way at the left + data <= '0; + state.macro <= IDLE; + state.count <= '0; + end else begin + if (load) begin + data <= {data_in, 7'b0}; + end else begin + data <= next_data; + end + state <= next_state; + + if (state.macro == WORKING) begin + polyshift <= polyshift >> 1; + end + + if (state.macro == VALID) begin + polyshift <= {POLYNOMIAL, 39'b0}; + end + end +end + +always_comb begin + next_state = state; + + case (state.macro) + IDLE: begin + if (load) begin + next_state.macro = WORKING; + next_state.count = '0; + end + end + + WORKING: begin + if (state.count < 39) begin + next_state.count = state.count + 6'b1; + end else begin + next_state.macro = VALID; + next_state.count = '0; + end + end + + VALID: begin // Same as IDLE, but IDLE is just for reset. + if (load) begin + next_state.macro = WORKING; + next_state.count = '0; + end + end + + default:; + endcase +end + +always_comb begin + valid = 0; + next_data = '0; + crc_out = '0; + + case (state.macro) + IDLE: begin + valid = 0; + end + + WORKING: begin + if (data[6'd46 - state.count]) begin + next_data = data ^ polyshift; + end else begin + next_data = data; + end + end + + VALID: begin + valid = ~load; + next_data = data; + crc_out = data[6:0]; + end + + default:; + endcase +end + +endmodule diff --git a/hw/efinix_fpga/ip/sdram/sdram.v b/hw/efinix_fpga/ip/sdram/sdram.v new file mode 100644 index 0000000..57af1cf --- /dev/null +++ b/hw/efinix_fpga/ip/sdram/sdram.v @@ -0,0 +1,4236 @@ +// ============================================================================= +// Generated by efx_ipmgr +// Version: 2021.2.323 +// IP Version: 1.5 +// ============================================================================= + +//////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2013-2021 Efinix Inc. All rights reserved. +// +// This document contains proprietary information which is +// protected by copyright. All rights are reserved. This notice +// refers to original work by Efinix, Inc. which may be derivitive +// of other work distributed under license of the authors. In the +// case of derivative work, nothing in this notice overrides the +// original author's license agreement. Where applicable, the +// original license agreement is included in it's original +// unmodified form immediately below this header. +// +// WARRANTY DISCLAIMER. +// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND +// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH +// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES, +// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR +// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED +// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. +// +// LIMITATION OF LIABILITY. +// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY +// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT +// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY +// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT, +// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY +// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF +// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR +// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN +// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER +// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE +// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO +// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR +// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT +// APPLY TO LICENSEE. +// +//////////////////////////////////////////////////////////////////////////////// + +`define IP_UUID _2fa8b2362acf42f5841c22a03034c8fb +`define IP_NAME_CONCAT(a,b) a``b +`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID) +module sdram ( +input i_we, +input i_sysclk, +input i_arst, +input i_sdrclk, +input i_tACclk, +input i_pll_locked, +input i_re, +input i_last, +output o_dbg_tRTW_done, +output o_dbg_ref_req, +output o_dbg_wr_ack, +output o_dbg_rd_ack, +output [1:0] o_dbg_n_CS, +output [1:0] o_dbg_n_RAS, +output [1:0] o_dbg_n_CAS, +output [1:0] o_dbg_n_WE, +output [3:0] o_dbg_BA, +output [25:0] o_dbg_ADDR, +output [31:0] o_dbg_DATA_out, +output [31:0] o_dbg_DATA_in, +input [23:0] i_addr, +input [31:0] i_din, +output [31:0] o_dout, +output [3:0] o_sdr_state, +output o_sdr_init_done, +output o_wr_ack, +output o_rd_ack, +output o_ref_req, +output o_rd_valid, +output [1:0] o_sdr_CKE, +output [1:0] o_sdr_n_CS, +output [1:0] o_sdr_n_RAS, +output [1:0] o_sdr_n_CAS, +output [1:0] o_sdr_n_WE, +output [3:0] o_sdr_BA, +output [25:0] o_sdr_ADDR, +output [31:0] o_sdr_DATA, +output [31:0] o_sdr_DATA_oe, +input [31:0] i_sdr_DATA, +output [3:0] o_sdr_DQM, +output [5:0] o_dbg_dly_cnt_b, +output o_dbg_tRCD_done +); +`IP_MODULE_NAME(efx_sdram_controller) #( +.fSYS_MHz (100), +.fCK_MHz (200), +.tIORT_u (2), +.BL (1), +.DDIO_TYPE ("SOFT"), +.DQ_WIDTH (8), +.DQ_GROUP (2), +.BA_WIDTH (2), +.ROW_WIDTH (13), +.COL_WIDTH (9), +.tPWRUP (200000), +.tRAS (44), +.tRC (66), +.tRCD (20), +.tREF (64000000), +.tWR (2), +.tMRD (2), +.tRFC (66), +.tRAS_MAX (120000), +.DATA_RATE (2), +.AXI_ARADDR_WIDTH (24), +.SDRAM_MODE ("Native"), +.AXI_BUSER_WIDTH (2), +.AXI_BID_WIDTH (4), +.AXI_AWUSER_WIDTH (2), +.AXI_AWID_WIDTH (4), +.AXI_AWADDR_WIDTH (24), +.AXI_RDATA_WIDTH (32), +.AXI_WUSER_WIDTH (2), +.AXI_WDATA_WIDTH (32), +.AXI_RUSER_WIDTH (3), +.AXI_ARUSER_WIDTH (3), +.AXI_ARID_WIDTH (4), +.tRP (20), +.CL (3) +) u_efx_sdram_controller( +.i_we ( i_we ), +.i_sysclk ( i_sysclk ), +.i_arst ( i_arst ), +.i_sdrclk ( i_sdrclk ), +.i_tACclk ( i_tACclk ), +.i_pll_locked ( i_pll_locked ), +.i_re ( i_re ), +.i_last ( i_last ), +.o_dbg_tRTW_done ( o_dbg_tRTW_done ), +.o_dbg_ref_req ( o_dbg_ref_req ), +.o_dbg_wr_ack ( o_dbg_wr_ack ), +.o_dbg_rd_ack ( o_dbg_rd_ack ), +.o_dbg_n_CS ( o_dbg_n_CS ), +.o_dbg_n_RAS ( o_dbg_n_RAS ), +.o_dbg_n_CAS ( o_dbg_n_CAS ), +.o_dbg_n_WE ( o_dbg_n_WE ), +.o_dbg_BA ( o_dbg_BA ), +.o_dbg_ADDR ( o_dbg_ADDR ), +.o_dbg_DATA_out ( o_dbg_DATA_out ), +.o_dbg_DATA_in ( o_dbg_DATA_in ), +.i_addr ( i_addr ), +.i_din ( i_din ), +.o_dout ( o_dout ), +.o_sdr_state ( o_sdr_state ), +.o_sdr_init_done ( o_sdr_init_done ), +.o_wr_ack ( o_wr_ack ), +.o_rd_ack ( o_rd_ack ), +.o_ref_req ( o_ref_req ), +.o_rd_valid ( o_rd_valid ), +.o_sdr_CKE ( o_sdr_CKE ), +.o_sdr_n_CS ( o_sdr_n_CS ), +.o_sdr_n_RAS ( o_sdr_n_RAS ), +.o_sdr_n_CAS ( o_sdr_n_CAS ), +.o_sdr_n_WE ( o_sdr_n_WE ), +.o_sdr_BA ( o_sdr_BA ), +.o_sdr_ADDR ( o_sdr_ADDR ), +.o_sdr_DATA ( o_sdr_DATA ), +.o_sdr_DATA_oe ( o_sdr_DATA_oe ), +.i_sdr_DATA ( i_sdr_DATA ), +.o_sdr_DQM ( o_sdr_DQM ), +.o_dbg_dly_cnt_b ( o_dbg_dly_cnt_b ), +.o_dbg_tRCD_done ( o_dbg_tRCD_done ) +); + +endmodule + +///////////////////////////////////////////////////////////////////////////// +// _____ +// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved. +// / / \ +// / / .. / `IP_MODULE_NAME(axi4_sdram_controller).v +// / / .' / +// __/ /.' / Description: +// __ \ / sdram contronller top with AXI4 interface +// /_/ /\ \_____/ / +// ____/ \_______/ +// +// ******************************* +// Revisions: +// 1.0 Initial rev +// Support ONLY AXI 32-bit data to SDRAM total DQ x16 half rate +// +// ******************************* +///////////////////////////////////////////////////////////////////////////// +// AxSIZE +`define BYTES_TX_1 3'b000 +`define BYTES_TX_2 3'b001 +`define BYTES_TX_4 3'b010 +`define BYTES_TX_8 3'b011 +`define BYTES_TX_16 3'b100 +`define BYTES_TX_32 3'b101 +`define BYTES_TX_64 3'b110 +`define BYTES_TX_128 3'b111 +`define OKAY 2'b00 + +module `IP_MODULE_NAME(axi4_sdram_controller) +#( + parameter AXI_AWADDR_WIDTH = 32, + parameter AXI_WDATA_WIDTH = 32, + parameter AXI_ARADDR_WIDTH = 32, + parameter AXI_RDATA_WIDTH = 32, + + parameter fSYS_MHz = 100, + parameter fCK_MHz = 100, + parameter DDIO_TYPE = "SOFT", + parameter tPWRUP = 100, // 100 us + parameter tRAS = 44, // 44 ns + parameter tRAS_MAX = 120, // 120 us + parameter tRC = 66, // 66 ns + parameter tRCD = 20, // 20 ns + parameter tREF = 64, // 64 ms + parameter tRFC = 66, // 66 ns + parameter tRP = 20, // 20 ns + parameter tWR = 2, // 1 CK+7.5 ns + parameter tMRD = 2, // 2 CK + parameter CL = 3, // 3 CK + parameter BL = 1, + parameter DATA_RATE = 1, + parameter tIORT_u = 2, + parameter BA_WIDTH = 2, + parameter ROW_WIDTH = 10, + parameter COL_WIDTH = 10, + parameter DQ_WIDTH = 8, // x4, x8 + parameter DQ_GROUP = 8, + // x4 x8 x16 x32 + // DQ_WIDTH 4 8 8 8 + // DQ_GROUP 1 1 2 4 + // AXI not support DQ_WIDTH = 4 DQ_GROUP = 1 + + //----- parameter not configurable by user---- + parameter AXI_AWID_WIDTH = 4, + parameter AXI_AWUSER_WIDTH = 2, + parameter AXI_WUSER_WIDTH = 2, + parameter AXI_BID_WIDTH = 4, + parameter AXI_BUSER_WIDTH = 2, + parameter AXI_ARID_WIDTH = 4, + parameter AXI_ARUSER_WIDTH = 2, + parameter AXI_RUSER_WIDTH = 2 +) +( + input i_aresetn, + input i_sysclk, + input i_sdrclk, + input i_tACclk, + input i_pll_locked, + output o_pll_reset, + + // Compulsory + output o_AXI4_AWREADY, + input [AXI_AWADDR_WIDTH-1:0]i_AXI4_AWADDR, + input [2:0]i_AXI4_AWPROT, // Dummy + input i_AXI4_AWVALID, + + output o_AXI4_WREADY, + input [AXI_WDATA_WIDTH-1:0]i_AXI4_WDATA, + input i_AXI4_WLAST, + input i_AXI4_WVALID, + + output o_AXI4_BVALID, + input i_AXI4_BREADY, + + output o_AXI4_ARREADY, + input [AXI_ARADDR_WIDTH-1:0]i_AXI4_ARADDR, + input [2:0]i_AXI4_ARPROT, // Dummy + input i_AXI4_ARVALID, + + input i_AXI4_RREADY, + output [AXI_RDATA_WIDTH-1:0]o_AXI4_RDATA, + output o_AXI4_RLAST, + output o_AXI4_RVALID, + + // Optional + input [AXI_AWID_WIDTH-1:0]i_AXI4_AWID, + input [3:0]i_AXI4_AWREGION, // Dummy + input [7:0]i_AXI4_AWLEN, // Dummy + input [2:0]i_AXI4_AWSIZE, + input [1:0]i_AXI4_AWBURST, // Dummy + input i_AXI4_AWLOCK, // Dummy + input [3:0]i_AXI4_AWCACHE, // Dummy + input [3:0]i_AXI4_AWQOS, // Dummy + input [AXI_AWUSER_WIDTH-1:0]i_AXI4_AWUSER, // Dummy + + input [AXI_WDATA_WIDTH/8-1:0]i_AXI4_WSTRB, // Dummy + input [AXI_WUSER_WIDTH-1:0]i_AXI4_WUSER, // Dummy + + output [AXI_BID_WIDTH-1:0]o_AXI4_BID, + output [1:0]o_AXI4_BRESP, // Dummy + output [AXI_BUSER_WIDTH-1:0]o_AXI4_BUSER, // Dummy + + input [AXI_ARID_WIDTH-1:0]i_AXI4_ARID, + input [3:0]i_AXI4_ARREGION, // Dummy + input [7:0]i_AXI4_ARLEN, + input [2:0]i_AXI4_ARSIZE, + input [1:0]i_AXI4_ARBURST, // Dummy + input i_AXI4_ARLOCK, // Dummy + input [3:0]i_AXI4_ARCACHE, // Dummy + input [3:0]i_AXI4_ARQOS, // Dummy + input [AXI_ARUSER_WIDTH-1:0]i_AXI4_ARUSER, // Dummy + + output [AXI_ARID_WIDTH-1:0]o_AXI4_RID, + output [1:0]o_AXI4_RRESP, // Dummy + output [AXI_RUSER_WIDTH-1:0]o_AXI4_RUSER, // Dummy + + output [DATA_RATE -1:0] o_sdr_CKE, + output [DATA_RATE -1:0] o_sdr_n_CS, + output [DATA_RATE -1:0] o_sdr_n_RAS, + output [DATA_RATE -1:0] o_sdr_n_CAS, + output [DATA_RATE -1:0] o_sdr_n_WE, + output [DATA_RATE *BA_WIDTH -1:0] o_sdr_BA, + output [DATA_RATE *ROW_WIDTH -1:0] o_sdr_ADDR, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_sdr_DATA, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_sdr_DATA_oe, + input [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] i_sdr_DATA, + output [DATA_RATE *DQ_GROUP -1:0] o_sdr_DQM, + + // Debug port + output [3:0]o_sdr_state, + output o_dbg_we, + output o_dbg_re, + output o_dbg_last, + output [BA_WIDTH+ROW_WIDTH+COL_WIDTH-1:0]o_dbg_addr, + output [AXI_WDATA_WIDTH-1:0]o_dbg_din, + output o_dbg_wr_ack, + output o_dbg_rd_ack, + output o_sdr_rd_valid, + output o_dbg_ref_req, + output [DATA_RATE*DQ_GROUP*DQ_WIDTH+AXI_ARID_WIDTH:0]o_sdr_dout, + output [1:0]o_axi4_wrstate, + output o_dbg_axi4_wlast, + output [1:0]o_axi4_rastate, + output [1:0]o_axi4_rdstate, + output o_axi4_nwr, + output o_re_lock, + output [6:0]o_shift_cnt, + output [7:0]o_axi4_arlen, + output o_fifo_wr, + output o_fifo_full, + output o_fifo_empty, + output o_dbg_fifo_we, + output [7:0]o_dbg_fifo_waddr, + output o_dbg_fifo_re, + output [7:0]o_dbg_fifo_raddr, + + output [DATA_RATE -1:0] o_dbg_n_CS, + output [DATA_RATE -1:0] o_dbg_n_RAS, + output [DATA_RATE -1:0] o_dbg_n_CAS, + output [DATA_RATE -1:0] o_dbg_n_WE, + output [DATA_RATE *BA_WIDTH -1:0] o_dbg_BA, + output [DATA_RATE *ROW_WIDTH -1:0] o_dbg_ADDR, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_dbg_DATA_out, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_dbg_DATA_in +); + +function integer log2; + input integer val; + integer i; + begin + log2 = 0; + for (i=0; 2**i= AXI_BID_WIDTH) + r_AXI4_BID_1P <= i_AXI4_AWID[AXI_BID_WIDTH-1:0]; + else + r_AXI4_BID_1P <= {{AXI_BID_WIDTH-AXI_AWID_WIDTH{1'b0}}, i_AXI4_AWID}; + + r_we_1P <= 1'b1; + // TODO AXI different width support + if (SDR_BWIDTH > AXI_WDATA_WIDTH) + begin + r_addr_1P[0+:BA_WIDTH+ROW_WIDTH+COL_WIDTH-(0-SDR_BWIDTH/AXI_WDATA_WIDTH+1)] <= i_AXI4_AWADDR[BA_WIDTH+ROW_WIDTH+COL_WIDTH-1:0-SDR_BWIDTH/AXI_WDATA_WIDTH+1]; + $display("foo_gt\n"); + end + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + begin + //r_addr_1P <= {i_AXI4_AWADDR[BA_WIDTH+ROW_WIDTH+COL_WIDTH-1:COL_WIDTH], {(DATA_RATE-1){1'b0}}, i_AXI4_AWADDR[COL_WIDTH-1:DATA_RATE-1]}; + r_addr_1P <= i_AXI4_AWADDR; + $display("foo_eq\n"); + end + + if (SDR_BWIDTH > AXI_WDATA_WIDTH) + begin + //r_AXI4_WREADY_c <= 1'b1; + r_size_1P <= SDR_BWIDTH/AXI_WDATA_WIDTH-1'b1; + r_shift_cnt_1P <= SDR_BWIDTH/AXI_WDATA_WIDTH-1'b1; + $display("SDR_BWIDTH %d > AXI_WDATA_WIDTH %d\n", SDR_BWIDTH, AXI_WDATA_WIDTH); + end + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + begin + if (i_AXI4_WLAST) + begin + r_din_1P <= i_AXI4_WDATA; + r_last_1P <= 1'b1; + end + r_size_1P <= SDR_BWIDTH/AXI_WDATA_WIDTH-1'b1; + r_shift_cnt_1P <= {7{1'b0}}; + $display("SDR_BWIDTH %d = AXI_WDATA_WIDTH %d\n", SDR_BWIDTH, AXI_WDATA_WIDTH); + end + else + begin + //r_AXI4_WREADY_c <= 1'b1; + r_size_1P <= AXI_WDATA_WIDTH/SDR_BWIDTH-1'b1; + r_shift_cnt_1P <= AXI_WDATA_WIDTH/SDR_BWIDTH-1'b1; + $display("SDR_BWIDTH %d < AXI_WDATA_WIDTH %d\n", SDR_BWIDTH, AXI_WDATA_WIDTH); + end + end + end + + s_WR_SHIFT: + begin + if (SDR_BWIDTH > AXI_WDATA_WIDTH) + begin + if (r_shift_cnt_1P != 7'd0) + begin + if (r_AXI4_WREADY_c) + r_shift_cnt_1P <= r_shift_cnt_1P-1'b1; + end + else + begin + r_shift_cnt_1P <= r_size_1P; + end + end + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + begin + if (r_AXI4_WREADY_2P) + r_addr_1P <= r_addr_1P+c_addr_increment; + + if (r_AXI4_WREADY_c) + r_din_1P <= i_AXI4_WDATA; + + if (~r_AXI4_WREADY_c & r_AXI4_WREADY_2P & i_AXI4_WLAST) + begin + r_din_1P <= i_AXI4_WDATA; + end + end + + if (w_wr_ack) + begin + /*if (SDR_BWIDTH < AXI_WDATA_WIDTH) + begin + if (r_size_1P != `BYTES_TX_1) + r_addr_1P <= r_addr_1P+c_addr_increment; + else if (~r_wr_ack_1P) + r_addr_1P <= r_addr_1P+c_addr_increment; + else if (r_AXI4_WREADY_2P) + r_addr_1P <= r_addr_1P+c_addr_increment; + + r_shift_cnt_1P <= r_shift_cnt_1P-1'b1; + if (r_AXI4_WLAST_1P && r_shift_cnt_1P == 7'd1) + r_last_1P <= 1'b1; + end + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + begin + r_AXI4_WREADY_c <= 1'b1; + end + else + begin + r_AXI4_WREADY_c <= 1'b1; + + if (r_AXI4_WREADY_c) + r_addr_1P <= r_addr_1P+1'b1; + + if (r_shift_cnt_1P == 7'd1) + begin + if (i_AXI4_WLAST || r_AXI4_WLAST_1P) + begin + r_axi4_wrstate_1P <= s_WR_RESP; + r_AXI4_WREADY_c <= 1'b0; + r_AXI4_WLAST_1P <= 1'b0; + r_AXI4_BVALID_1P <= 1'b1; + + r_last_1P <= 1'b1; + end + end + end*/ + + if (r_shift_cnt_1P == 7'd0) + begin + //r_AXI4_WREADY_c <= 1'b1; + + r_AXI4_WLAST_1P <= i_AXI4_WLAST; + r_shift_cnt_1P <= r_size_1P; + + if (i_AXI4_WLAST && r_size_1P == {7{1'b0}} && r_AXI4_AWLEN_1P) + begin + r_axi4_wrstate_1P <= s_WR_RESP; + //r_AXI4_WREADY_c <= ~r_AXI4_WREADY_c; + r_AXI4_WLAST_1P <= 1'b0; + r_AXI4_BVALID_1P <= 1'b1; + + r_we_1P <= 1'b1; + r_last_1P <= 1'b1; + end + else if (r_AXI4_WLAST_1P) + begin + r_axi4_wrstate_1P <= s_WR_RESP; + //r_AXI4_WREADY_c <= ~r_AXI4_WREADY_c; + r_AXI4_WLAST_1P <= 1'b0; + r_AXI4_BVALID_1P <= 1'b1; + + r_we_1P <= 1'b0; + r_last_1P <= 1'b0; + end + end + end + end + + s_WR_RESP: + begin + r_we_1P <= 1'b0; + r_last_1P <= 1'b0; + + if (i_AXI4_BREADY) + begin + r_axi4_wrstate_1P <= s_IDLE; + r_AXI4_BVALID_1P <= 1'b0; + end + end + endcase + + case (r_axi4_rastate_1P) + s_INIT: + begin + if (w_sdr_init_done) + r_axi4_rastate_1P <= s_IDLE; + end + + s_IDLE: + begin + if (i_AXI4_ARVALID && r_axi4_nwr_1P + && ~r_we_1P && ~w_afull && ~r_AXI4_RVALID_1P) + begin + r_axi4_rastate_1P <= s_RD_ADDR; + r_AXI4_ARREADY_1P <= 1'b1; + r_AXI4_RID_1P <= i_AXI4_ARID; + + r_re_1P <= 1'b1; + r_re_lock_1P <= 1'b1; + if (i_AXI4_ARLEN == 8'd0 && (SDR_BWIDTH == AXI_RDATA_WIDTH)) + r_last_1P <= 1'b1; + + // TODO AXI different width support + if (SDR_BWIDTH > AXI_RDATA_WIDTH) + begin + r_addr_1P[0+:BA_WIDTH+ROW_WIDTH+COL_WIDTH-(0-SDR_BWIDTH/AXI_RDATA_WIDTH+1)] <= i_AXI4_ARADDR[BA_WIDTH+ROW_WIDTH+COL_WIDTH-1:0-SDR_BWIDTH/AXI_RDATA_WIDTH+1]; + end + else if (SDR_BWIDTH == AXI_RDATA_WIDTH) + begin + //r_addr_1P <= {i_AXI4_ARADDR[BA_WIDTH+ROW_WIDTH+COL_WIDTH-1:COL_WIDTH], {(DATA_RATE-1){1'b0}}, i_AXI4_ARADDR[COL_WIDTH-1:DATA_RATE-1]}; + r_addr_1P <= i_AXI4_ARADDR; + end + + if (SDR_BWIDTH > AXI_WDATA_WIDTH) + begin + r_size_1P <= SDR_BWIDTH/AXI_RDATA_WIDTH-1'b1; + r_shift_cnt_1P <= SDR_BWIDTH/AXI_RDATA_WIDTH-1'b1; + r_addr_cnt_1P <= SDR_BWIDTH/AXI_RDATA_WIDTH-1'b1; + end + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + begin + r_AXI4_ARLEN_1P <= i_AXI4_ARLEN; + r_size_1P <= 7'd0; + r_shift_cnt_1P <= 7'd0; + r_addr_cnt_1P <= 7'd0; + r_arlen_cnt_1P <= i_AXI4_ARLEN; + end + else + begin + r_AXI4_ARLEN_1P <= i_AXI4_ARLEN; + r_size_1P <= AXI_RDATA_WIDTH/SDR_BWIDTH-1'b1; + r_shift_cnt_1P <= AXI_RDATA_WIDTH/SDR_BWIDTH-1'b1; + r_addr_cnt_1P <= AXI_RDATA_WIDTH/SDR_BWIDTH-1'b1; + r_arlen_cnt_1P <= i_AXI4_ARLEN; + end + end + end + + s_RD_ADDR: + begin + if (~w_afull) + r_re_1P <= 1'b1; + + if (w_rd_ack) + begin + if (w_afull) + r_re_1P <= 1'b0; + if (SDR_BWIDTH < AXI_WDATA_WIDTH) + r_addr_1P <= r_addr_1P+c_addr_increment; + else if (SDR_BWIDTH == AXI_WDATA_WIDTH) + r_addr_1P <= r_addr_1P+c_addr_increment; + else + r_addr_1P <= r_addr_1P+1'b1; + + r_addr_cnt_1P <= r_addr_cnt_1P-1'b1; + if (r_addr_cnt_1P == 7'd0) + begin + r_addr_cnt_1P <= r_size_1P; + r_arlen_cnt_1P <= r_arlen_cnt_1P-1'b1; + end + + if (r_arlen_cnt_1P == 8'd1 && (SDR_BWIDTH == AXI_RDATA_WIDTH)) + r_last_1P <= 1'b1; + + if (r_arlen_cnt_1P == 8'd0) + begin + if (r_addr_cnt_1P == 8'd1) + r_last_1P <= 1'b1; + + if (r_addr_cnt_1P == 8'd0) + begin + r_axi4_rastate_1P <= s_IDLE; + + r_re_1P <= 1'b0; + r_last_1P <= 1'b0; + r_re_lock_1P <= 1'b0; + end + end + end + end + endcase + + if (w_rd_valid) + begin + if (SDR_BWIDTH >= AXI_RDATA_WIDTH) + begin + r_dout_1P[DOUT_WIDTH-1:0] <= w_dout; + end + + r_dout_1P[DOUT_WIDTH+AXI_ARID_WIDTH-1:DOUT_WIDTH] <= r_AXI4_RID[CL+tIORT+1]; + + r_shift_cnt_1P <= r_shift_cnt_1P-1'b1; + + if (r_shift_cnt_1P == 7'd0) + begin + r_fifo_wr_1P <= 1'b1; + if (r_AXI4_ARLEN_1P == 7'd0) + r_dout_1P[DOUT_WIDTH+AXI_ARID_WIDTH] <= 1'b1; + else + r_AXI4_ARLEN_1P <= r_AXI4_ARLEN_1P-1'b1; + r_shift_cnt_1P <= r_size_1P; + end + end + + case (r_axi4_rdstate_1P) + s_INIT: + begin + if (w_sdr_init_done) + r_axi4_rdstate_1P <= s_IDLE; + end + + s_IDLE: + begin + if (~w_empty & r_dout_1P[DOUT_WIDTH+AXI_ARID_WIDTH]) + begin + r_axi4_rdstate_1P <= s_RD_SHIFT; + r_fifo_rd_1P <= 1'b1; + r_dout_1P[DOUT_WIDTH+AXI_ARID_WIDTH] <= 1'b0; + end + end + + s_RD_SHIFT: + begin + r_AXI4_RVALID_1P <= 1'b1; + + if (i_AXI4_RREADY) + begin + if (w_empty) + begin + r_axi4_rdstate_1P <= s_IDLE; + r_AXI4_RVALID_1P <= 1'b0; + end + + if (w_fifo_dout[AXI_RDATA_WIDTH+AXI_ARID_WIDTH]) + begin + r_axi4_rdstate_1P <= s_IDLE; + r_AXI4_RVALID_1P <= 1'b0; + end + end + end + endcase + end +end + +genvar i; +generate + for (i=0; i 1) begin + `IP_MODULE_NAME(sdram_io_block) + #( + .DATA_RATE (DATA_RATE), + .BA_WIDTH (BA_WIDTH), + .ROW_WIDTH (ROW_WIDTH), + .COL_WIDTH (COL_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .DQ_GROUP (DQ_GROUP) + ) + inst_sdram_io_block + ( + .i_arst (i_arst), + .i_sysclk (i_sysclk), + .i_sdrclk (i_sdrclk), + .i_tACclk (i_tACclk), + .i_pll_locked (i_pll_locked), + + .i_sdr_CKE_core (w_sdr_CKE), + .i_sdr_n_CS_core (w_sdr_n_CS), + .i_sdr_n_RAS_core (w_sdr_n_RAS), + .i_sdr_n_CAS_core (w_sdr_n_CAS), + .i_sdr_n_WE_core (w_sdr_n_WE), + .i_sdr_BA_core (w_sdr_BA), + .i_sdr_ADDR_core (w_sdr_ADDR), + .i_sdr_DATA_core (w_sdr_DATA_out), + .i_sdr_DATA_oe_core (w_sdr_DATA_oe), + .o_sdr_DATA_core (w_sdr_DATA_in), + .i_sdr_DQM_core (w_sdr_DQM), + + .o_sdr_CKE_pad (o_sdr_CKE), + .o_sdr_n_CS_pad (o_sdr_n_CS), + .o_sdr_n_RAS_pad (o_sdr_n_RAS), + .o_sdr_n_CAS_pad (o_sdr_n_CAS), + .o_sdr_n_WE_pad (o_sdr_n_WE), + .o_sdr_BA_pad (o_sdr_BA), + .o_sdr_ADDR_pad (o_sdr_ADDR), + .o_sdr_DATA_pad (o_sdr_DATA), + .o_sdr_DATA_oe_pad (o_sdr_DATA_oe), + .i_sdr_DATA_pad (i_sdr_DATA), + .o_sdr_DQM_pad (o_sdr_DQM) + ); +end +else begin + reg [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0]r_sdr_DATA_in_tACclk_1P; + + always@(posedge i_arst or posedge i_tACclk) + begin + if (i_arst) + r_sdr_DATA_in_tACclk_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b0}}; + else + r_sdr_DATA_in_tACclk_1P <= i_sdr_DATA; + end + + assign w_sdr_DATA_in = r_sdr_DATA_in_tACclk_1P; + assign o_sdr_CKE = w_sdr_CKE; + assign o_sdr_n_CS = w_sdr_n_CS; + assign o_sdr_n_RAS = w_sdr_n_RAS; + assign o_sdr_n_CAS = w_sdr_n_CAS; + assign o_sdr_n_WE = w_sdr_n_WE; + assign o_sdr_BA = w_sdr_BA; + assign o_sdr_ADDR = w_sdr_ADDR; + assign o_sdr_DATA = w_sdr_DATA_out; + assign o_sdr_DATA_oe = w_sdr_DATA_oe; + assign o_sdr_DQM = w_sdr_DQM; +end +endgenerate + +assign o_dbg_DATA_out = w_sdr_DATA_out; +assign o_dbg_DATA_in = w_sdr_DATA_in; + +endmodule + +////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2013-2019 Efinix Inc. All rights reserved. +// +// This document contains proprietary information which is +// protected by copyright. All rights are reserved. This notice +// refers to original work by Efinix, Inc. which may be derivitive +// of other work distributed under license of the authors. In the +// case of derivative work, nothing in this notice overrides the +// original author's license agreement. Where applicable, the +// original license agreement is included in it's original +// unmodified form immediately below this header. +// +// WARRANTY DISCLAIMER. +// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND +// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH +// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES, +// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR +// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED +// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. +// +// LIMITATION OF LIABILITY. +// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY +// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT +// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY +// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT, +// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY +// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF +// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR +// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN +// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER +// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE +// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO +// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR +// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT +// APPLY TO LICENSEE. +// +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// _____ +// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved. +// / / \ +// / / .. / `IP_MODULE_NAME(sdram_fsm).v +// / / .' / +// __/ /.' / Description: +// __ \ / sdram controller state machine +// /_/ /\ \_____/ / +// ____/ \_______/ +// +// ******************************* +// Revisions: +// 1.0 Initial rev +// +// ******************************* + +module `IP_MODULE_NAME(sdram_fsm) +#( + parameter fSYS_MHz = 100, + parameter fCK_MHz = 200, // MHz + parameter DLY_CNT_A_WIDTH = 6, + parameter DLY_CNT_B_WIDTH = 6, + parameter CHECK_ACT_BA = 4, + parameter REF_LATENCY = 2, // + + parameter tPWRUP = 200, // 100 us + parameter tRAS = 44, // 44 ns + parameter tRAS_MAX = 120000, // 120 us + parameter tRC = 66, // 66 ns + parameter tRCD = 20, // 20 ns + parameter tREF = 64, // 64 ms + parameter tRFC = 66, // 66 ns + parameter tRP = 20, // 20 ns + parameter tWR = 2, // 1 CK+7.5 ns + parameter tMRD = 2, // 2 CK + parameter CL = 3, // 3 CK + parameter BL = 1, + parameter tIORT = 2, + parameter DDIO_TYPE = "SOFT", + parameter DATA_RATE = 2, + parameter BA_WIDTH = 2, + parameter ROW_WIDTH = 13, + parameter COL_WIDTH = 10, + parameter DQ_WIDTH = 8, // x4, x8 + parameter DQ_GROUP = 4 + // x4 x8 x16 x32 + // DQ_WIDTH 4 8 8 8 + // DQ_GROUP 1 1 2 4 +) +( + input i_arst, + input i_sysclk, + input i_pll_locked, + + input i_we, + input i_re, + input i_last, + input [ (BA_WIDTH+ROW_WIDTH+COL_WIDTH) -1:0] i_addr, + input [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] i_din, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_dout, + output [3:0]o_sdr_state, + output o_sdr_init_done, + output o_wr_ack, + output o_rd_ack, + output o_ref_req, + output o_rd_valid, + + output [DATA_RATE -1:0] o_sdr_CKE, + output [DATA_RATE -1:0] o_sdr_n_CS, + output [DATA_RATE -1:0] o_sdr_n_RAS, + output [DATA_RATE -1:0] o_sdr_n_CAS, + output [DATA_RATE -1:0] o_sdr_n_WE, + output [DATA_RATE *BA_WIDTH -1:0] o_sdr_BA, + output [DATA_RATE *ROW_WIDTH -1:0] o_sdr_ADDR, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_sdr_DATA, + output [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] o_sdr_DATA_oe, + input [DATA_RATE *DQ_GROUP *DQ_WIDTH -1:0] i_sdr_DATA, + output [DATA_RATE *DQ_GROUP -1:0] o_sdr_DQM, + + output [5:0]o_dbg_dly_cnt_b, + output o_dbg_tRCD_done, + output o_dbg_tRTW_done, + output o_dbg_ref_req, + output o_dbg_wr_ack, + output o_dbg_rd_ack, + output [DATA_RATE -1:0] o_dbg_n_CS, + output [DATA_RATE -1:0] o_dbg_n_RAS, + output [DATA_RATE -1:0] o_dbg_n_CAS, + output [DATA_RATE -1:0] o_dbg_n_WE, + output [DATA_RATE *BA_WIDTH -1:0] o_dbg_BA, + output [DATA_RATE *ROW_WIDTH -1:0] o_dbg_ADDR +); + +function integer log2; + input integer val; + integer i; + begin + log2 = 0; + for (i=0; 2**i> b; + end + end + end + + r_sdr_dq_1P <= i_din; + r_sdr_dqoe_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b1}}; + + r_dly_cnt_b_1P <= {DLY_CNT_B_WIDTH{1'b0}}; + r_tWR_done_1P <= 1'b0; + + r_wr_ack_1P <= ~r_ref_req_1P[0]; + + if (REF_LATENCY > 2) begin + if (r_ref_req_1P[REF_LATENCY-2] || r_tRAS_MAX_done_1P[REF_LATENCY-2] || (i_last)) + begin + r_sdr_cmd_1P <= {DATA_RATE{c_NOP}}; + r_sdr_dqoe_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b0}}; + r_wr_ack_1P <= 1'b0; + end + end + else begin + if (r_ref_req_1P[REF_LATENCY-2] || r_tRAS_MAX_done_1P[REF_LATENCY-2] || (i_last & r_wr_ack_1P)) + begin + r_sdr_cmd_1P <= {DATA_RATE{c_NOP}}; + r_sdr_dqoe_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b0}}; + r_wr_ack_1P <= 1'b0; + end + end + + end + else if (~i_we && i_re) + begin + if (DATA_RATE == 1) + begin + r_sdr_cmd_1P <= c_RD; + r_sdr_ba_2P <= i_addr[BA_MSB:BA_LSB]; + r_sdr_addr_2P <= i_addr[COL_MSB:COL_LSB]; + end + else + begin + for (c=0; c> b; + end + end + end + + r_dly_cnt_b_1P <= {DLY_CNT_B_WIDTH{1'b0}}; + r_tRTW_done_1P <= 1'b0; + r_tRC_done_1P <= 1'b0; + + r_rd_ack_P[0] <= ~r_ref_req_1P[0]; + + if (REF_LATENCY > 2) begin + if (r_ref_req_1P[REF_LATENCY-2] || r_tRAS_MAX_done_1P[REF_LATENCY-2] || (i_last)) + begin + if (r_rd_ack_P[0]) + begin + r_sdr_cmd_1P <= {DATA_RATE{c_NOP}}; + r_sdr_dqoe_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b0}}; + r_rd_ack_P[0] <= 1'b0; + end + end + end + else begin + if (r_ref_req_1P[REF_LATENCY-2] || r_tRAS_MAX_done_1P[REF_LATENCY-2] || (i_last & r_rd_ack_P[0])) + begin + if (r_rd_ack_P[0]) + begin + r_sdr_cmd_1P <= {DATA_RATE{c_NOP}}; + r_sdr_dqoe_1P <= {DATA_RATE*DQ_GROUP*DQ_WIDTH{1'b0}}; + r_rd_ack_P[0] <= 1'b0; + end + end + end + end + end + end + end + + s_PRE: + begin + if (r_dly_cnt_a_1P == nRP-1'b1) + begin + if (r_ref_req_1P[REF_LATENCY-1]) + begin + if (r_pre_allbank) // check if the previous PRE is ALL_BANK or SINGLE_BANK + begin + r_sdr_state_1P <= s_REF; + r_sdr_cmd_1P[CYC_A+:4] <= c_REF; + r_pre_allbank <= 1'b0; + r_dly_cnt_a_1P <= {DLY_CNT_A_WIDTH{1'b0}}; + end + else + begin // if the previous PRE is SINGLE_BANK, issue PRE to ALL_BANK before trigger AUTO-refresh + r_sdr_state_1P <= s_PRE; + r_sdr_cmd_1P[CYC_A+:4] <= c_PRE; + r_sdr_addr_1P[CYC_A+10] <= PRE_ALL; + r_pre_allbank <= 1'b1; + if (CHECK_ACT_BA == 4) + begin + r_act_row_1P[0][ROW_WIDTH] <= 1'b0; + r_act_row_1P[1][ROW_WIDTH] <= 1'b0; + r_act_row_1P[2][ROW_WIDTH] <= 1'b0; + r_act_row_1P[3][ROW_WIDTH] <= 1'b0; + end + r_dly_cnt_a_1P <= {DLY_CNT_A_WIDTH{1'b0}}; + end + end + else + begin + r_sdr_state_1P <= s_IDLE; + end + end + end + + s_REF: + begin + if (r_dly_cnt_a_1P == nRFC) + begin + r_sdr_state_1P <= s_IDLE; + r_ref_req_1P[0] <= 1'b0; + r_dly_cnt_d_1P <= {DLY_CNT_D_WIDTH{1'b0}}; + end + end + endcase + end +end + +assign o_sdr_state = r_sdr_state_1P; +assign o_sdr_init_done = r_sdr_init_done_1P; +assign o_wr_ack = r_wr_ack_1P; +genvar i; +generate + for (i=1; i<=RD_PIPE; i=i+1) + begin: readback + always@(posedge i_arst or posedge i_sysclk) + begin + if (i_arst) + r_rd_ack_P[i] <= 1'b0; + else + r_rd_ack_P[i] <= r_rd_ack_P[i-1]; + end + end +endgenerate +assign o_rd_ack = r_rd_ack_P[0]; +assign o_ref_req = r_ref_req_1P[0]; +assign o_rd_valid = r_rd_ack_P[RD_PIPE]; +assign o_dout = r_sdr_dqin_1P; + +assign o_sdr_CKE = r_sdr_cke_1P; +genvar j; +generate + for (j=0; j i_we, +i_sysclk => i_sysclk, +i_arst => i_arst, +i_sdrclk => i_sdrclk, +i_tACclk => i_tACclk, +i_pll_locked => i_pll_locked, +i_re => i_re, +i_last => i_last, +o_dbg_tRTW_done => o_dbg_tRTW_done, +o_dbg_ref_req => o_dbg_ref_req, +o_dbg_wr_ack => o_dbg_wr_ack, +o_dbg_rd_ack => o_dbg_rd_ack, +o_dbg_n_CS => o_dbg_n_CS, +o_dbg_n_RAS => o_dbg_n_RAS, +o_dbg_n_CAS => o_dbg_n_CAS, +o_dbg_n_WE => o_dbg_n_WE, +o_dbg_BA => o_dbg_BA, +o_dbg_ADDR => o_dbg_ADDR, +o_dbg_DATA_out => o_dbg_DATA_out, +o_dbg_DATA_in => o_dbg_DATA_in, +i_addr => i_addr, +i_din => i_din, +o_dout => o_dout, +o_sdr_state => o_sdr_state, +o_sdr_init_done => o_sdr_init_done, +o_wr_ack => o_wr_ack, +o_rd_ack => o_rd_ack, +o_ref_req => o_ref_req, +o_rd_valid => o_rd_valid, +o_sdr_CKE => o_sdr_CKE, +o_sdr_n_CS => o_sdr_n_CS, +o_sdr_n_RAS => o_sdr_n_RAS, +o_sdr_n_CAS => o_sdr_n_CAS, +o_sdr_n_WE => o_sdr_n_WE, +o_sdr_BA => o_sdr_BA, +o_sdr_ADDR => o_sdr_ADDR, +o_sdr_DATA => o_sdr_DATA, +o_sdr_DATA_oe => o_sdr_DATA_oe, +i_sdr_DATA => i_sdr_DATA, +o_sdr_DQM => o_sdr_DQM, +o_dbg_dly_cnt_b => o_dbg_dly_cnt_b, +o_dbg_tRCD_done => o_dbg_tRCD_done); +------------------------ End INSTANTIATION Template --------- diff --git a/hw/efinix_fpga/ip/sdram/settings.json b/hw/efinix_fpga/ip/sdram/settings.json new file mode 100644 index 0000000..b869f62 --- /dev/null +++ b/hw/efinix_fpga/ip/sdram/settings.json @@ -0,0 +1,44 @@ +{ + "args": [ + "-o", + "sdram", + "--base_path", + "/home/byron/Projects/super6502/hw/efinix_fpga/ip", + "--vlnv", + { + "vendor": "efinixinc.com", + "library": "memory_controller", + "name": "efx_sdram_controller", + "version": "1.5" + } + ], + "conf": { + "fCK_MHz": "200", + "tIORT_u": "2", + "CL": "3", + "DDIO_TYPE": "0", + "DQ_GROUP": "2", + "ROW_WIDTH": "13", + "COL_WIDTH": "9", + "tPWRUP": "200000", + "tRAS": "44", + "tRAS_MAX": "120000", + "tRC": "66", + "tRCD": "20", + "tREF": "64000000", + "tRFC ": "66", + "tRP": "20", + "SDRAM_MODE": "0", + "DATA_RATE": "2" + }, + "output": { + "external_source": [ + "/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v", + "/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram_define.vh", + "/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram_tmpl.vhd", + "/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram_tmpl.v" + ] + }, + "sw_version": "2021.2.323", + "generated_date": "2022-06-12T00:16:17.036312" +} \ No newline at end of file diff --git a/hw/efinix_fpga/memory_mapper.sv b/hw/efinix_fpga/memory_mapper.sv new file mode 100644 index 0000000..00858d7 --- /dev/null +++ b/hw/efinix_fpga/memory_mapper.sv @@ -0,0 +1,58 @@ +/* + * This is based off of the 74LS610, but is not identical. + Some of the inputs are flipped so that they are all active high, + and some outputs are reordered. + Notably, when MM is low, MA is present on MO0-MO4, not 8 to 11. + */ + +module memory_mapper( + input clk, + input rst, + + input rw, + input cs, + + input MM_cs, + + input [3:0] RS, + + input [3:0] MA, + + input logic [11:0] data_in, + output logic [11:0] data_out, + + output logic [11:0] MO +); + +logic [11:0] RAM [16]; + +logic MM; + + +always_ff @(posedge clk) begin + if (rst) begin + MM <= '0; + end else begin + if (MM_cs & ~rw) begin // can't read MM but do you really need too? + MM = |data_in; + end + + if (cs & ~rw) begin // write to registers + RAM[RS] <= data_in; + end else if (cs & rw) begin // read registers + data_out <= RAM[RS]; + end + end +end + + +always_comb begin + if (MM) begin // normal mode + MO = RAM[MA]; + end else begin // passthrough mode + MO = {8'b0, MA}; + end +end + +endmodule + diff --git a/hw/efinix_fpga/outflow/super6502.err.log b/hw/efinix_fpga/outflow/super6502.err.log new file mode 100644 index 0000000..d9c4ab7 --- /dev/null +++ b/hw/efinix_fpga/outflow/super6502.err.log @@ -0,0 +1,159 @@ + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:12 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'cpu_clk' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:92) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:40 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'memory_mapper' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:118) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:42:28 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:85) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 12:05:39 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:85) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:19:40 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] overwriting previous definition of module 'sdram' (VERI-1206) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:174) +[EFX-0010 VERI-ERROR] module 'axi4_sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1006) +[EFX-0010 VERI-ERROR] module 'dual_clock_fifo_wrapper_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1327) +[EFX-0010 VERI-ERROR] module 'dual_clock_fifo_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1740) +[EFX-0010 VERI-ERROR] module 'efx_sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:2308) +[EFX-0010 VERI-ERROR] module 'sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:2585) +[EFX-0010 VERI-ERROR] module 'sdram_fsm_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3419) +[EFX-0010 VERI-ERROR] module 'sdram_io_block_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3784) +[EFX-0010 VERI-ERROR] module 'sdram_simple_dual_port_ram_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3948) +[EFX-0010 VERI-ERROR] module 'sync_ddio_group_in_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:4066) +[EFX-0010 VERI-ERROR] module 'sync_ddio_group_out_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:4194) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:04 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:55 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:29 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:85) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:33 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:85) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:05:46 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] 'DQ_GROUP' is not a constant (VERI-1188) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0010 VERI-ERROR] module 'sdram_adapter' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:68) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:09 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] 'DQ_GROUP' is not a constant (VERI-1188) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0010 VERI-ERROR] module 'sdram_adapter' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:68) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:21 +/////////////////////////////////// + +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. diff --git a/hw/efinix_fpga/outflow/super6502.info.log b/hw/efinix_fpga/outflow/super6502.info.log new file mode 100644 index 0000000..05dc356 --- /dev/null +++ b/hw/efinix_fpga/outflow/super6502.info.log @@ -0,0 +1,397 @@ + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:12 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0010 VERI-ERROR] instantiating unknown module 'cpu_clk' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:92) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:40 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0010 VERI-ERROR] instantiating unknown module 'memory_mapper' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:118) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:42:28 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0012 VERI-INFO] compiling module 'memory_mapper' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:8) +[EFX-0012 VERI-INFO] extracting RAM for identifier 'RAM' (VERI-2571) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:27) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) +[EFX-0012 VERI-INFO] compiling module 'addr_decode' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/addr_decode.sv:1) +[EFX-0012 VERI-INFO] compiling module 'sdram' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:1) +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:85) +[EFX-0012 VERI-INFO] module 'sdram' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:1) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 12:05:39 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0012 VERI-INFO] compiling module 'memory_mapper' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:8) +[EFX-0012 VERI-INFO] extracting RAM for identifier 'RAM' (VERI-2571) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:27) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) +[EFX-0012 VERI-INFO] compiling module 'addr_decode' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/addr_decode.sv:1) +[EFX-0012 VERI-INFO] compiling module 'sdram' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:1) +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:85) +[EFX-0012 VERI-INFO] module 'sdram' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram.sv:1) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:19:40 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0010 VERI-ERROR] overwriting previous definition of module 'sdram' (VERI-1206) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:174) +[EFX-0012 VERI-INFO] previous definition of design element 'sdram' is here (VERI-2142) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:87) +[EFX-0010 VERI-ERROR] module 'axi4_sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1006) +[EFX-0010 VERI-ERROR] module 'dual_clock_fifo_wrapper_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1327) +[EFX-0010 VERI-ERROR] module 'dual_clock_fifo_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:1740) +[EFX-0010 VERI-ERROR] module 'efx_sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:2308) +[EFX-0010 VERI-ERROR] module 'sdram_controller_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:2585) +[EFX-0010 VERI-ERROR] module 'sdram_fsm_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3419) +[EFX-0010 VERI-ERROR] module 'sdram_io_block_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3784) +[EFX-0010 VERI-ERROR] module 'sdram_simple_dual_port_ram_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:3948) +[EFX-0010 VERI-ERROR] module 'sync_ddio_group_in_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:4066) +[EFX-0010 VERI-ERROR] module 'sync_ddio_group_out_2fa8b2362acf42f5841c22a03034c8fb' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:4194) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:04 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0011 VERI-WARNING] port 'i_we' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_dbg_tRTW_done' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:55 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0012 VERI-INFO] 'sdram' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v:49) +[EFX-0011 VERI-WARNING] port 'i_we' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_dbg_tRTW_done' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:29 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0012 VERI-INFO] compiling module 'memory_mapper' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:8) +[EFX-0012 VERI-INFO] extracting RAM for identifier 'RAM' (VERI-2571) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:27) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) +[EFX-0012 VERI-INFO] compiling module 'addr_decode' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/addr_decode.sv:1) +[EFX-0012 VERI-INFO] compiling module 'sdram_adapter' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:85) +[EFX-0012 VERI-INFO] module 'sdram_adapter' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:33 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0012 VERI-INFO] compiling module 'super6502' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0012 VERI-INFO] compiling module 'memory_mapper' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:8) +[EFX-0012 VERI-INFO] extracting RAM for identifier 'RAM' (VERI-2571) (/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv:27) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) +[EFX-0012 VERI-INFO] compiling module 'addr_decode' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/addr_decode.sv:1) +[EFX-0012 VERI-INFO] compiling module 'sdram_adapter' (VERI-1018) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] instantiating unknown module 'sdram_platform' (VERI-1063) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:85) +[EFX-0012 VERI-INFO] module 'sdram_adapter' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0012 VERI-INFO] module 'super6502' remains a black box due to errors in its contents (VERI-1073) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:2) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:05:46 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0012 VERI-INFO] undeclared symbol 'w_areset', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:21) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sysclk', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:22) +[EFX-0012 VERI-INFO] undeclared symbol 'r_we_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:27) +[EFX-0012 VERI-INFO] undeclared symbol 'r_re_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:28) +[EFX-0012 VERI-INFO] undeclared symbol 'r_last_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:29) +[EFX-0012 VERI-INFO] undeclared symbol 'r_addr_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:30) +[EFX-0012 VERI-INFO] undeclared symbol 'r_din_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:31) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dout', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:32) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_state', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:33) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_init_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:34) +[EFX-0012 VERI-INFO] undeclared symbol 'w_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:35) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:36) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_valid', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:38) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_CKE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:40) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:41) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:42) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:43) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:44) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:45) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:46) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:47) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA_oe', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:48) +[EFX-0012 VERI-INFO] undeclared symbol 'DQ_GROUP', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0012 VERI-INFO] undeclared symbol 'DQ_WIDTH', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DQM', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:50) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_dly_cnt_b', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:52) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRCD_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:53) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRTW_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:54) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ref_req', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:55) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:56) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:57) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:58) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:59) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:60) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:61) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:62) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:63) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_out', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:64) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_in', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:65) +[EFX-0010 VERI-ERROR] 'DQ_GROUP' is not a constant (VERI-1188) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0010 VERI-ERROR] module 'sdram_adapter' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:68) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:09 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0012 VERI-INFO] undeclared symbol 'w_areset', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:21) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sysclk', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:22) +[EFX-0012 VERI-INFO] undeclared symbol 'r_we_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:27) +[EFX-0012 VERI-INFO] undeclared symbol 'r_re_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:28) +[EFX-0012 VERI-INFO] undeclared symbol 'r_last_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:29) +[EFX-0012 VERI-INFO] undeclared symbol 'r_addr_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:30) +[EFX-0012 VERI-INFO] undeclared symbol 'r_din_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:31) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dout', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:32) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_state', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:33) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_init_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:34) +[EFX-0012 VERI-INFO] undeclared symbol 'w_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:35) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:36) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_valid', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:38) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_CKE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:40) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:41) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:42) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:43) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:44) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:45) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:46) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:47) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA_oe', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:48) +[EFX-0012 VERI-INFO] undeclared symbol 'DQ_GROUP', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0012 VERI-INFO] undeclared symbol 'DQ_WIDTH', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DQM', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:50) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_dly_cnt_b', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:52) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRCD_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:53) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRTW_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:54) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ref_req', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:55) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:56) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:57) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:58) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:59) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:60) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:61) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:62) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:63) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_out', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:64) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_in', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:65) +[EFX-0010 VERI-ERROR] 'DQ_GROUP' is not a constant (VERI-1188) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:49) +[EFX-0010 VERI-ERROR] module 'sdram_adapter' is ignored due to previous errors (VERI-1072) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:68) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:21 +/////////////////////////////////// + +[EFX-0012 VERI-INFO] default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +[EFX-0012 VERI-INFO] undeclared symbol 'w_areset', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:21) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sysclk', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:22) +[EFX-0012 VERI-INFO] undeclared symbol 'r_we_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:27) +[EFX-0012 VERI-INFO] undeclared symbol 'r_re_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:28) +[EFX-0012 VERI-INFO] undeclared symbol 'r_last_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:29) +[EFX-0012 VERI-INFO] undeclared symbol 'r_addr_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:30) +[EFX-0012 VERI-INFO] undeclared symbol 'r_din_1P', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:31) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dout', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:32) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_state', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:33) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_init_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:34) +[EFX-0012 VERI-INFO] undeclared symbol 'w_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:35) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:36) +[EFX-0012 VERI-INFO] undeclared symbol 'w_rd_valid', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:38) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_CKE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:40) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:41) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:42) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:43) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:44) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:45) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:46) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:47) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DATA_oe', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:48) +[EFX-0012 VERI-INFO] undeclared symbol 'w_sdr_DQM', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:50) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_dly_cnt_b', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:52) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRCD_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:53) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_tRTW_done', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:54) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ref_req', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:55) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_wr_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:56) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_rd_ack', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:57) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:58) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_RAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:59) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_CAS', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:60) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_n_WE', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:61) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_BA', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:62) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_ADDR', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:63) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_out', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:64) +[EFX-0012 VERI-INFO] undeclared symbol 'w_dbg_DATA_in', assumed default net type 'wire' (VERI-2561) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:65) +[EFX-0010 VERI-ERROR] cannot find port 'rst' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:155) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'clk_50' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:156) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'cpu_clk' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:157) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'addr' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:158) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'sdram_cs' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:159) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'rwb' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:160) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'data_in' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:161) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'data_out' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:162) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CLK' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:165) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_ADDR' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:166) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_BA' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:167) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:168) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CKE' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:169) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_CS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:170) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_DQ' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:171) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_UDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:172) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_LDQM' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:173) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_RAS_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:174) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0010 VERI-ERROR] cannot find port 'DRAM_WE_N' on this module (VERI-1010) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:175) +[EFX-0012 VERI-INFO] 'sdram_adapter' is declared here (VERI-1310) (/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv:1) +[EFX-0011 VERI-WARNING] port 'i_sysclk' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_pll_reset' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. diff --git a/hw/efinix_fpga/outflow/super6502.map.out b/hw/efinix_fpga/outflow/super6502.map.out new file mode 100644 index 0000000..515046e --- /dev/null +++ b/hw/efinix_fpga/outflow/super6502.map.out @@ -0,0 +1,113 @@ +[EFX-0000 INFO] Efinix FPGA Synthesis. +[EFX-0000 INFO] Version: 2021.2.323.4.6 +[EFX-0000 INFO] Compiled: May 12 2022. +[EFX-0000 INFO] +[EFX-0000 INFO] Copyright (C) 2013 - 2021 Efinix Inc. All rights reserved. + +INFO: Read project database "/home/byron/Projects/super6502/hw/efinix_fpga/super6502.xml" +INFO: ***** Beginning Analysis ... ***** +INFO: default VHDL library search path is now "/home/byron/Software/efinity/2021.2/sim_models/vhdl/packages/vhdl_2008" (VHDL-1504) +-- Analyzing Verilog file '/home/byron/Software/efinity/2021.2/sim_models/maplib/efinix_maplib.v' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/crc7.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/memory_mapper.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/uart.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/HexDriver.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/addr_decode.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/board_io.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/SevenSeg.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/sd_controller.sv' (VERI-1482) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv' (VERI-1482) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(21): INFO: undeclared symbol 'w_areset', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(22): INFO: undeclared symbol 'w_sysclk', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(27): INFO: undeclared symbol 'r_we_1P', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(28): INFO: undeclared symbol 'r_re_1P', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(29): INFO: undeclared symbol 'r_last_1P', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(30): INFO: undeclared symbol 'r_addr_1P', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(31): INFO: undeclared symbol 'r_din_1P', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(32): INFO: undeclared symbol 'w_dout', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(33): INFO: undeclared symbol 'w_sdr_state', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(34): INFO: undeclared symbol 'w_sdr_init_done', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(35): INFO: undeclared symbol 'w_wr_ack', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(36): INFO: undeclared symbol 'w_rd_ack', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(38): INFO: undeclared symbol 'w_rd_valid', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(40): INFO: undeclared symbol 'w_sdr_CKE', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(41): INFO: undeclared symbol 'w_sdr_n_CS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(42): INFO: undeclared symbol 'w_sdr_n_RAS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(43): INFO: undeclared symbol 'w_sdr_n_CAS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(44): INFO: undeclared symbol 'w_sdr_n_WE', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(45): INFO: undeclared symbol 'w_sdr_BA', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(46): INFO: undeclared symbol 'w_sdr_ADDR', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(47): INFO: undeclared symbol 'w_sdr_DATA', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(48): INFO: undeclared symbol 'w_sdr_DATA_oe', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(50): INFO: undeclared symbol 'w_sdr_DQM', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(52): INFO: undeclared symbol 'w_dbg_dly_cnt_b', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(53): INFO: undeclared symbol 'w_dbg_tRCD_done', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(54): INFO: undeclared symbol 'w_dbg_tRTW_done', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(55): INFO: undeclared symbol 'w_dbg_ref_req', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(56): INFO: undeclared symbol 'w_dbg_wr_ack', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(57): INFO: undeclared symbol 'w_dbg_rd_ack', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(58): INFO: undeclared symbol 'w_dbg_n_CS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(59): INFO: undeclared symbol 'w_dbg_n_RAS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(60): INFO: undeclared symbol 'w_dbg_n_CAS', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(61): INFO: undeclared symbol 'w_dbg_n_WE', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(62): INFO: undeclared symbol 'w_dbg_BA', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(63): INFO: undeclared symbol 'w_dbg_ADDR', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(64): INFO: undeclared symbol 'w_dbg_DATA_out', assumed default net type 'wire' (VERI-2561) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(65): INFO: undeclared symbol 'w_dbg_DATA_in', assumed default net type 'wire' (VERI-2561) +-- Analyzing Verilog file '/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram/sdram.v' (VERI-1482) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(155): ERROR: cannot find port 'rst' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(156): ERROR: cannot find port 'clk_50' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(157): ERROR: cannot find port 'cpu_clk' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(158): ERROR: cannot find port 'addr' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(159): ERROR: cannot find port 'sdram_cs' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(160): ERROR: cannot find port 'rwb' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(161): ERROR: cannot find port 'data_in' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(162): ERROR: cannot find port 'data_out' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(165): ERROR: cannot find port 'DRAM_CLK' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(166): ERROR: cannot find port 'DRAM_ADDR' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(167): ERROR: cannot find port 'DRAM_BA' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(168): ERROR: cannot find port 'DRAM_CAS_N' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(169): ERROR: cannot find port 'DRAM_CKE' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(170): ERROR: cannot find port 'DRAM_CS_N' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(171): ERROR: cannot find port 'DRAM_DQ' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(172): ERROR: cannot find port 'DRAM_UDQM' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(173): ERROR: cannot find port 'DRAM_LDQM' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(174): ERROR: cannot find port 'DRAM_RAS_N' on this module (VERI-1010) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(175): ERROR: cannot find port 'DRAM_WE_N' on this module (VERI-1010) +[EFX-0021 ERROR] Verific elaboration of module 'super6502' failed. +INFO: Analysis took 0.0226114 seconds. +INFO: Analysis took 0.02 seconds (approximately) in total CPU time. +INFO: Analysis virtual memory usage: begin = 186.592 MB, end = 187.592 MB, delta = 1 MB +INFO: Analysis resident set memory usage: begin = 73.968 MB, end = 77.944 MB, delta = 3.976 MB +INFO: Analysis peak resident set memory usage = 634.104 MB +INFO: ***** Ending Analysis ... ***** +INFO: ***** Beginning Elaboration ... ***** +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/sdram_adapter.sv(1): INFO: 'sdram_adapter' is declared here (VERI-1310) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(176): WARNING: port 'i_sysclk' is not connected on this instance (VERI-2435) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(176): WARNING: port 'o_pll_reset' remains unconnected for this instance (VERI-1927) +/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv(204): WARNING: port 'addr' is not connected on this instance (VERI-2435) +INFO: Elaboration took 0.00132981 seconds. +INFO: Elaboration took 0 seconds (approximately) in total CPU time. +INFO: Elaboration virtual memory usage: begin = 187.592 MB, end = 187.592 MB, delta = 0 MB +INFO: Elaboration resident set memory usage: begin = 77.944 MB, end = 77.944 MB, delta = 0 MB +INFO: Elaboration peak resident set memory usage = 634.104 MB +INFO: ***** Ending Elaboration ... ***** diff --git a/hw/efinix_fpga/outflow/super6502.warn.log b/hw/efinix_fpga/outflow/super6502.warn.log new file mode 100644 index 0000000..b8458e9 --- /dev/null +++ b/hw/efinix_fpga/outflow/super6502.warn.log @@ -0,0 +1,93 @@ + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:12 +/////////////////////////////////// + + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:36:40 +/////////////////////////////////// + + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 09, 2022 21:42:28 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 12:05:39 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:19:40 +/////////////////////////////////// + + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:04 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'i_we' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_dbg_tRTW_done' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:20:55 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'i_we' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_dbg_tRTW_done' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:29 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 11, 2022 19:21:33 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_in' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:115) +[EFX-0011 VERI-WARNING] actual bit length 8 differs from formal bit length 12 for port 'data_out' (VERI-1330) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:116) + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:05:46 +/////////////////////////////////// + + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:09 +/////////////////////////////////// + + +/////////////////////////////////// +// Efinity Synthesis Started +// Jun 13, 2022 19:08:21 +/////////////////////////////////// + +[EFX-0011 VERI-WARNING] port 'i_sysclk' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'o_pll_reset' remains unconnected for this instance (VERI-1927) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:176) +[EFX-0011 VERI-WARNING] port 'addr' is not connected on this instance (VERI-2435) (/home/byron/Projects/super6502/hw/efinix_fpga/super6502.sv:204) diff --git a/hw/efinix_fpga/sd_controller.sv b/hw/efinix_fpga/sd_controller.sv new file mode 100644 index 0000000..54b7001 --- /dev/null +++ b/hw/efinix_fpga/sd_controller.sv @@ -0,0 +1,235 @@ +module sd_controller( + input clk, + input sd_clk, + input rst, + + input [2:0] addr, + input [7:0] data, + input cs, + input rw, + + input i_sd_cmd, + output logic o_sd_cmd, + + input i_sd_data, + output logic o_sd_data, + + output logic [7:0] data_out +); + +logic [31:0] arg; +logic [5:0] cmd; + +logic [47:0] rxcmd_buf; +logic [31:0] rx_val; + +logic [7:0] rxdata_buf [512]; +logic [8:0] data_count; + +logic [15:0] data_crc; + + +assign rx_val = rxcmd_buf[39:8]; + +always_comb begin + data_out = 'x; + + if (addr < 4'h4) begin + data_out = rx_val[8 * addr +: 8]; + end else if (addr == 4'h4) begin + data_out = {data_flag, read_flag}; + end else if (addr == 4'h5) begin + data_out = rxdata_buf[data_count]; + end +end + +logic read_flag, next_read_flag; +logic data_flag, next_data_flag; + +typedef enum bit [2:0] {IDLE, LOAD, CRC, TXCMD, RXCMD, TXDATA, RXDATA, RXDCRC} macro_t; +struct packed { + macro_t macro; + logic [8:0] count; + logic [2:0] d_bit_count; +} state, next_state; + +always_ff @(posedge clk) begin + if (rst) begin + state.macro <= IDLE; + state.count <= '0; + state.d_bit_count <= '1; + read_flag <= '0; + data_flag <= '0; + data_count <= '0; + end else begin + if (state.macro == TXCMD || state.macro == CRC) begin + if (sd_clk) begin + state <= next_state; + end + end else if (state.macro == RXCMD || state.macro == RXDATA || state.macro == RXDCRC) begin + if (~sd_clk) begin + state <= next_state; + end + end else begin + state <= next_state; + end + end + + if (sd_clk) begin + read_flag <= next_read_flag; + data_flag <= next_data_flag; + end + + if (cs & ~rw) begin + if (addr < 4'h4) begin + arg[8 * addr +: 8] <= data; + end else if (addr == 4'h4) begin + cmd <= data[6:0]; + end + end + + if (cs & addr == 4'h5 && sd_clk) begin + data_count <= data_count + 8'b1; + end + + if (state.macro == RXCMD) begin + rxcmd_buf[6'd46-state.count] <= i_sd_cmd; //we probabily missed bit 47 + end + + if (state.macro == RXDATA && ~sd_clk) begin + rxdata_buf[state.count][state.d_bit_count] <= i_sd_data; + end + + if (state.macro == RXDCRC && ~sd_clk) begin + data_crc[4'd15-state.count] <= i_sd_data; + data_count <= '0; + end + +end + +logic [6:0] crc; +logic load_crc; +logic crc_valid; +logic [39:0] _packet; +assign _packet = {1'b0, 1'b1, cmd, arg}; +logic [47:0] packet_crc; +assign packet_crc = {_packet, crc, 1'b1}; + +crc7 u_crc7( + .clk(clk), + .rst(rst), + .load(load_crc), + .data_in(_packet), + .crc_out(crc), + .valid(crc_valid) +); + +always_comb begin + next_state = state; + next_read_flag = read_flag; + next_data_flag = data_flag; + + case (state.macro) + IDLE: begin + if (~i_sd_cmd) begin // receive data if sd pulls cmd low + next_state.macro = RXCMD; + end + + if (~i_sd_data) begin + next_state.d_bit_count = '1; + next_state.macro = RXDATA; + end + + if (addr == 4'h4 & cs & ~rw) begin // transmit if cpu writes to cmd + next_state.macro = LOAD; + end + + if (addr == 4'h4 & cs & rw) begin + next_read_flag = '0; + end + + if (addr == 4'h5 & cs) begin + next_data_flag = '0; + end + end + + LOAD: begin + next_state.macro = CRC; + end + + CRC: begin + next_state.macro = TXCMD; + end + + TXCMD: begin + if (state.count < 47) begin + next_state.count = state.count + 6'b1; + end else begin + next_state.macro = IDLE; + next_state.count = '0; + end + end + + RXCMD: begin + if (state.count < 47) begin + next_state.count = state.count + 6'b1; + end else begin + next_read_flag = '1; + next_state.macro = IDLE; + next_state.count = '0; + end + end + + RXDATA: begin + if (state.count < 511 || (state.count == 511 && state.d_bit_count > 0)) begin + if (state.d_bit_count == 8'h0) begin + next_state.count = state.count + 9'b1; + end + next_state.d_bit_count = state.d_bit_count - 3'h1; + end else begin + next_data_flag = '1; + next_state.macro = RXDCRC; + next_state.count = '0; + end + end + + RXDCRC: begin + if (state.count < 16) begin + next_state.count = state.count + 9'b1; + end else begin + next_state.macro = IDLE; + next_state.count = '0; + end + end + + default: begin + next_state.macro = IDLE; + next_state.count = '0; + end + endcase +end + +always_comb begin + o_sd_cmd = '1; //default to 1 + o_sd_data = '1; + + load_crc = '0; + + case (state.macro) + IDLE:; + + CRC: begin + load_crc = '1; + end + + TXCMD: begin + o_sd_cmd = packet_crc[6'd47 - state.count]; + end + + RXCMD:; + + default:; + endcase +end + +endmodule diff --git a/hw/efinix_fpga/sdram_adapter.sv b/hw/efinix_fpga/sdram_adapter.sv new file mode 100644 index 0000000..ace4eba --- /dev/null +++ b/hw/efinix_fpga/sdram_adapter.sv @@ -0,0 +1,68 @@ +module sdram_adapter( + input i_sysclk, + input i_sdrclk, + input i_tACclk, + input i_pll_locked, + output o_pll_reset, + output o_sdr_CKE, + output o_sdr_n_CS, + output o_sdr_n_WE, + output o_sdr_n_RAS, + output o_sdr_n_CAS, + output [1:0]o_sdr_BA, + output [12:0]o_sdr_ADDR, + input [15:0]i_sdr_DATA, + output [15:0]o_sdr_DATA, + output [15:0]o_sdr_DATA_oe, + output [1:0]o_sdr_DQM +); + +sdram u_sdram ( + .i_arst (w_areset), + .i_sysclk (w_sysclk), + .i_sdrclk (i_sdrclk), + .i_tACclk (i_tACclk), + .i_pll_locked (1'b1), + + .i_we (r_we_1P), + .i_re (r_re_1P), + .i_last (r_last_1P), + .i_addr (r_addr_1P), + .i_din (r_din_1P), + .o_dout (w_dout), + .o_sdr_state (w_sdr_state), + .o_sdr_init_done (w_sdr_init_done), + .o_wr_ack (w_wr_ack), + .o_rd_ack (w_rd_ack), + .o_ref_req (), + .o_rd_valid (w_rd_valid), + + .o_sdr_CKE (w_sdr_CKE), + .o_sdr_n_CS (w_sdr_n_CS), + .o_sdr_n_RAS (w_sdr_n_RAS), + .o_sdr_n_CAS (w_sdr_n_CAS), + .o_sdr_n_WE (w_sdr_n_WE), + .o_sdr_BA (w_sdr_BA), + .o_sdr_ADDR (w_sdr_ADDR), + .o_sdr_DATA (w_sdr_DATA), + .o_sdr_DATA_oe (w_sdr_DATA_oe), + .i_sdr_DATA ({{16{1'b0}}, i_sdr_DATA}), + .o_sdr_DQM (w_sdr_DQM), + + .o_dbg_dly_cnt_b (w_dbg_dly_cnt_b), + .o_dbg_tRCD_done (w_dbg_tRCD_done), + .o_dbg_tRTW_done (w_dbg_tRTW_done), + .o_dbg_ref_req (w_dbg_ref_req), + .o_dbg_wr_ack (w_dbg_wr_ack), + .o_dbg_rd_ack (w_dbg_rd_ack), + .o_dbg_n_CS (w_dbg_n_CS), + .o_dbg_n_RAS (w_dbg_n_RAS), + .o_dbg_n_CAS (w_dbg_n_CAS), + .o_dbg_n_WE (w_dbg_n_WE), + .o_dbg_BA (w_dbg_BA), + .o_dbg_ADDR (w_dbg_ADDR), + .o_dbg_DATA_out (w_dbg_DATA_out), + .o_dbg_DATA_in (w_dbg_DATA_in) +); + +endmodule diff --git a/hw/efinix_fpga/super6502.peri.pre_import.xml b/hw/efinix_fpga/super6502.peri.pre_import.xml new file mode 100644 index 0000000..8a7e173 --- /dev/null +++ b/hw/efinix_fpga/super6502.peri.pre_import.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hw/efinix_fpga/super6502.peri.xml b/hw/efinix_fpga/super6502.peri.xml new file mode 100644 index 0000000..105f9ed --- /dev/null +++ b/hw/efinix_fpga/super6502.peri.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hw/efinix_fpga/super6502.sv b/hw/efinix_fpga/super6502.sv new file mode 100644 index 0000000..89f3a74 --- /dev/null +++ b/hw/efinix_fpga/super6502.sv @@ -0,0 +1,256 @@ + +module super6502( + input clk_50, + input pll_inst1_CLKOUT0, + input logic rst_n, + input logic button_1, + + input logic [15:0] cpu_addr, + inout logic [7:0] cpu_data, + + input logic cpu_vpb, + input logic cpu_mlb, + input logic cpu_rwb, + input logic cpu_sync, + + output logic cpu_led, + output logic cpu_resb, + output logic cpu_rdy, + output logic cpu_sob, + output logic cpu_irqb, + output logic cpu_phi2, + output logic cpu_be, + output logic cpu_nmib, + + output logic [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, + + input logic UART_RXD, + output logic UART_TXD, + + input [7:0] SW, + output logic [7:0] LED, + + inout logic [15: 2] ARDUINO_IO, + + ///////// SDRAM ///////// + output DRAM_CLK, + output DRAM_CKE, + output [12: 0] DRAM_ADDR, + output [ 1: 0] DRAM_BA, + inout [15: 0] DRAM_DQ, + output DRAM_LDQM, + output DRAM_UDQM, + output DRAM_CS_N, + output DRAM_WE_N, + output DRAM_CAS_N, + output DRAM_RAS_N + ); + +logic rst; +assign rst = ~rst_n; + +logic clk; + +logic [7:0] cpu_data_in; +assign cpu_data_in = cpu_data; + +logic [7:0] cpu_data_out; +assign cpu_data = cpu_rwb ? cpu_data_out : 'z; + +logic o_sd_cmd, i_sd_cmd; +logic o_sd_data, i_sd_data; + +assign ARDUINO_IO[11] = o_sd_cmd ? 1'bz : 1'b0; +assign ARDUINO_IO[12] = o_sd_data ? 1'bz : 1'b0; +assign ARDUINO_IO[13] = cpu_phi2; +assign ARDUINO_IO[6] = 1'b1; + +assign i_sd_cmd = ARDUINO_IO[11]; +assign i_sd_data = ARDUINO_IO[12]; + +logic [7:0] rom_data_out; +logic [7:0] sdram_data_out; +logic [7:0] uart_data_out; +logic [7:0] irq_data_out; +logic [7:0] board_io_data_out; +logic [7:0] mm_data_out; +logic [7:0] sd_data_out; + +logic sdram_cs; +logic rom_cs; +logic hex_cs; +logic uart_cs; +logic irq_cs; +logic board_io_cs; +logic mm_cs1; +logic mm_cs2; +logic sd_cs; + +assign clk = pll_inst1_CLKOUT0; + +always @(posedge clk) begin + cpu_phi2 <= ~cpu_phi2; +end + +assign cpu_rdy = '1; +assign cpu_sob = '0; +assign cpu_resb = rst_n; +assign cpu_be = '1; +assign cpu_nmib = '1; +assign cpu_irqb = irq_data_out == 0; + +logic [11:0] mm_MO; + +logic [23:0] mm_addr; +assign mm_addr = {mm_MO, cpu_addr[11:0]}; + +memory_mapper memory_mapper( + .clk(clk), + .rst(rst), + .rw(cpu_rwb), + .cs(mm_cs1), + .MM_cs(mm_cs2), + .RS(cpu_addr[3:0]), + .MA(cpu_addr[15:12]), + .data_in(cpu_data_in), + .data_out(mm_data_out), + .MO(mm_MO) +); + +addr_decode decode( + .addr(mm_addr), + .sdram_cs(sdram_cs), + .rom_cs(rom_cs), + .hex_cs(hex_cs), + .uart_cs(uart_cs), + .irq_cs(irq_cs), + .board_io_cs(board_io_cs), + .mm_cs1(mm_cs1), + .mm_cs2(mm_cs2), + .sd_cs(sd_cs) +); + + +always_comb begin + if (sdram_cs) + cpu_data_out = sdram_data_out; + else if (rom_cs) + cpu_data_out = rom_data_out; + else if (uart_cs) + cpu_data_out = uart_data_out; + else if (irq_cs) + cpu_data_out = irq_data_out; + else if (board_io_cs) + cpu_data_out = board_io_data_out; + else if (mm_cs1) + cpu_data_out = mm_data_out; + else if (sd_cs) + cpu_data_out = sd_data_out; + else + cpu_data_out = 'x; +end + + +sdram_adapter u_sdram_adapter( + .rst(rst), + .clk_50(clk_50), + .cpu_clk(cpu_phi2), + .addr(mm_addr), + .sdram_cs(sdram_cs), + .rwb(cpu_rwb), + .data_in(cpu_data_in), + .data_out(sdram_data_out), + + //SDRAM + .DRAM_CLK(DRAM_CLK), //clk_sdram.clk + .DRAM_ADDR(DRAM_ADDR), //sdram_wire.addr + .DRAM_BA(DRAM_BA), //.ba + .DRAM_CAS_N(DRAM_CAS_N), //.cas_n + .DRAM_CKE(DRAM_CKE), //.cke + .DRAM_CS_N(DRAM_CS_N), //.cs_n + .DRAM_DQ(DRAM_DQ), //.dq + .DRAM_UDQM(DRAM_UDQM), //.dqm + .DRAM_LDQM(DRAM_LDQM), + .DRAM_RAS_N(DRAM_RAS_N), //.ras_n + .DRAM_WE_N(DRAM_WE_N) //.we_n +); + + +rom boot_rom( + .address(cpu_addr[14:0]), + .clock(clk), + .q(rom_data_out) +); + +SevenSeg segs( + .clk(clk), + .rst(rst), + .rw(cpu_rwb), + .data(cpu_data_in), + .cs(hex_cs), + .addr(cpu_addr[1:0]), + .HEX0(HEX0), .HEX1(HEX1), .HEX2(HEX2), .HEX3(HEX3), .HEX4(HEX4), .HEX5(HEX5) +); + +board_io board_io( + .clk(clk), + .rst(rst), + .rw(cpu_rwb), + .data_in(cpu_data_in), + .data_out(board_io_data_out), + .cs(board_io_cs), + .led(LED), + .sw(SW) +); + +logic uart_irq; + +uart uart( + .clk_50(clk_50), + .clk(clk), + .rst(rst), + .rw(cpu_rwb), + .data_in(cpu_data_in), + .cs(uart_cs), + .addr(cpu_addr[1:0]), + .RXD(UART_RXD), + .TXD(UART_TXD), + .irq(uart_irq), + .data_out(uart_data_out) +); + +sd_controller sd_controller( + .clk(clk), + .sd_clk(cpu_phi2), + .rst(rst), + .addr(cpu_addr[2:0]), + .data(cpu_data_in), + .cs(sd_cs), + .rw(cpu_rwb), + + .i_sd_cmd(i_sd_cmd), + .o_sd_cmd(o_sd_cmd), + + .i_sd_data(i_sd_data), + .o_sd_data(o_sd_data), + + .data_out(sd_data_out) +); + +always_ff @(posedge clk_50) begin + if (rst) + irq_data_out <= '0; + else if (irq_cs && ~cpu_rwb) + irq_data_out <= irq_data_out & cpu_data_in; + + else begin + if (~button_1) + irq_data_out[0] <= '1; + if (uart_irq) + irq_data_out[1] <= '1; + end + +end + +endmodule + diff --git a/hw/efinix_fpga/super6502.xml b/hw/efinix_fpga/super6502.xml new file mode 100644 index 0000000..d4bea2a --- /dev/null +++ b/hw/efinix_fpga/super6502.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hw/efinix_fpga/uart.sv b/hw/efinix_fpga/uart.sv new file mode 100644 index 0000000..e0a3922 --- /dev/null +++ b/hw/efinix_fpga/uart.sv @@ -0,0 +1,228 @@ +module uart( + input clk_50, + input clk, + input rst, + + input cs, + input rw, + input [7:0] data_in, + input [1:0] addr, + + input RXD, + + output logic TXD, + + output logic irq, + output logic [7:0] data_out +); + +//Handle reading and writing registers + +logic [7:0] tx_buf; +logic [7:0] rx_buf; +logic [7:0] status; + +logic tx_flag; +logic rx_flag; + +logic tx_flag_set; +logic tx_flag_clear; +logic rx_flag_set; +logic rx_flag_clear; + +assign status[0] = tx_flag | tx_flag_clear; +assign status[1] = rx_flag | rx_flag_set; + +assign irq = status[1]; + +always_ff @(posedge clk) begin + if (rst) begin + tx_flag_set <= '0; + rx_flag_clear <= '0; + tx_buf <= '0; + status[7:2] <= '0; + end + + if (cs) begin + if (~rw) begin + if (addr == 0) + tx_buf <= data_in; + end else begin + if (addr == 0) + data_out <= rx_buf; + if (addr == 1) + data_out <= status; + end + end + + if (~rw & cs && addr == 0) + tx_flag_set <= '1; + else + tx_flag_set <= '0; + + if (rw & cs && addr == 0) + rx_flag_clear <= '1; + else + rx_flag_clear <= '0; +end + +// tx state controller +typedef enum bit [2:0] {START, DATA, PARITY, STOP, IDLE} macro_t; +struct packed { + macro_t macro; + logic [3:0] count; +} tx_state, tx_next_state, rx_state, rx_next_state; +localparam logic [3:0] maxcount = 4'h7; + +// baud rate: 9600 +localparam baud = 9600; +localparam count = (50000000/baud)-1; +logic [14:0] tx_clkdiv; + +always_ff @(posedge clk_50) begin + if (rst) begin + tx_clkdiv <= 0; + tx_state.macro <= IDLE; + tx_state.count <= 3'b0; + tx_flag <= '0; + end else begin + if (tx_flag_set) + tx_flag <= '1; + else if (tx_flag_clear) + tx_flag <= '0; + + if (tx_clkdiv == count) begin + tx_clkdiv <= 0; + tx_state <= tx_next_state; + end else begin + tx_clkdiv <= tx_clkdiv + 15'b1; + end + end +end + +always_comb begin + tx_next_state = tx_state; + + unique case (tx_state.macro) + START: begin + tx_next_state.macro = DATA; + tx_next_state.count = 3'b0; + end + DATA: begin + if (tx_state.count == maxcount) begin + tx_next_state.macro = STOP; // or PARITY + tx_next_state.count = 3'b0; + end else begin + tx_next_state.count = tx_state.count + 3'b1; + tx_next_state.macro = DATA; + end + end + PARITY: begin + end + STOP: begin + tx_next_state.macro = IDLE; + tx_next_state.count = '0; + end + IDLE: begin + if (tx_flag) + tx_next_state.macro = START; + else + tx_next_state.macro = IDLE; + end + + default:; + endcase +end + +always_comb begin + TXD = '1; + tx_flag_clear = '0; + + unique case (tx_state.macro) + START: begin + TXD = '0; + end + DATA: begin + TXD = tx_buf[tx_state.count]; + end + PARITY: begin + + end + STOP: begin + tx_flag_clear = '1; + TXD = '1; + end + IDLE: begin + TXD = '1; + end + + default:; + endcase +end + +//basically in idle state we need to sample RXD very fast, +//then as soon as we detect that RXD is low, we start clkdiv +//going and then go into the start state. + +logic [14:0] rx_clkdiv; + +always_ff @(posedge clk_50) begin + if (rst) begin + rx_buf <= '0; + rx_clkdiv <= 0; + rx_state.macro <= IDLE; + rx_state.count <= 3'b0; + end else begin + if (rx_flag_set) + rx_flag <= '1; + else if (rx_flag_clear) + rx_flag <= '0; + + if (rx_state.macro == IDLE) begin // Sample constantly in idle state + rx_state <= rx_next_state; + rx_clkdiv <= count/15'h2; // offset rx clock by 1/2 phase + end else begin + if (rx_clkdiv == count) begin // other states are as usual + rx_clkdiv <= 0; + rx_state <= rx_next_state; + if (rx_state.macro == DATA) + rx_buf[rx_state.count] = RXD; + end else begin + rx_clkdiv <= rx_clkdiv + 15'b1; + end + end + end +end + +always_comb begin + rx_next_state = rx_state; + rx_flag_set = '0; + + unique case (rx_state.macro) + IDLE: begin + if (~RXD) + rx_next_state.macro = START; + end + START: begin + rx_next_state.macro = DATA; + rx_next_state.count = 3'b0; + end + DATA: begin + if (rx_state.count == maxcount) begin + rx_next_state.macro = STOP; + rx_next_state.count = 3'b0; + end else begin + rx_next_state.count = rx_state.count + 3'b1; + rx_next_state.macro = DATA; + end + end + PARITY: begin + end + STOP: begin + rx_flag_set = '1; + rx_next_state.macro = IDLE; + end + endcase +end + +endmodule diff --git a/hw/efinix_fpga/work_pt/peri_load.bak b/hw/efinix_fpga/work_pt/peri_load.bak new file mode 100644 index 0000000..b65d11b --- /dev/null +++ b/hw/efinix_fpga/work_pt/peri_load.bak @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hw/efinix_fpga/work_pt/peri_res.json b/hw/efinix_fpga/work_pt/peri_res.json new file mode 100644 index 0000000..da6bd0e --- /dev/null +++ b/hw/efinix_fpga/work_pt/peri_res.json @@ -0,0 +1,3 @@ +{ + "migration_launch_pt": "normal" +} \ No newline at end of file diff --git a/hw/efinix_fpga/work_syn/run_efx_map.sh b/hw/efinix_fpga/work_syn/run_efx_map.sh new file mode 100755 index 0000000..ac2d51b --- /dev/null +++ b/hw/efinix_fpga/work_syn/run_efx_map.sh @@ -0,0 +1 @@ +"/home/byron/Software/efinity/2021.2/bin/efx_map" --project "super6502" --root "super6502" --write-efx-verilog "/home/byron/Projects/super6502/hw/efinix_fpga/outflow/super6502.map.v" --write-premap-module "/home/byron/Projects/super6502/hw/efinix_fpga/outflow/super6502.elab.vdb" --binary-db "/home/byron/Projects/super6502/hw/efinix_fpga/super6502.vdb" --device "T20F256" --family "Trion" --mode "speed" --max_ram "-1" --max_mult "-1" --infer-clk-enable "3" --infer-sync-set-reset "1" --fanout-limit "0" --bram_output_regs_packing "1" --retiming "1" --seq_opt "1" --blast_const_operand_adders "1" --operator-sharing "0" --optimize-adder-tree "0" --mult_input_regs_packing "1" --mult_output_regs_packing "1" --veri_option "verilog_mode=sv_09,vhdl_mode=vhdl_2008" --work-dir "/home/byron/Projects/super6502/hw/efinix_fpga/work_syn" --output-dir "/home/byron/Projects/super6502/hw/efinix_fpga/outflow" --project-xml "/home/byron/Projects/super6502/hw/efinix_fpga/super6502.xml" --I "/home/byron/Projects/super6502/hw/efinix_fpga" --I "/home/byron/Projects/super6502/hw/efinix_fpga/ip/sdram" \ No newline at end of file diff --git a/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_154311.zip b/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_154311.zip new file mode 100644 index 0000000000000000000000000000000000000000..8c09de22e324776dcd4d4da1931cb5a412f9577a GIT binary patch literal 16638 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 nq>TSNg->2Wo33% zc4udnf;1=?D$suii2Jk(1?NmD)4%$E1>;{aF}1L@aMyD(w=l6brn9mzGBDP&H!`I7 ze`|ykt|pF77IwCTObkqnj0}t{l!O#!CblMy2F`Ylg#WO%CT^54lnVcMH&8$(KGQ0U z5N&N)z(7D=VE>119Ib6sv}}VIkUnQAiF+!`*nD>L%*v=Hho#pctc~p!QaxYjBDyK_ zKkKH}m?!s+yqa~@>HEdhd8>Ng0tjq`+aMP=<-?S=SHm=*k|P*4AkLJzOwF5Yk<~K0 z(({GsPxkPyI3Lk?WY&(3kAc37Q_U$Eg+~mq->PRfrRPA!k-IGFONCVyVh4e}4e6#0 z^-JIbM#6K@r>vTc!lprXL81*>wRgizVXyz_YbXS8h5s;dmSTzB3c^+evkN@r`;Aq2DQhPb_pk_7ta-!Njs=UUMOuPALzE^28&2WBq7t18cHoK#i+C@MT8(D z(&E1_RlA$t%^lf%M}q*NWneyOQZn>3-ad9QTIt5|@i3Vg0cl)A>19XWlj0jE>J%n1)!M%UT54Bh$# za7cW1wS#l+1h4U$K|+tbcKaeKOk9r+3=t6w4jbSzpt^eC*>?e-!eZN5PHh@ldFPlE zmPQs%a5}5m4Dh!U%-}xsGW2g( z;cf!Ae=|?hzuR=qa3*}k^6|)*zT*LP_n6Y?PheMycwb7;*+sP2WMG!sXvW_8$?xiEw&mkZ zm*%>X8xPx~?)&b}{RNhOZ1dTj5+f5Oz_jb8PamP0ptW-$P*B7I#w|tnr$C#Un7Kb) z6e>lp+W8TaSPT3gF3>KcVhnfU;rzN?sJmS2t%I7MT1Fp zDp6(C&Cjkv%=(ttB4WWXWa(u;{%Y)i2nRt%0AOMXz3DG?27h;WdzbOgP9EL2B3ZBD z&z*5}{v_+`;%XTeExJlrFKa@g-n7F{rrJteE!SQg>Z;ykIMh~Pl*KrqYr@QXqGyN= zls`~9Q%0Sr!}rkc;+1%x8#Tky=9qp#wnglXJQHMqU^>0=u{sLWD?H}ny3ll3R;b<3&dYNVu%Z3V?6=Ekkrn@0v6ldgA1T%E;R@kZxT*Ri*xdIft zECL^8?PvWRVi~tr!uAe;l%aBBDx*fw6bs}MIHr-36%F>N>iXz?@zZ?$8NG_HXvjsf zj|ENGHm>sEhj~QT#P_cMdt=7AB0qsX4GJy zb|x)xXNi*GOYI|N-dqkS63E4l2!jF`-i)Z^D4#8cl=67T_`Y3Ojke0bU?gCzj-_#L zO_~ZEYG?whFTKNcT@r71T58>A3}95Z)|p(m+&8`9lFMJvYVq0}l6ZJ(R`b;YuT)++ zE_yhdkf>Kxc5>YK%i`=a?`|I0+!6eL7u~zzzfs8?KtRHR!2iF-+R4cL%16?PWHk9$ zrtHEj9jQZ`F>sho74|^T@|%C4F%F8#&x-&(7!B^X5%Yg&Tn_fnU$t z>PMVgT&vse_u044*DZvekC&ShhF=+hTJCo1b3R|qPzLOW>(jPPc^WXE+zWq|Zw
  • *?l&`U_T#ZTHE->^WK=7Z+lyQDoyzI} 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 jvWOocze;A`A>n2}e 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 F{U4cL6>tCm literal 0 HcmV?d00001 diff --git a/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_160229.zip b/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-06-13_160229.zip new file mode 100644 index 0000000000000000000000000000000000000000..049d22c71d6e00b1293c179ae13ad94b8fa72e39 GIT binary patch literal 22949 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�x!5+NM8nC)vkOu7d#jLE8q5L+h| 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 Y01vB@-s|a`6O$ScUXJ} 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%0D4( zs^u6x|AYWP9}Ydgg!p+|I_>@mw%fchrb%HJtHk+M5yj-O}m656!K|h5?Rb22Y={(fjBrd(bwsL<&1^G=y?WmQj!(LQspSE zFba{wS(}PWQ1d%H-6;zZ?OiHnGE7FpZ^PmA_pQ$$D&!g1KQBYE2rFnk%$&rCAr?nP zt6~?i{&BG@hcgrwH!f;Xw(v5P4zm|6#LIo%diWZf=PYf12%APdwvDUE#!dk*`-tOG`T}PCgJGYFgM;G+hd7%%;eK?y z=hXYx#e#La@-@!u$Wi#G1^Kvyl)kn^-!toKs}0Z0-}%1`*OUd(^vwoLHm{*)eP%

    gLW0&_H|Jc-@KUZ1E|9%ld>hM>d?R#U0dl0iWE4A4x|eMUqLezE*=PJB+v|aN z3H{w6V==MWwqr4f;BXsEp8Akf&$d0<-rQky+8*buXh$~Wlq`PzSc=VMWk7*kXEUTf zZAKQsuEP zs*inpT!&rU1iTas3tBW4fFq(oa8fElRO$`GgT%w@fJ-^@D_2CJNnEmEMw)d$sL>h5 zFVg;oj2H~2cm~HGPit!ACEBnCp;2A0RQCpf6#+_iMU!p}0dcOUsg*NpUaYLuavC&c zA4pZM?CV9REJ&kpb>8;`o|QHd8rP~5j=_BqQ@_i)jrOXERu@V}a@NK_c~L9*(>6dx zQSvuH|r7QizGZ)huz+sPY8_>G5&kRdkK?bzyM} zTC-3_|5ou7&voA~8`48i7C2KOT=Jh)A+V(ZTF`-)^>bH(>4tTKc=vE#*%sg#VwqQY z;aBkxg;ZMpRN(UDh??iT#h~~E1jxJ*;;x6|%8c~1;U9eXjCPwlhPJOlH~E$OzUDsc z6Cl9RNMN=@B`pQ1D%3Kx*7T%SKe|u&wH20Z(Nf6uk0ZJ?r(!|8EMnnRE!vQ4cMnwj zBW7byLeG8m>y%&eW6nb`f+zGke1sfks_0KFgj}v#Py z2@!lh>S4(*FDnvG7bhLa0xbAS;^zCr_xJ10borvxJ;Ub*x4f+342Yc&YP^O@Xs9;(}! z`;q?iXhOYRt>;qt#x**WN@Eth#5Qc=NqLo7S=5uzWppZ*ZO-Z@hCF>7|IwGu0QWP; zA_2PDm_PuH!JYt2ax>iAxxQQ@>Dg7j*-Fm>f9Z54$Na{u1Irmv*?Lo;_0WEN>qt0sA*T8yIn(Ana3yifm zdI}+dVVd|be`6cds*#BM(t4T+Ih6S;l|4dWmg>c^8*f%=liS++P}f8@pbVyI z$U#zC3f`@5j_scf&%lL#Ob@Iftl5{!^^~}L>(m4ogf)gukbER1luLh5BppyTsq9nhQJAU*#~WT)5@Wc*<&t^%Der`C-cf? z^-=E=`F@Dc{&&u{b$Nkn+vkpT`Sv3#$(X4<`R?Ng`*2U?KisIYtT|`wP*L5*W^lv( zLpKA)M^_7$bO73ON8a<<8PC)8u9=2196Tl9e_Nzq5|RHn{)bcgFXZ1H(SHfHFT;O@ zcsTth!kbld}{z3*d|0_?^P)0)j=P}aD Oss3WgmNok4?*9N(c11G) literal 0 HcmV?d00001 diff --git a/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-01_183247.zip b/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-01_183247.zip new file mode 100644 index 0000000000000000000000000000000000000000..580c3a639b90ccf72067a0cff0274cfb692d5166 GIT binary patch literal 23465 zcmaHRbC4#mv*6gaZCg9mj&0kvjUC&zZQHi-jqTa-%hySutS?xiYKolYm+l}re>CQmLB@f7M7+qCJfe=#)c;P4#q}Q{|6$X zax-;uwzRh+Vqs!oW@ch$qb8y#9_Jnd@?EPujH~(b%#(|Q#pm&e>Ejw_RLk3ZO>}0MLL}}WL#^JNtEw5q;o+kLY7E$IFSAOjLxelB`12Zo& zY!zMa&^mnQAIK%~+1&xoy&JO5XATKH`r6}%s4#gmHaJX7I5c8Nz=Y=JiSN)2dcy5DUSo#gHt}5Kn(gC>KV#Pu>i#LUDS*(v4Dq3iu&bMRsoBsxt;w9T z>r=qZ%Y56{haufLS`yZQ3^Axw{Ti1iED|9tUt$!Z&?gwtc`z_$Ow02(m|>a&KeNBW$za~F$C=FY zRH)R7K8e((urtT_3MRbZG_czdT0}U!n=k5Xie`vZ`NbWa=SbmS#if2-)E9E)A(5L} z)G5Dg9NiJz3$;2;qqd#bh`n`YW##C%tR$`UE1knChMBX~FI#wLO=&*)i} zZNMH?Ouv{<;wkgX3@7pPz|6AtCT;D2?KcOXo$dAr+5!vVDONtA9$U1?6|8b*doO@yVN>coix+&yqsg`JptU^?0V{DPnQ%hR2$q^# z2-M?v-M!WMorSndk>?)32~ z7nqwmerQ9oStpo3=j!@NG0?-)HYr|mldxIQghadTfS*dUlek`~yFAoWz0Gv2tHdmi zamLVuS@6Qh6d$a3q;{c>I#q}7rQgFZ^|>%^fu+wi`+{tb*dP5%mx z?iax9U2;uFDVlR4WXiF5qfMP*AN0wNyhVGX{2MpRHRf3*rYyg5{%cu0u#V2Pw7RBs z6HM*#L`5@aAO^ik+5-+4oWh(gp*AriVFS`hc6&MGMX^IlHz|0}a4}j=iV&p)fvlRr z9a26RsW#oX(NOJNTH@XcHPesQSIVNLLaSIX4<{lVO3UbWR3%sWd?~by*C)pB?b3Rz zO$G)t5qoVs{nz%Cnc$&@Cb0VQJ6!h_$xfG*_Cw|%W=&hY>80yK^BW$e{3X3MpY0); zrdUaJ7*KL3-E`W7!>%jJ&@c%WscDcJu3z9%Uc4ff-U(fAq zY;oPQ;e_`)mBMFFK4J7nyqa46z4y#ahP<+>vJ3;eWO2J0ds-cu9wk4}pn?ta@#@E& z#3@QtoP-5gQkd1)Ru&yq=GF0~$;bSe(XV&5LC1GofWG(DyywHg*SjfR2Zp%VtK;=x z%uD(9;Oly)Q0+78ouT)$&0m|Y_x1I@ldidr-#RB9nuPhf$waSsxH?&At+M2_^yl>U z@WZRk<37b};pgl7{oA%j%HIBQ?)CCLcqHof*5d1y{Kwt$>Yyv`HI-e5q4(pwvzPw$ z!D!(psBP{1VyNzR@p=pKi}CEI(c}L4dPa7J=yht%AL-;`Pl#FVed#$)pr@9Tu=du! z=l$|}EbHSki}1(gqt(v?c(c~N*6yI|-SB?I)|&9*OPH>so)J?(H!YI1KW^!|YozWO z^xH|=Kf=A_!@7;-`sM~BWcR1jh`qgSl{06ZeL$l zZwDm(7fYjlm}C!{74fUmy7KA;qOZ@u+C9JDYlWJY!+qZe`HE@U=iB?m>H8&Pn>#q= z8%f=pwPGSu)N0Px0sF@dp})rG-B_JhP;@uBeT0Z^y^u?E`%Him&(n#R_Dja z%L}2~cO>HX^JP#)iG$e!K46H@EkxiIz`7$TPlvl9)i(zz;JfR6zHZ^d_#xoC>doDm zvbQW3qSLvMbM%>L8& z^A7Ny=PDFtc--13hsX%B@Y%Zi&lySbAyO4XEgyi3u@OX#!u9>V*DV~!5jc-xBqZ(_ zvdxm13_FW;G$Yf}2{`+nlSbjYRlLn^zDpzX-W|Fbr@ Y01vB@-s|a`6O$ScUXJ} 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%0D4( zs^u6x|AYWP9}Ydgg!p+|I_>@mw%fchrb%HJtHk+M5yj-O}m656!K|h5?Rb22Y={(fjBrd(bwsL<&1^G=y?WmQj!(LQspSE zFba{wS(}PWQ1d%H-6;zZ?OiHnGE7FpZ^PmA_pQ$$D&!g1KQBYE2rFnk%$&rCAr?nP zt6~?i{&BG@hcgrwH!f;Xw(v5P4zm|6#LIo%diWZf=PYf12%APdwvDUE#!dk*`-tOG`T}PCgJGYFgM;G+hd7%%;eK?y z=hXYx#e#La@-@!u$Wi#G1^Kvyl)kn^-!toKs}0Z0-}%1`*OUd(^vwoLHm{*)eP%

    gLW0&_H|Jc-@KUZ1E|9%ld>hM>d?R#U0dl0iWE4A4x|eMUqLezE*=PJB+v|aN z3H{w6V==MWwqr4f;BXsEp8Akf&$d0<-rQky+8*buXh$~Wlq`PzSc=VMWk7*kXEUTf zZAKQsuEP zs*inpT!&rU1iTas3tBW4fFq(oa8fElRO$`GgT%w@fJ-^@D_2CJNnEmEMw)d$sL>h5 zFVg;oj2H~2cm~HGPit!ACEBnCp;2A0RQCpf6#+_iMU!p}0dcOUsg*NpUaYLuavC&c zA4pZM?CV9REJ&kpb>8;`o|QHd8rP~5j=_BqQ@_i)jrOXERu@V}a@NK_c~L9*(>6dx zQSvuH|r7QizGZ)huz+sPY8_>G5&kRdkK?bzyM} zTC-3_|5ou7&voA~8`48i7C2KOT=Jh)A+V(ZTF`-)^>bH(>4tTKc=vE#*%sg#VwqQY z;aBkxg;ZMpRN(UDh??iT#h~~E1jxJ*;;x6|%8c~1;U9eXjCPwlhPJOlH~E$OzUDsc z6Cl9RNMN=@B`pQ1D%3Kx*7T%SKe|u&wH20Z(Nf6uk0ZJ?r(!|8EMnnRE!vQ4cMnwj zBW7byLeG8m>y%&eW6nb`f+zGke1sfks_0KFgj}v#Py z2@!lh>S4(*FDnvG7bhLa0xbAS;^zCr_xJ10borvxJ;Ub*x4f+342Yc&YP^O@Xs9;(}! z`;q?iXhOYRt>;qt#x**WN@Eth#5Qc=NqLo7S=5uzWppZ*ZO-Z@hCF>7|IwGu0QWP; zA_2PDm_PuH!JYt2ax>iAxxQQ@>Dg7j*-Fm>f9Z54$Na{u1Irmv*?Lo;_0WEN>qt0sA*T8yIn(Ana3yifm zdI}+dVVd|be`6cds*#BM(t4T+Ih6S;l|4dWmg>c^8*f%=liS++P}f8@pbVyI z$U#zC3f`@5j_scf&%lL#Ob@Iftl5{!^^~}L>(m4ogf)gukbER1luLh5BppyTsq9nhQJAU*#~WT)5@Wc*<&t^%Der`C-cf? z^-=E=`F@Dc{&&u{b$Nkn+vkpT`Sv3#$(X4<`R?Ng`*2U?KisIYtT|`wP*L5*W^lv( zLpKA)M^_7$bO73ON8a<<8PC)8u9=2196Tl9e_Nzq5|RHn{)bcgFXZ1H(SHfHFT;O@ zcsTth!kbld}{z3*d|0_?^P)0)j=P}aD Oss3WgmNok4?*9N(c11G) literal 0 HcmV?d00001 diff --git a/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-03_164127.zip b/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-03_164127.zip new file mode 100644 index 0000000000000000000000000000000000000000..e4d7303b2a3fdc79cd2426e902919434ae4643d2 GIT binary patch literal 23465 zcmaHRbC4#mv*6gaZCg9mj&0kvjUC&zZQHi-jqTa-%hySutS?xiYKolYm+l}re>CQmLB@f7M7+qCJfe=#)c;P4#q}Q{|6$X zax-;uwzRh+Vqs!oW@ch$qb8y#9_Jnd@?EPujH~(b%#(|Q#pm&e>Ejw_RLk3ZO>}0MLL}}WL#^JNtEw5q;o+kLY7E$IFSAOjLxelB`12Zo& zY!zMa&^mnQAIK%~+1&xoy&JO5XATKH`r6}%s4#gmHaJX7I5c8Nz=Y=JiSN)2dcy5DUSo#gHt}5Kn(gC>KV#Pu>i#LUDS*(v4Dq3iu&bMRsoBsxt;w9T z>r=qZ%Y56{haufLS`yZQ3^Axw{Ti1iED|9tUt$!Z&?gwtc`z_$Ow02(m|>a&KeNBW$za~F$C=FY zRH)R7K8e((urtT_3MRbZG_czdT0}U!n=k5Xie`vZ`NbWa=SbmS#if2-)E9E)A(5L} z)G5Dg9NiJz3$;2;qqd#bh`n`YW##C%tR$`UE1knChMBX~FI#wLO=&*)i} zZNMH?Ouv{<;wkgX3@7pPz|6AtCT;D2?KcOXo$dAr+5!vVDONtA9$U1?6|8b*doO@yVN>coix+&yqsg`JptU^?0V{DPnQ%hR2$q^# z2-M?v-M!WMorSndk>?)32~ z7nqwmerQ9oStpo3=j!@NG0?-)HYr|mldxIQghadTfS*dUlek`~yFAoWz0Gv2tHdmi zamLVuS@6Qh6d$a3q;{c>I#q}7rQgFZ^|>%^fu+wi`+{tb*dP5%mx z?iax9U2;uFDVlR4WXiF5qfMP*AN0wNyhVGX{2MpRHRf3*rYyg5{%cu0u#V2Pw7RBs z6HM*#L`5@aAO^ik+5-+4oWh(gp*AriVFS`hc6&MGMX^IlHz|0}a4}j=iV&p)fvlRr z9a26RsW#oX(NOJNTH@XcHPesQSIVNLLaSIX4<{lVO3UbWR3%sWd?~by*C)pB?b3Rz zO$G)t5qoVs{nz%Cnc$&@Cb0VQJ6!h_$xfG*_Cw|%W=&hY>80yK^BW$e{3X3MpY0); zrdUaJ7*KL3-E`W7!>%jJ&@c%WscDcJu3z9%Uc4ff-U(fAq zY;oPQ;e_`)mBMFFK4J7nyqa46z4y#ahP<+>vJ3;eWO2J0ds-cu9wk4}pn?ta@#@E& z#3@QtoP-5gQkd1)Ru&yq=GF0~$;bSe(XV&5LC1GofWG(DyywHg*SjfR2Zp%VtK;=x z%uD(9;Oly)Q0+78ouT)$&0m|Y_x1I@ldidr-#RB9nuPhf$waSsxH?&At+M2_^yl>U z@WZRk<37b};pgl7{oA%j%HIBQ?)CCLcqHof*5d1y{Kwt$>Yyv`HI-e5q4(pwvzPw$ z!D!(psBP{1VyNzR@p=pKi}CEI(c}L4dPa7J=yht%AL-;`Pl#FVed#$)pr@9Tu=du! z=l$|}EbHSki}1(gqt(v?c(c~N*6yI|-SB?I)|&9*OPH>so)J?(H!YI1KW^!|YozWO z^xH|=Kf=A_!@7;-`sM~BWcR1jh`qgSl{06ZeL$l zZwDm(7fYjlm}C!{74fUmy7KA;qOZ@u+C9JDYlWJY!+qZe`HE@U=iB?m>H8&Pn>#q= z8%f=pwPGSu)N0Px0sF@dp})rG-B_JhP;@uBeT0Z^y^u?E`%Him&(n#R_Dja z%L}2~cO>HX^JP#)iG$e!K46H@EkxiIz`7$TPlvl9)i(zz;JfR6zHZ^d_#xoC>doDm zvbQW3qSLvMbM%>L8& z^A7Ny=PDFtc--13hsX%B@Y%Zi&lySbAyO4XEgyi3u@OX#!u9>V*DV~!5jc-xBqZ(_ zvdxm13_FW;G$Yf}2{`+nlSbjYRlLn^zDpzX-W|Fbr@ Y01vB@-s|a`6O$ScUXJ} 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 N8ZVY?Ipcrs{tx>#LyZ6c literal 0 HcmV?d00001 diff --git a/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-05_140907.zip b/hw/efinix_shield/efinix_shield-backups/efinix_shield-2022-08-05_140907.zip new file mode 100644 index 0000000000000000000000000000000000000000..e4d7303b2a3fdc79cd2426e902919434ae4643d2 GIT binary patch literal 23465 zcmaHRbC4#mv*6gaZCg9mj&0kvjUC&zZQHi-jqTa-%hySutS?xiYKolYm+l}re>CQmLB@f7M7+qCJfe=#)c;P4#q}Q{|6$X zax-;uwzRh+Vqs!oW@ch$qb8y#9_Jnd@?EPujH~(b%#(|Q#pm&e>Ejw_RLk3ZO>}0MLL}}WL#^JNtEw5q;o+kLY7E$IFSAOjLxelB`12Zo& zY!zMa&^mnQAIK%~+1&xoy&JO5XATKH`r6}%s4#gmHaJX7I5c8Nz=Y=JiSN)2dcy5DUSo#gHt}5Kn(gC>KV#Pu>i#LUDS*(v4Dq3iu&bMRsoBsxt;w9T z>r=qZ%Y56{haufLS`yZQ3^Axw{Ti1iED|9tUt$!Z&?gwtc`z_$Ow02(m|>a&KeNBW$za~F$C=FY zRH)R7K8e((urtT_3MRbZG_czdT0}U!n=k5Xie`vZ`NbWa=SbmS#if2-)E9E)A(5L} z)G5Dg9NiJz3$;2;qqd#bh`n`YW##C%tR$`UE1knChMBX~FI#wLO=&*)i} zZNMH?Ouv{<;wkgX3@7pPz|6AtCT;D2?KcOXo$dAr+5!vVDONtA9$U1?6|8b*doO@yVN>coix+&yqsg`JptU^?0V{DPnQ%hR2$q^# z2-M?v-M!WMorSndk>?)32~ z7nqwmerQ9oStpo3=j!@NG0?-)HYr|mldxIQghadTfS*dUlek`~yFAoWz0Gv2tHdmi zamLVuS@6Qh6d$a3q;{c>I#q}7rQgFZ^|>%^fu+wi`+{tb*dP5%mx z?iax9U2;uFDVlR4WXiF5qfMP*AN0wNyhVGX{2MpRHRf3*rYyg5{%cu0u#V2Pw7RBs z6HM*#L`5@aAO^ik+5-+4oWh(gp*AriVFS`hc6&MGMX^IlHz|0}a4}j=iV&p)fvlRr z9a26RsW#oX(NOJNTH@XcHPesQSIVNLLaSIX4<{lVO3UbWR3%sWd?~by*C)pB?b3Rz zO$G)t5qoVs{nz%Cnc$&@Cb0VQJ6!h_$xfG*_Cw|%W=&hY>80yK^BW$e{3X3MpY0); zrdUaJ7*KL3-E`W7!>%jJ&@c%WscDcJu3z9%Uc4ff-U(fAq zY;oPQ;e_`)mBMFFK4J7nyqa46z4y#ahP<+>vJ3;eWO2J0ds-cu9wk4}pn?ta@#@E& z#3@QtoP-5gQkd1)Ru&yq=GF0~$;bSe(XV&5LC1GofWG(DyywHg*SjfR2Zp%VtK;=x z%uD(9;Oly)Q0+78ouT)$&0m|Y_x1I@ldidr-#RB9nuPhf$waSsxH?&At+M2_^yl>U z@WZRk<37b};pgl7{oA%j%HIBQ?)CCLcqHof*5d1y{Kwt$>Yyv`HI-e5q4(pwvzPw$ z!D!(psBP{1VyNzR@p=pKi}CEI(c}L4dPa7J=yht%AL-;`Pl#FVed#$)pr@9Tu=du! z=l$|}EbHSki}1(gqt(v?c(c~N*6yI|-SB?I)|&9*OPH>so)J?(H!YI1KW^!|YozWO z^xH|=Kf=A_!@7;-`sM~BWcR1jh`qgSl{06ZeL$l zZwDm(7fYjlm}C!{74fUmy7KA;qOZ@u+C9JDYlWJY!+qZe`HE@U=iB?m>H8&Pn>#q= z8%f=pwPGSu)N0Px0sF@dp})rG-B_JhP;@uBeT0Z^y^u?E`%Him&(n#R_Dja z%L}2~cO>HX^JP#)iG$e!K46H@EkxiIz`7$TPlvl9)i(zz;JfR6zHZ^d_#xoC>doDm zvbQW3qSLvMbM%>L8& z^A7Ny=PDFtc--13hsX%B@Y%Zi&lySbAyO4XEgyi3u@OX#!u9>V*DV~!5jc-xBqZ(_ zvdxm13_FW;G$Yf}2{`+nlSbjYRlLn^zDpzX-W|Fbr@ Y01vB@-s|a`6O$ScUXJ} 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 N8ZVY?Ipcrs{tx>#LyZ6c literal 0 HcmV?d00001 diff --git a/hw/efinix_shield/efinix_shield.kicad_pcb b/hw/efinix_shield/efinix_shield.kicad_pcb new file mode 100644 index 0000000..28b47a1 --- /dev/null +++ b/hw/efinix_shield/efinix_shield.kicad_pcb @@ -0,0 +1,2 @@ +(kicad_pcb (version 20211014) (generator pcbnew) +) \ No newline at end of file diff --git a/hw/efinix_shield/efinix_shield.kicad_prl b/hw/efinix_shield/efinix_shield.kicad_prl new file mode 100644 index 0000000..d84353e --- /dev/null +++ b/hw/efinix_shield/efinix_shield.kicad_prl @@ -0,0 +1,75 @@ +{ + "board": { + "active_layer": 0, + "active_layer_preset": "All Layers", + "auto_track_width": true, + "hidden_nets": [], + "high_contrast_mode": 0, + "net_color_mode": 1, + "opacity": { + "pads": 1.0, + "tracks": 1.0, + "vias": 1.0, + "zones": 0.6 + }, + "ratsnest_display_mode": 0, + "selection_filter": { + "dimensions": true, + "footprints": true, + "graphics": true, + "keepouts": true, + "lockedItems": true, + "otherItems": true, + "pads": true, + "text": true, + "tracks": true, + "vias": true, + "zones": true + }, + "visible_items": [ + 0, + 1, + 2, + 3, + 4, + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 32, + 33, + 34, + 35, + 36 + ], + "visible_layers": "fffffff_ffffffff", + "zone_display_mode": 0 + }, + "meta": { + "filename": "efinix_shield.kicad_prl", + "version": 3 + }, + "project": { + "files": [] + } +} diff --git a/hw/efinix_shield/efinix_shield.kicad_pro b/hw/efinix_shield/efinix_shield.kicad_pro new file mode 100644 index 0000000..7893105 --- /dev/null +++ b/hw/efinix_shield/efinix_shield.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "efinix_shield.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "48e8c44b-591b-48c2-81bb-62294ee42805", + "" + ] + ], + "text_variables": {} +} diff --git a/hw/efinix_shield/efinix_shield.kicad_sch b/hw/efinix_shield/efinix_shield.kicad_sch new file mode 100644 index 0000000..dfc5038 --- /dev/null +++ b/hw/efinix_shield/efinix_shield.kicad_sch @@ -0,0 +1,2602 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid 48e8c44b-591b-48c2-81bb-62294ee42805) + + (paper "A3") + + (title_block + (title "Trion T20F256 Super6502 Shield") + ) + + (lib_symbols + (symbol "Connector:DB15_Female_HighDensity_MountingHoles" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 21.59 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "DB15_Female_HighDensity_MountingHoles" (id 1) (at 0 19.05 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -24.13 10.16 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" " ~" (id 3) (at -24.13 10.16 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector db15 female D-SUB VGA" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "15-pin female D-SUB connector, High density (3 columns), Triple Row, Generic, VGA-connector, Mounting Hole" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "DSUB*Female*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "DB15_Female_HighDensity_MountingHoles_0_1" + (circle (center -1.905 -10.16) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -1.905 -5.08) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -1.905 0) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -1.905 5.08) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -1.905 10.16) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 0 -7.62) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 0 -2.54) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.175 7.62) + (xy -0.635 7.62) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.635 -7.62) + (xy -3.175 -7.62) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.635 -2.54) + (xy -3.175 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.635 2.54) + (xy -3.175 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.635 12.7) + (xy -3.175 12.7) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.81 17.78) + (xy -3.81 -15.24) + (xy 3.81 -12.7) + (xy 3.81 15.24) + (xy -3.81 17.78) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (circle (center 0 2.54) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 0 7.62) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 0 12.7) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.905 -10.16) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.905 -5.08) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.905 0) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.905 5.08) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 1.905 10.16) (radius 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "DB15_Female_HighDensity_MountingHoles_1_1" + (pin passive line (at 0 -17.78 90) (length 3.81) + (name "~" (effects (font (size 1.27 1.27)))) + (number "0" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 10.16 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -7.62 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 10.16 180) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 5.08 180) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 0 180) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -5.08 180) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -10.16 180) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 5.08 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 0 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -5.08 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -10.16 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 12.7 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 7.62 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 2.54 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 5.08) + (name "~" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:Micro_SD_Card" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at -16.51 15.24 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Micro_SD_Card" (id 1) (at 16.51 15.24 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "" (id 2) (at 29.21 7.62 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://katalog.we-online.de/em/datasheet/693072010801.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector SD microsd" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Micro SD Card Socket" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "microSD*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Micro_SD_Card_0_1" + (rectangle (start -7.62 -9.525) (end -5.08 -10.795) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -6.985) (end -5.08 -8.255) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -4.445) (end -5.08 -5.715) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -1.905) (end -5.08 -3.175) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 0.635) (end -5.08 -0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 3.175) (end -5.08 1.905) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 5.715) (end -5.08 4.445) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 8.255) (end -5.08 6.985) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 16.51 12.7) + (xy 16.51 13.97) + (xy -19.05 13.97) + (xy -19.05 -16.51) + (xy 16.51 -16.51) + (xy 16.51 -11.43) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -8.89 -11.43) + (xy -8.89 8.89) + (xy -1.27 8.89) + (xy 2.54 12.7) + (xy 3.81 12.7) + (xy 3.81 11.43) + (xy 6.35 11.43) + (xy 7.62 12.7) + (xy 20.32 12.7) + (xy 20.32 -11.43) + (xy -8.89 -11.43) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "Micro_SD_Card_1_1" + (pin bidirectional line (at -22.86 7.62 0) (length 3.81) + (name "DAT2" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 5.08 0) (length 3.81) + (name "DAT3/CD" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 2.54 0) (length 3.81) + (name "CMD" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 0 0) (length 3.81) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -2.54 0) (length 3.81) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 -5.08 0) (length 3.81) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 -7.62 0) (length 3.81) + (name "DAT0" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 -10.16 0) (length 3.81) + (name "DAT1" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 20.32 -15.24 180) (length 3.81) + (name "SHIELD" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:SD_Card" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at -16.51 13.97 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "SD_Card" (id 1) (at 15.24 -13.97 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://portal.fciconnect.com/Comergent//fci/drawing/10067847.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector SD" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "SD Card Reader" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SD*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "SD_Card_0_1" + (rectangle (start -8.89 -9.525) (end -6.35 -10.795) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 -6.985) (end -6.35 -8.255) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 -4.445) (end -6.35 -5.715) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 -1.905) (end -6.35 -3.175) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 0.635) (end -6.35 -0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 3.175) (end -6.35 1.905) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 5.715) (end -6.35 4.445) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -8.89 8.255) (end -6.35 6.985) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 10.795) (end -5.08 9.525) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy -10.16 8.89) + (xy -7.62 11.43) + (xy 20.32 11.43) + (xy 20.32 -11.43) + (xy -10.16 -11.43) + (xy -10.16 8.89) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 16.51 11.43) + (xy 16.51 12.7) + (xy -20.32 12.7) + (xy -20.32 -12.7) + (xy 16.51 -12.7) + (xy 16.51 -11.43) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "SD_Card_1_1" + (pin input line (at -22.86 7.62 0) (length 2.54) + (name "CD/DAT3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 22.86 5.08 180) (length 2.54) + (name "CARD_DETECT" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 22.86 2.54 180) (length 2.54) + (name "WRITE_PROTECT" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 22.86 -2.54 180) (length 2.54) + (name "SHELL1" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 22.86 -5.08 180) (length 2.54) + (name "SHELL2" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 5.08 0) (length 2.54) + (name "CMD" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 2.54 0) (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 0 0) (length 2.54) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -2.54 0) (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 -5.08 0) (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -7.62 0) (length 2.54) + (name "DAT0" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -10.16 0) (length 2.54) + (name "DAT1" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 10.16 0) (length 2.54) + (name "DAT2" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (id 1) (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R_Pack04" (pin_names (offset 0) hide) (in_bom yes) (on_board yes) + (property "Reference" "RN" (id 0) (at -7.62 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R_Pack04" (id 1) (at 5.08 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 6.985 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R network parallel topology isolated" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "4 resistor network, parallel topology" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "DIP* SOIC* R*Array*Concave* R*Array*Convex*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_Pack04_0_1" + (rectangle (start -6.35 -2.413) (end 3.81 2.413) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (rectangle (start -5.715 1.905) (end -4.445 -1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -3.175 1.905) (end -1.905 -1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -0.635 1.905) (end 0.635 -1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 -2.54) + (xy -5.08 -1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 1.905) + (xy -5.08 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 -2.54) + (xy -2.54 -1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 1.905) + (xy -2.54 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -2.54) + (xy 0 -1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 1.905) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 -2.54) + (xy 2.54 -1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 1.905) + (xy 2.54 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 1.905 1.905) (end 3.175 -1.905) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_Pack04_1_1" + (pin passive line (at -5.08 -5.08 90) (length 2.54) + (name "R1.1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 -5.08 90) (length 2.54) + (name "R2.1" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -5.08 90) (length 2.54) + (name "R3.1" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 -5.08 90) (length 2.54) + (name "R4.1" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 5.08 270) (length 2.54) + (name "R4.2" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 5.08 270) (length 2.54) + (name "R3.2" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 5.08 270) (length 2.54) + (name "R2.2" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 5.08 270) (length 2.54) + (name "R1.2" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Header:T20BGA256_DEV_GPIO_1B1C" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "T20BGA256_DEV_GPIO_1B1C" (id 1) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "T20BGA256_DEV_GPIO_1B1C_1_1" + (rectangle (start -12.7 -1.27) (end 13.97 -50.8) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin power_in line (at 17.78 -3.81 180) (length 3.81) + (name "VCCIO1B_1C" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "GPIOL_14" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -16.51 180) (length 3.81) + (name "GPIOL_39" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "GPIOL_15" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -19.05 180) (length 3.81) + (name "GPIOL_37" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "GPIOL_16" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -21.59 180) (length 3.81) + (name "GPIOL_36" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "GPIOL_18" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -24.13 180) (length 3.81) + (name "GPIOL_35" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "GPIOL_19" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -26.67 180) (length 3.81) + (name "GPIOL_34" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -3.81 0) (length 3.81) + (name "VCCIO1B_1C" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "GPIOL_20" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -29.21 180) (length 3.81) + (name "GPIOL_33" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "GPIOL_21" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -31.75 180) (length 3.81) + (name "GPIOL_32" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -31.75 0) (length 3.81) + (name "GPIOL_22" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -34.29 180) (length 3.81) + (name "GPIOL_31" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -34.29 0) (length 3.81) + (name "GPIOL_23" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -36.83 180) (length 3.81) + (name "GPIOL_30" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -36.83 0) (length 3.81) + (name "GPIOL_24" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -39.37 180) (length 3.81) + (name "GPIOL_29" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -6.35 180) (length 3.81) + (name "GPIOL_43" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -39.37 0) (length 3.81) + (name "GPIOL_25" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -41.91 180) (length 3.81) + (name "GPIOL_28" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -41.91 0) (length 3.81) + (name "GPIOL_26" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -44.45 180) (length 3.81) + (name "GPIOL_27" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -44.45 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 17.78 -46.99 180) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -46.99 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "GPIOL_11" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -8.89 180) (length 3.81) + (name "GPIOL_42" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "GPIOL_12" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -11.43 180) (length 3.81) + (name "GPIOL_41" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "GPIOL_13" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -13.97 180) (length 3.81) + (name "GPIOL_40" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Header:T20BGA256_DEV_GPIO_1D1E" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "T20BGA256_DEV_GPIO_1D1E" (id 1) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "T20BGA256_DEV_GPIO_1D1E_1_1" + (rectangle (start -12.7 -2.54) (end 13.97 -52.07) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin power_in line (at 17.78 -5.08 180) (length 3.81) + (name "VCCIO1D_1E" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -15.24 0) (length 3.81) + (name "GPIOL_67" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -17.78 180) (length 3.81) + (name "GPIOL_66" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -17.78 0) (length 3.81) + (name "GPIOL_65" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -20.32 180) (length 3.81) + (name "GPIOL_64" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -20.32 0) (length 3.81) + (name "GPIOL_63" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -22.86 180) (length 3.81) + (name "GPIOL_62" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at -16.51 -22.86 0) (length 3.81) + (name "NC" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -25.4 180) (length 3.81) + (name "GPIOL_60" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -25.4 0) (length 3.81) + (name "GPIOL_61" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -27.94 180) (length 3.81) + (name "GPIOL_58" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -5.08 0) (length 3.81) + (name "VCCIO1D_1E" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -27.94 0) (length 3.81) + (name "GPIOL_59" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -30.48 180) (length 3.81) + (name "GPIOL_56" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -30.48 0) (length 3.81) + (name "GPIOL_57" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -33.02 180) (length 3.81) + (name "GPIOL_54" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -33.02 0) (length 3.81) + (name "GPIOL_55" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -35.56 180) (length 3.81) + (name "GPIOL_52" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -35.56 0) (length 3.81) + (name "GPIOL_53" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -38.1 180) (length 3.81) + (name "GPIOL_50" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -38.1 0) (length 3.81) + (name "GPIOL_51" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -40.64 180) (length 3.81) + (name "GPIOL_48" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -7.62 180) (length 3.81) + (name "GPIOL_74" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -40.64 0) (length 3.81) + (name "GPIOL_49" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -43.18 180) (length 3.81) + (name "GPIOL_46" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -43.18 0) (length 3.81) + (name "GPIOL_47" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -45.72 180) (length 3.81) + (name "GPIOL_44" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -45.72 0) (length 3.81) + (name "GPIOL_45" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 17.78 -48.26 180) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -48.26 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -7.62 0) (length 3.81) + (name "GPIOL_73" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -10.16 180) (length 3.81) + (name "GPIOL_72" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -16.51 -10.16 0) (length 3.81) + (name "NSTATUS" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -12.7 180) (length 3.81) + (name "GPIOL_70" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -12.7 0) (length 3.81) + (name "GPIOL_69" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 17.78 -15.24 180) (length 3.81) + (name "GPIOL_68" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Header:T20BGA256_DEV_GPIO_3" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "T20BGA256_DEV_GPIO_3" (id 1) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x16_P2.54mm_Vertical" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "T20BGA256_DEV_GPIO_3_1_1" + (rectangle (start -13.97 -2.54) (end 12.7 -45.72) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin power_in line (at 16.51 -5.08 180) (length 3.81) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -15.24 0) (length 3.81) + (name "GPIOR_105" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -17.78 180) (length 3.81) + (name "GPIOR_110" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -17.78 0) (length 3.81) + (name "GPIOR_111" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -20.32 180) (length 3.81) + (name "GPIOR_113" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -20.32 0) (length 3.81) + (name "GPIOR_117" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -22.86 180) (length 3.81) + (name "GPIOR_118" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -22.86 0) (length 3.81) + (name "GPIOR_120" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -25.4 180) (length 3.81) + (name "GPIOR_121" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -25.4 0) (length 3.81) + (name "GPIOR_122" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -27.94 180) (length 3.81) + (name "GPIOR_123" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -17.78 -5.08 0) (length 3.81) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -27.94 0) (length 3.81) + (name "GPIOR_124" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -30.48 180) (length 3.81) + (name "GPIOR_126" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -30.48 0) (length 3.81) + (name "GPIOR_127" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -33.02 180) (length 3.81) + (name "GPIOR_149" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -33.02 0) (length 3.81) + (name "GPIOR_150" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -35.56 180) (length 3.81) + (name "GPIOR_151" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -35.56 0) (length 3.81) + (name "GPIOR_153" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -38.1 180) (length 3.81) + (name "GPIOR_154" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -38.1 0) (length 3.81) + (name "GPIOR_155" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -40.64 180) (length 3.81) + (name "GPIOR_156" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -7.62 180) (length 3.81) + (name "GPIOR_76" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -40.64 0) (length 3.81) + (name "GPIOR_158" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -43.18 180) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -17.78 -43.18 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -7.62 0) (length 3.81) + (name "GPIOR_77" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -10.16 180) (length 3.81) + (name "GPIOR_78" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -10.16 0) (length 3.81) + (name "GPIOR_79" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at 16.51 -12.7 180) (length 3.81) + (name "NC" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -17.78 -12.7 0) (length 3.81) + (name "GPIOR_81" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -15.24 180) (length 3.81) + (name "GPIOR_104" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+3V3" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+3V3\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+3V3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 -1.27) + (xy 1.27 -1.27) + (xy 0 -2.54) + (xy -1.27 -1.27) + (xy 0 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "GND_1_1" + (pin power_in line (at 0 0 270) (length 0) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + (junction (at 77.47 62.23) (diameter 0) (color 0 0 0 0) + (uuid 057507e0-3143-48fd-9d2e-53016cf0feb5) + ) + (junction (at 77.47 57.15) (diameter 0) (color 0 0 0 0) + (uuid 1514004f-eccb-4575-8c8c-dfe896ed0558) + ) + (junction (at 113.665 52.07) (diameter 0) (color 0 0 0 0) + (uuid 21f63e5b-30ca-4f56-ba57-7fa9f5a5e88d) + ) + (junction (at 67.31 119.38) (diameter 0) (color 0 0 0 0) + (uuid 284b4ecc-a62e-42a2-b81a-cb5119258afb) + ) + (junction (at 91.44 57.15) (diameter 0) (color 0 0 0 0) + (uuid 2c14fb63-a102-4120-8b1d-90bc183049e1) + ) + (junction (at 77.47 59.69) (diameter 0) (color 0 0 0 0) + (uuid 343781bf-fbd8-4b00-ba65-10902b53e7ba) + ) + (junction (at 113.665 29.845) (diameter 0) (color 0 0 0 0) + (uuid 34406118-346f-4e34-a386-a84ba9c7a0ae) + ) + (junction (at 127.635 27.305) (diameter 0) (color 0 0 0 0) + (uuid 411c5f9e-1e81-42a1-bd7c-7283f3f8006c) + ) + (junction (at 55.245 49.53) (diameter 0) (color 0 0 0 0) + (uuid 4181c033-b53b-48d7-8283-94f207eea7f4) + ) + (junction (at 73.025 127) (diameter 0) (color 0 0 0 0) + (uuid 475476ea-4ee0-40ba-af49-8a0e6b999ec6) + ) + (junction (at 55.245 54.61) (diameter 0) (color 0 0 0 0) + (uuid 5e8f5aa5-a9b5-4111-9798-614409726054) + ) + (junction (at 113.665 32.385) (diameter 0) (color 0 0 0 0) + (uuid 671842f7-25eb-40d7-b18c-d65156c92a30) + ) + (junction (at 78.105 24.765) (diameter 0) (color 0 0 0 0) + (uuid 746749b0-8d49-44c1-be55-ac6dc08034fb) + ) + (junction (at 77.47 71.12) (diameter 0) (color 0 0 0 0) + (uuid 79a10484-8359-4b23-86f0-c14b6828ee2b) + ) + (junction (at 78.74 137.16) (diameter 0) (color 0 0 0 0) + (uuid 99ed1e7b-d59e-4b2c-b5a0-dbcb0b74045c) + ) + (junction (at 14.605 132.08) (diameter 0) (color 0 0 0 0) + (uuid 9a28a7ca-6b8e-45af-9912-6e75b0fdedd6) + ) + (junction (at 71.12 163.195) (diameter 0) (color 0 0 0 0) + (uuid 9fb4e9d5-9d40-4375-9e65-9f6657185c60) + ) + (junction (at 113.665 41.275) (diameter 0) (color 0 0 0 0) + (uuid a30e5308-85b9-43f3-8d89-09598e0fcb80) + ) + (junction (at 74.93 129.54) (diameter 0) (color 0 0 0 0) + (uuid ad8efbaa-82fc-41a8-ba9a-f3639d0b1e0e) + ) + (junction (at 55.245 67.31) (diameter 0) (color 0 0 0 0) + (uuid b459c3f5-3953-4470-b84b-c9646deab8d0) + ) + (junction (at 78.105 27.305) (diameter 0) (color 0 0 0 0) + (uuid b57bebe5-38e8-427b-b195-b045bc946d22) + ) + (junction (at 69.215 121.92) (diameter 0) (color 0 0 0 0) + (uuid bacd4d05-9b0f-44dc-abe6-86acf780487a) + ) + (junction (at 361.95 70.485) (diameter 0) (color 0 0 0 0) + (uuid ca19f683-cba9-402d-983b-d01a06d0649b) + ) + (junction (at 65.405 116.84) (diameter 0) (color 0 0 0 0) + (uuid cae1a5f4-2d8c-4447-8a67-765f636927fd) + ) + (junction (at 78.105 46.99) (diameter 0) (color 0 0 0 0) + (uuid dd5f2f61-8e2f-4d9b-9708-dd4fb54c4953) + ) + (junction (at 78.105 36.195) (diameter 0) (color 0 0 0 0) + (uuid df2b6445-772c-48a6-b02f-c53ebd3c197e) + ) + (junction (at 92.075 22.225) (diameter 0) (color 0 0 0 0) + (uuid e5e65469-147f-49e7-aff6-e7810b5d255e) + ) + (junction (at 71.12 132.08) (diameter 0) (color 0 0 0 0) + (uuid f4eb5586-1ec3-4260-868a-61bf3e9cf9fb) + ) + (junction (at 76.835 134.62) (diameter 0) (color 0 0 0 0) + (uuid f50ecb62-0b83-46c3-bd64-b72697dbc8dc) + ) + (junction (at 55.245 64.77) (diameter 0) (color 0 0 0 0) + (uuid f9e9c0f5-f5cc-4933-b0cf-2869777ef59d) + ) + + (no_connect (at 92.075 43.815) (uuid 03b36987-2751-42dc-9270-7d14d492a560)) + (no_connect (at 38.735 52.07) (uuid 1617038c-2243-4e36-a072-5f094961daee)) + (no_connect (at 38.735 46.99) (uuid 1617038c-2243-4e36-a072-5f094961daee)) + (no_connect (at 53.975 62.23) (uuid 1617038c-2243-4e36-a072-5f094961daee)) + (no_connect (at 38.735 67.31) (uuid 1617038c-2243-4e36-a072-5f094961daee)) + (no_connect (at 81.915 29.845) (uuid 46c445e1-4243-4256-9b5f-a846de7a077b)) + (no_connect (at 81.28 64.77) (uuid 56038685-eaf4-483c-b838-6be496650510)) + (no_connect (at 117.475 48.895) (uuid 5c4cb486-b778-4a4a-b5c5-fe505d579de1)) + (no_connect (at 91.44 64.77) (uuid 6dcbdab1-c307-44eb-ad4e-36a2df457550)) + (no_connect (at 92.075 29.845) (uuid 74b41048-9e64-45c6-8552-abbca5e9323e)) + (no_connect (at 127.635 34.925) (uuid ac7ea1f2-364b-405f-9acf-cd995ce72e2d)) + (no_connect (at 117.475 34.925) (uuid ac7ea1f2-364b-405f-9acf-cd995ce72e2d)) + (no_connect (at 15.875 124.46) (uuid d03d0a3e-e5e2-4fdb-85cd-f9e88647144c)) + (no_connect (at 127.635 48.895) (uuid d6fc7b4c-e15b-48d1-bfa2-5f099c8b1785)) + (no_connect (at 53.975 59.69) (uuid dd636cad-c577-4aac-8868-27d8f49f1172)) + (no_connect (at 15.875 121.92) (uuid dec13573-505f-471d-a764-be5faeedcec5)) + (no_connect (at 81.915 43.815) (uuid df84d651-f86b-47d5-a78d-0fb7f018357f)) + (no_connect (at 91.44 78.74) (uuid e6392d41-fe6d-4d76-91f2-79242055204c)) + (no_connect (at 81.28 78.74) (uuid eff42c43-fc6b-46c1-9c59-b78e3a6b2c0c)) + + (wire (pts (xy 71.12 163.195) (xy 62.865 163.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 00479ac1-789f-471d-a76b-6cc685c0dcd6) + ) + (wire (pts (xy 127.635 46.355) (xy 130.175 46.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0193bd75-6df0-4731-9456-c10e903a4860) + ) + (wire (pts (xy 113.665 41.275) (xy 113.665 32.385)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 04b4122c-f1a4-489b-b0d5-fe7dbf1a0d59) + ) + (wire (pts (xy 65.405 116.84) (xy 61.595 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 06c65f06-4671-40aa-bad8-545912984608) + ) + (wire (pts (xy 79.375 73.66) (xy 79.375 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 08e2bd86-837b-489f-8d63-fdfe4c0e69db) + ) + (wire (pts (xy 77.47 59.69) (xy 81.28 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 091ec41f-06b0-4c79-9db5-a35756703c69) + ) + (wire (pts (xy 71.12 124.46) (xy 71.12 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b061f32-e656-4baa-87a8-df13b56741ae) + ) + (wire (pts (xy 78.105 36.195) (xy 78.105 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0c59179f-b5be-4972-a4b7-909517fea9b6) + ) + (wire (pts (xy 361.95 71.755) (xy 361.95 70.485)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0cf3dc8c-fe33-47df-ad7b-de44c71c0bdc) + ) + (wire (pts (xy 127.635 43.815) (xy 144.78 43.815)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1013a57f-9229-43bb-a8a4-35d33d4ea1c9) + ) + (wire (pts (xy 14.605 133.35) (xy 14.605 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 103d291b-5c1d-4f31-800f-e7958c0d56fd) + ) + (wire (pts (xy 91.44 57.15) (xy 91.44 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13e29454-a071-468c-962a-4df357e33b32) + ) + (wire (pts (xy 53.975 52.07) (xy 113.665 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1405ffb8-7941-440c-92a1-ecf2543a573f) + ) + (wire (pts (xy 78.74 137.16) (xy 78.74 168.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 156fc478-b0d8-4fc6-aadd-e25f8316780d) + ) + (wire (pts (xy 361.95 70.485) (xy 363.22 70.485)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 15fa0017-e152-42f5-ac44-76cd2c645444) + ) + (wire (pts (xy 113.665 32.385) (xy 117.475 32.385)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 174a3cd4-0f32-4b3b-8067-5657e06e383b) + ) + (wire (pts (xy 61.595 124.46) (xy 71.12 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 180aa0e7-a523-432e-9daf-864c530434d3) + ) + (wire (pts (xy 92.075 38.735) (xy 109.22 38.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 23a5192d-9817-431f-a2b4-b55079f46918) + ) + (wire (pts (xy 113.665 27.305) (xy 117.475 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 24ac06ef-6c6f-416b-9aff-ba3235389d2e) + ) + (wire (pts (xy 65.405 150.495) (xy 65.405 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2d624ef4-a3d2-4000-94f1-610dd9c419a3) + ) + (wire (pts (xy 55.245 68.58) (xy 55.245 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f54664e-ff09-4f8b-884d-f04b46fe763a) + ) + (wire (pts (xy 61.595 137.16) (xy 78.74 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 31db3f4d-3db7-454d-b1f0-311fe64c2031) + ) + (wire (pts (xy 77.47 81.915) (xy 77.47 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 31e15f49-63fe-4615-84a6-f9f6265876d7) + ) + (wire (pts (xy 53.975 64.77) (xy 55.245 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3317af0b-cde8-4e02-961a-8aa4bd87acc2) + ) + (wire (pts (xy 231.14 147.955) (xy 231.14 146.685)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 331cc089-fa02-46b6-afe3-93511ff59960) + ) + (wire (pts (xy 55.245 49.53) (xy 55.245 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 347c4075-e349-478e-8326-286d690ab884) + ) + (wire (pts (xy 78.74 168.275) (xy 62.865 168.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 356bb2fc-77ae-44d3-ac10-d3378223b381) + ) + (wire (pts (xy 115.57 43.815) (xy 115.57 46.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3580293b-0e3c-4ca8-a3a0-7a64e7aaed8b) + ) + (wire (pts (xy 127.635 27.305) (xy 144.78 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3600ff65-3ec5-4e7a-9423-4276ced0b9cd) + ) + (wire (pts (xy 91.44 71.12) (xy 108.585 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 38e899f0-2c84-4c0b-9847-a89b0f0c3a9b) + ) + (wire (pts (xy 61.595 129.54) (xy 74.93 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3cf9a5eb-4d9a-418d-9f22-a5596e0b7793) + ) + (wire (pts (xy 14.605 132.08) (xy 15.875 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 444bb6eb-0b9f-4910-9a0b-e035172a44c2) + ) + (wire (pts (xy 61.595 132.08) (xy 71.12 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4497c54a-1ba7-4559-aff5-487c6ea43915) + ) + (wire (pts (xy 73.025 127) (xy 73.025 158.115)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44ad00ee-e21f-4d6d-a3ce-0ce8cea95fbd) + ) + (wire (pts (xy 18.415 174.625) (xy 18.415 173.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4505b2e0-e71e-4535-8d40-e26569e8cc5f) + ) + (wire (pts (xy 92.075 22.225) (xy 109.22 22.225)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 492e0e43-a450-4070-aff4-a4bea2cde5c1) + ) + (wire (pts (xy 94.615 41.275) (xy 94.615 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4b9d14af-449e-4c1b-a4b3-1db4848febb7) + ) + (wire (pts (xy 76.835 134.62) (xy 99.06 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4d8944c5-97f7-4937-9aa0-c4bdbe4fdb62) + ) + (wire (pts (xy 61.595 121.92) (xy 69.215 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ec8e291-74bc-430d-8452-0e11e7d5716d) + ) + (wire (pts (xy 117.475 43.815) (xy 115.57 43.815)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 510b554c-c4b4-43ed-a51a-1fe1bbdf64dd) + ) + (wire (pts (xy 65.405 116.84) (xy 99.06 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 53ed0c7b-b2a8-4fea-96d0-ffde2f5d558d) + ) + (wire (pts (xy 55.245 67.31) (xy 53.975 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 55798b70-d310-4ed1-b758-9a6943303500) + ) + (wire (pts (xy 67.31 153.035) (xy 67.31 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 55a391b8-ea8b-4c11-b2dd-141c26084b65) + ) + (wire (pts (xy 62.865 153.035) (xy 67.31 153.035)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 58264ca8-861a-40b0-b31b-b360f642aa91) + ) + (wire (pts (xy 130.175 46.355) (xy 130.175 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5aab4030-95ba-4002-b5a2-b6ab9b4b6f3e) + ) + (wire (pts (xy 80.01 38.735) (xy 80.01 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5cb1b951-ac51-4a03-b264-7d1190a8ecfe) + ) + (wire (pts (xy 91.44 76.2) (xy 93.98 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 63c0a490-127b-46db-a2a3-06011acdf267) + ) + (wire (pts (xy 77.47 71.12) (xy 81.28 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 648277e4-f671-4482-a93e-f4d6934869b8) + ) + (wire (pts (xy 69.215 121.92) (xy 69.215 155.575)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6768c2a1-21fd-4579-9d34-38573f7bc13d) + ) + (wire (pts (xy 113.665 29.845) (xy 113.665 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 677fc0e7-9871-4a9e-9724-6f9686fc614c) + ) + (wire (pts (xy 361.95 70.485) (xy 361.95 67.945)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6920e394-712d-491d-adf6-e33ecd9639b3) + ) + (wire (pts (xy 398.78 70.485) (xy 397.51 70.485)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 697713bf-391a-4cec-a849-d583caf75d92) + ) + (wire (pts (xy 93.98 81.915) (xy 77.47 81.915)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6b1a9e90-5662-4302-a3d7-8bb55a6fc004) + ) + (wire (pts (xy 71.12 163.195) (xy 71.12 170.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 726502e7-989b-4c72-bb3a-ac231d0c4043) + ) + (wire (pts (xy 14.605 129.54) (xy 15.875 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 73a08dbf-ee19-4b73-89fa-b125dc1e1382) + ) + (wire (pts (xy 81.28 73.66) (xy 79.375 73.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 787264a4-d108-4d72-ba39-f97f798ed461) + ) + (wire (pts (xy 228.6 72.39) (xy 229.87 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7a466b0f-56e1-4885-a189-b635548ae885) + ) + (wire (pts (xy 92.075 27.305) (xy 109.22 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7f0889ab-499a-4b05-9f5e-cc4487d77861) + ) + (wire (pts (xy 93.98 76.2) (xy 93.98 81.915)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 802a2ae4-1103-441d-82a2-c69b310f6897) + ) + (wire (pts (xy 113.665 41.275) (xy 117.475 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 81097d48-c8b1-4e0f-87fe-e50c035992bf) + ) + (wire (pts (xy 69.215 155.575) (xy 62.865 155.575)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 81c87b74-9133-407d-a0b2-97925441383c) + ) + (wire (pts (xy 74.93 160.655) (xy 62.865 160.655)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 82809eb7-9b17-4c47-bcfb-0f38b7bf3793) + ) + (wire (pts (xy 265.43 72.39) (xy 264.16 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 84aef4e1-cb87-4558-946c-a16085659693) + ) + (wire (pts (xy 76.835 134.62) (xy 76.835 165.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 86da3034-06dd-4c57-9bfa-e5da85bd1302) + ) + (wire (pts (xy 67.31 119.38) (xy 99.06 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 892c8cdb-a9e5-4418-858c-c5347a5f67ff) + ) + (wire (pts (xy 76.835 165.735) (xy 62.865 165.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8b0077bd-7691-47c0-8e95-db22430f7d74) + ) + (wire (pts (xy 16.51 62.23) (xy 27.305 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8bba2ebb-d39b-40ec-95ef-7a723d28bc74) + ) + (wire (pts (xy 91.44 73.66) (xy 108.585 73.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e1ad01a-85eb-4d6a-86f6-88afebe1afd1) + ) + (wire (pts (xy 77.47 59.69) (xy 77.47 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8eead62e-5f31-4eaa-aab4-e850a0f75d89) + ) + (wire (pts (xy 34.925 57.15) (xy 38.735 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8fd89165-4ddd-436c-b764-ea9443926143) + ) + (wire (pts (xy 127.635 41.275) (xy 144.78 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 905e866b-0fbb-47ea-9f95-e6623a8f26a0) + ) + (wire (pts (xy 53.975 46.99) (xy 78.105 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 90ea89a8-3f09-44b2-ae35-f9a3c19c0105) + ) + (wire (pts (xy 55.245 54.61) (xy 55.245 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96f3c853-45c5-42ba-8fb5-296fd49e83aa) + ) + (wire (pts (xy 73.025 158.115) (xy 62.865 158.115)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 98eb410e-6d19-4fac-ae97-e6826e51749a) + ) + (wire (pts (xy 78.105 46.99) (xy 78.105 36.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9918adb7-0ced-404c-84c0-292a294646f3) + ) + (wire (pts (xy 265.43 73.66) (xy 265.43 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9cd5d46f-23c6-499b-bd02-1d4f846ae5ad) + ) + (wire (pts (xy 55.245 64.77) (xy 55.245 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a19e4352-bf70-4c4a-9471-227e2f9ef35f) + ) + (wire (pts (xy 55.245 44.45) (xy 55.245 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2c7e3e1-40ea-4d52-86c6-b062c59b0265) + ) + (wire (pts (xy 69.215 121.92) (xy 99.06 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a3571be1-9ff7-422b-ba59-f30940fd6ce1) + ) + (wire (pts (xy 94.615 46.99) (xy 78.105 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a41570a0-2b3e-496a-aefc-87aa085c61b3) + ) + (wire (pts (xy 71.12 132.08) (xy 71.12 163.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a5de9052-d49f-4c9f-91e0-39bfc8c4c419) + ) + (wire (pts (xy 78.105 24.765) (xy 81.915 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a665b4d4-e282-4dcb-8069-019411c581ad) + ) + (wire (pts (xy 127.635 27.305) (xy 127.635 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a66f7a87-660f-44cc-8059-37fc13722415) + ) + (wire (pts (xy 16.51 57.15) (xy 27.305 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid aabf13bc-7f36-4e82-bb73-54df8749ec27) + ) + (wire (pts (xy 91.44 57.15) (xy 108.585 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid adb3f497-22ce-41e6-8e65-51ed5b71df12) + ) + (wire (pts (xy 80.01 41.275) (xy 81.915 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b1a9137b-2b56-48ac-8852-90f2ece829d3) + ) + (wire (pts (xy 74.93 129.54) (xy 74.93 160.655)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b2720a13-33b2-4394-8199-1ee806b36b69) + ) + (wire (pts (xy 130.175 52.07) (xy 113.665 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b3e82a10-bb7e-47e9-b277-92adea352002) + ) + (wire (pts (xy 92.075 36.195) (xy 109.22 36.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b40369e7-01fc-4a70-b567-c19bd4522f47) + ) + (wire (pts (xy 74.93 129.54) (xy 99.06 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b4752eee-01bc-4e6d-a585-78d0e0803933) + ) + (wire (pts (xy 92.075 41.275) (xy 94.615 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b758726d-6723-422e-9123-c576088b275c) + ) + (wire (pts (xy 53.975 57.15) (xy 77.47 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bb5ccee2-9f48-4656-8557-11f39937db53) + ) + (wire (pts (xy 81.915 38.735) (xy 80.01 38.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bf20c5ea-adec-456f-bb33-3240d4f75f4b) + ) + (wire (pts (xy 231.14 146.685) (xy 232.41 146.685)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bf331de4-82fe-4815-aa7d-b9bad4b5d265) + ) + (wire (pts (xy 92.075 22.225) (xy 92.075 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c225f15c-0be6-4528-bb53-2e23604e4f13) + ) + (wire (pts (xy 267.97 147.955) (xy 267.97 146.685)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c5b15a94-8438-4643-8c22-26e1f620f61d) + ) + (wire (pts (xy 127.635 32.385) (xy 144.78 32.385)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caf31c82-42ba-40a2-910d-6e22fd4b9805) + ) + (wire (pts (xy 267.97 146.685) (xy 266.7 146.685)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cb61bf83-71d8-4949-b86a-3cf7908e23e6) + ) + (wire (pts (xy 53.975 54.61) (xy 55.245 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cc02d3a3-fd9d-43b8-8912-d3cbcccfe527) + ) + (wire (pts (xy 77.47 62.23) (xy 77.47 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cd181458-9899-4e0d-bc77-ddc9b9fa29c5) + ) + (wire (pts (xy 46.355 74.93) (xy 46.355 76.835)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce7737a4-8523-4376-b155-73bc96295ec2) + ) + (wire (pts (xy 78.105 27.305) (xy 81.915 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cf8eed72-5bf9-4e65-950b-e234a13b039e) + ) + (wire (pts (xy 91.44 62.23) (xy 108.585 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d36628a0-66b6-458a-aba4-70f57ed58a25) + ) + (wire (pts (xy 61.595 134.62) (xy 76.835 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d4cb6490-b04c-4884-bbc6-70c94776edd7) + ) + (wire (pts (xy 398.78 71.755) (xy 398.78 70.485)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d52bf217-669d-42bf-b5ad-f1de99a57a8b) + ) + (wire (pts (xy 77.47 57.15) (xy 81.28 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d7bb4234-9c6b-47bd-958a-050da81cdd26) + ) + (wire (pts (xy 61.595 127) (xy 73.025 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d81ff3f5-758f-48db-9a13-0aef70bf1bfc) + ) + (wire (pts (xy 53.975 44.45) (xy 55.245 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d96febfa-10ea-43d7-a961-07336b702b40) + ) + (wire (pts (xy 77.47 57.15) (xy 77.47 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid de0e8714-c168-4876-9e23-1b44bc4425b8) + ) + (wire (pts (xy 14.605 132.08) (xy 14.605 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid de33ec42-2754-47d3-865e-0bc664076473) + ) + (wire (pts (xy 228.6 73.66) (xy 228.6 72.39)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid deb450f3-b733-4f66-9c84-e716a7b4ac16) + ) + (wire (pts (xy 113.665 32.385) (xy 113.665 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ded6d037-a840-410f-9e1c-0fcfc4f9b8a2) + ) + (wire (pts (xy 53.975 49.53) (xy 55.245 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df43d862-94dc-40cf-a4cf-88a380f314e2) + ) + (wire (pts (xy 61.595 119.38) (xy 67.31 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df627568-fa35-4a85-83cf-5ffac6a49e01) + ) + (wire (pts (xy 79.375 76.2) (xy 81.28 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e19107db-7e7b-4aba-a7cc-ebaa8a3fdf3b) + ) + (wire (pts (xy 113.665 52.07) (xy 113.665 41.275)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e3f398ea-c9e4-4703-970f-6d78aa7a6a4a) + ) + (wire (pts (xy 34.925 62.23) (xy 38.735 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e7e10b9a-b0ee-4231-a640-df2c847f0c06) + ) + (wire (pts (xy 78.105 36.195) (xy 81.915 36.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e8038eb2-6f5e-470d-be92-b93173748406) + ) + (wire (pts (xy 77.47 62.23) (xy 81.28 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ea4631bb-4aa7-46b0-9938-784ca1e33e18) + ) + (wire (pts (xy 78.105 22.225) (xy 81.915 22.225)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ea5aaae7-62ce-43dc-8e09-7cc6955736c5) + ) + (wire (pts (xy 78.105 27.305) (xy 78.105 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eafe41d0-4b0b-4886-82c5-48162fbf89ba) + ) + (wire (pts (xy 113.665 29.845) (xy 117.475 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f01d5749-746e-4265-9154-39bc2ecb9b4c) + ) + (wire (pts (xy 18.415 173.355) (xy 19.685 173.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f1502f2c-cc7f-4a7c-807a-b450be0a2a0e) + ) + (wire (pts (xy 73.025 112.395) (xy 73.025 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f19ceaad-4c7a-436d-a263-76d8005c6a3a) + ) + (wire (pts (xy 361.95 67.945) (xy 363.22 67.945)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3a0ceee-7c32-4c5e-85a4-4861505f1459) + ) + (wire (pts (xy 78.74 137.16) (xy 99.06 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f4cd7693-78ff-4cd9-81d1-a3a8c3230c8a) + ) + (wire (pts (xy 78.105 24.765) (xy 78.105 22.225)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f4e43a2e-b459-4ec5-8c51-dbe0c83347a3) + ) + (wire (pts (xy 62.865 150.495) (xy 65.405 150.495)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fa162d38-af49-49b2-9aec-55c3fa4de2fb) + ) + (wire (pts (xy 115.57 46.355) (xy 117.475 46.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fbd68918-1459-4096-a0a5-7032a5e1c7b5) + ) + + (label "VGA_BLUE_1" (at 108.585 71.12 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 097a7f16-eb0a-4cda-9b0e-82544140128f) + ) + (label "VGA_RED" (at 64.135 46.99 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 09bb160a-e167-4b42-b70f-9754f7e7ea28) + ) + (label "VGA_GREEN_2" (at 144.78 32.385 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 0c655ad9-960d-4a1f-8071-c297709159f5) + ) + (label "VGA_GREEN_0" (at 144.78 43.815 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 1084e720-7d97-4382-b1df-fcf71e7feaf4) + ) + (label "SD_DAT0" (at 99.06 134.62 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 2f2859a2-58ed-4c0a-a6b4-607a711cdeff) + ) + (label "VGA_BLUE_2" (at 108.585 62.23 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 568368ea-90f6-400f-8544-420a4c6dc098) + ) + (label "VGA_BLUE" (at 64.135 57.15 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 5c3ba644-d8a5-4adc-b195-1632d6f3b8f2) + ) + (label "VGA_RED_1" (at 109.22 36.195 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 5e8e3bbb-6879-4b63-b748-86a38208fad4) + ) + (label "VGA_BLUE_0" (at 108.585 73.66 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 617e5836-e735-4661-9dde-3484a422af56) + ) + (label "SD_CLK" (at 99.06 129.54 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 62feb7ad-96cd-4455-ae53-e17f0f002098) + ) + (label "VGA_RED_0" (at 109.22 38.735 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 63ff0fcf-8df7-45d0-91b5-d6ba65439489) + ) + (label "VGA_GREEN_3" (at 144.78 27.305 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 716ec85d-8956-4dd1-b105-3f0e5820428c) + ) + (label "SD_DAT1" (at 99.06 137.16 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 7268b070-9c05-47d0-9be3-d6d241b468a9) + ) + (label "VGA_HS" (at 16.51 57.15 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 8af00850-3351-4184-9da0-86cb164fde5a) + ) + (label "SD_DAT2" (at 99.06 116.84 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid 9b575138-6a30-49dd-97fc-a7492f4876a0) + ) + (label "VGA_GREEN_1" (at 144.78 41.275 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid b7b9dcb0-8892-47ae-88bd-e128eefb9a62) + ) + (label "VGA_GREEN" (at 64.135 52.07 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid c5777251-2b22-47b3-b7be-74ce71804c28) + ) + (label "VGA_RED_2" (at 109.22 27.305 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid d76db9f2-7b18-4243-bb15-0e9d0184df74) + ) + (label "SD_DAT3" (at 99.06 119.38 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid d87ca2db-dabf-4303-b7dd-7ff7dc5ef4e8) + ) + (label "VGA_RED_3" (at 109.22 22.225 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid dc6b5def-ec3e-40d4-9702-ee43f462a30a) + ) + (label "VGA_BLUE_3" (at 108.585 57.15 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid e52bfb01-c5c8-433e-acd1-6d69ede94075) + ) + (label "SD_CMD" (at 99.06 121.92 180) + (effects (font (size 1.27 1.27)) (justify right bottom)) + (uuid e84c87c7-4bfa-4868-ba84-e327c27faac0) + ) + (label "VGA_VS" (at 16.51 62.23 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid f0b55094-469f-4c5b-b956-a959c62f316b) + ) + + (symbol (lib_id "Device:R_Pack04") (at 86.995 27.305 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00a34619-4b85-4d3a-a21a-f8a6740a2565) + (property "Reference" "RN1" (id 0) (at 90.17 19.685 90)) + (property "Value" "1k" (id 1) (at 84.455 19.05 90)) + (property "Footprint" "" (id 2) (at 86.995 34.29 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 86.995 27.305 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 63eaf4ee-41ba-49af-b08c-1dff7b58fd12)) + (pin "2" (uuid a2f69cd4-5b52-455d-bb53-f34d6e850dce)) + (pin "3" (uuid bae79c36-c05b-4938-8a96-1489f2835ba2)) + (pin "4" (uuid d6b6df20-b965-4e20-8012-151dc4cf63d4)) + (pin "5" (uuid 51208da1-e445-407c-b988-c381c5969b17)) + (pin "6" (uuid ddb495d5-f516-4755-8902-52fbeb3d74a8)) + (pin "7" (uuid ef92f2ba-bf35-4aad-a1ea-9b3f2d03a8be)) + (pin "8" (uuid 7bdd5281-3838-4c80-9544-8b1a9a20d7be)) + ) + + (symbol (lib_id "Device:R") (at 31.115 57.15 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 0adac5e3-3d8a-43a6-b17d-8e16cf684c6e) + (property "Reference" "R1" (id 0) (at 26.67 54.61 90)) + (property "Value" "120" (id 1) (at 31.115 57.15 90)) + (property "Footprint" "" (id 2) (at 31.115 58.928 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 31.115 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ffdb33fd-77d9-4d20-ab09-bc06c002e64e)) + (pin "2" (uuid a8b043a0-4d20-4c58-98dd-cd630d4d4bf6)) + ) + + (symbol (lib_id "power:+3V3") (at 73.025 112.395 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 18a88cdc-8e27-451b-abe5-99ec4c2a108f) + (property "Reference" "#PWR?" (id 0) (at 73.025 116.205 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 73.025 106.68 0)) + (property "Footprint" "" (id 2) (at 73.025 112.395 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 73.025 112.395 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e7ac3005-be42-43cf-8010-254d537853b0)) + ) + + (symbol (lib_id "Header:T20BGA256_DEV_GPIO_1B1C") (at 379.73 23.495 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 18e6a82d-f9ae-4f72-b2c4-c51d742a18a0) + (property "Reference" "U2" (id 0) (at 380.365 19.05 0)) + (property "Value" "T20BGA256_DEV_GPIO_1B1C" (id 1) (at 380.365 21.59 0)) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical" (id 2) (at 379.73 23.495 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 379.73 23.495 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6fe77485-c995-4baf-8432-fda100657fee)) + (pin "10" (uuid ae55fb6f-067d-44b3-8738-88fbcbe5d187)) + (pin "11" (uuid a74a4094-46e6-45c6-9ff4-d07088647a03)) + (pin "12" (uuid fe6e3570-f13a-4d55-9cc1-a16558c00168)) + (pin "13" (uuid d20ef643-85f6-4b64-9f2b-2c9e7bb274a1)) + (pin "14" (uuid d777a9f3-abdb-4868-a6c7-f2b93245fae5)) + (pin "15" (uuid 1e422942-8006-45c7-adaa-d2466f70e748)) + (pin "16" (uuid 2422001b-5ffd-4142-ab59-11be8ab496b6)) + (pin "17" (uuid 10f1d706-e828-4231-a8c4-6e98fd9a7d2a)) + (pin "18" (uuid 5337dfe9-37fb-4b91-8004-6f8d34c77500)) + (pin "19" (uuid 4912ae09-9920-42b7-a863-2c5bff3769fe)) + (pin "2" (uuid 244eb55e-8ee4-4b5c-a00d-58e043a5d917)) + (pin "20" (uuid e86759dd-14a6-483f-a2b4-741a2b09a2b6)) + (pin "21" (uuid 869c2803-bc68-47c4-8391-cdff5c28727a)) + (pin "22" (uuid cd97f9d6-8d5f-426e-a981-35b131738ba4)) + (pin "23" (uuid 46ce5bcd-2124-4cd4-b6cb-6aeede7257c5)) + (pin "24" (uuid 418a1fa9-15cb-4a37-8f8e-ff0ae63a4993)) + (pin "25" (uuid 43760f81-3291-472f-8a6c-f3a49577e352)) + (pin "26" (uuid df557d42-a386-402b-90a8-c610eabd6e25)) + (pin "27" (uuid 9851a852-1130-4f34-9443-53f0f0021230)) + (pin "28" (uuid 6ee48f65-cb0a-45e8-9d11-53c7062c0b8e)) + (pin "29" (uuid a082f614-80e9-4dfa-af92-018356cef646)) + (pin "3" (uuid 897eeb7a-f2bc-4d7e-a238-1cf984824621)) + (pin "30" (uuid 5e2b3034-ca85-47d9-9dfa-271bb9d52301)) + (pin "31" (uuid 59aef4af-c07c-466a-8e4d-fa86aaf9b5ee)) + (pin "32" (uuid 7fd49fc2-4459-4d38-aae4-d29b45612a0e)) + (pin "33" (uuid 79c6e9fe-b4ed-4f63-8996-f912ed2d3b0b)) + (pin "34" (uuid 783ef069-c05e-4c2b-ba19-4ed6e10db321)) + (pin "35" (uuid e81b79c8-01e2-4058-b660-4c3749d34130)) + (pin "36" (uuid f37edc20-ca30-4f68-9fec-8e1fcd3731b5)) + (pin "4" (uuid cdfa9eec-dbea-4305-b408-4b6d9bdbdb6f)) + (pin "5" (uuid 9655f59d-3fef-4e0d-b139-3a22ef36e202)) + (pin "6" (uuid 426d1e23-e394-4eb3-bf22-20f26ad34dca)) + (pin "7" (uuid 35860e9f-0474-4ecb-8afc-c25381f81863)) + (pin "8" (uuid 2aa53f54-9488-4aaf-99eb-f5d7a30eaeb0)) + (pin "9" (uuid da9e5be8-d447-4013-9fc7-03ed08ed3bbd)) + ) + + (symbol (lib_id "Device:R_Pack04") (at 122.555 32.385 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 402d479d-b3fb-4e3f-8043-e07c5c382025) + (property "Reference" "RN2" (id 0) (at 125.73 24.765 90)) + (property "Value" "1k" (id 1) (at 120.015 24.13 90)) + (property "Footprint" "" (id 2) (at 122.555 39.37 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 122.555 32.385 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c001c7ad-0a5a-44b4-a170-3e823633f00c)) + (pin "2" (uuid c0a7218a-6120-4abd-8e5e-c687e1840817)) + (pin "3" (uuid 798b1a97-3b74-4913-918d-42494d5b7146)) + (pin "4" (uuid c09eaaaf-e83b-48d1-9884-57ddf597e982)) + (pin "5" (uuid 1b267d07-fd64-4423-a0e2-71800e65efd5)) + (pin "6" (uuid 453b2173-4750-441c-a921-afbdc3018584)) + (pin "7" (uuid c96cd2d1-e06f-4293-a279-530021fdcff7)) + (pin "8" (uuid 630ad7ac-1ecc-4974-b74b-95528b9be3ef)) + ) + + (symbol (lib_id "Device:R_Pack04") (at 86.36 62.23 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 4c5fec20-7362-4634-9a84-1e4aeb524405) + (property "Reference" "RN5" (id 0) (at 89.535 54.61 90)) + (property "Value" "1k" (id 1) (at 83.82 53.975 90)) + (property "Footprint" "" (id 2) (at 86.36 69.215 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 86.36 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 76a3852f-b072-4dc1-8253-df8c6989311c)) + (pin "2" (uuid 38623e9b-5c97-4b41-a88b-10e66e964042)) + (pin "3" (uuid faa9aee3-c276-4429-898b-b19fb1523142)) + (pin "4" (uuid 68bb13a5-bbf5-45e6-9b57-485b9335d903)) + (pin "5" (uuid f9bc640e-f006-4417-889d-9b533418cbba)) + (pin "6" (uuid 187204ff-1607-4ec6-bd4c-fa03f90fdb37)) + (pin "7" (uuid 4c4a9c89-d4e8-446a-b78b-7adb689a09b0)) + (pin "8" (uuid 332d6874-7352-48e5-949f-11fe81979326)) + ) + + (symbol (lib_id "power:GND") (at 398.78 71.755 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4c8d3429-c415-4367-a44a-fc1bf968c5b4) + (property "Reference" "#PWR06" (id 0) (at 398.78 78.105 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 398.78 76.2 0)) + (property "Footprint" "" (id 2) (at 398.78 71.755 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 398.78 71.755 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c13f0c14-49ce-4b0a-b571-085f22be9ed3)) + ) + + (symbol (lib_id "power:GND") (at 265.43 73.66 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4fee6b83-5f12-4418-83ed-2774803956be) + (property "Reference" "#PWR04" (id 0) (at 265.43 80.01 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 265.43 78.74 0)) + (property "Footprint" "" (id 2) (at 265.43 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 265.43 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 17795b5f-35c9-424a-b33a-afbc0edf711e)) + ) + + (symbol (lib_id "power:GND") (at 361.95 71.755 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 56b82d6f-08dd-4a0a-bd4d-8e161541e4bf) + (property "Reference" "#PWR05" (id 0) (at 361.95 78.105 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 361.95 76.2 0)) + (property "Footprint" "" (id 2) (at 361.95 71.755 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 361.95 71.755 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 06d949a0-5dde-42d1-9a31-30981406c01f)) + ) + + (symbol (lib_id "power:GND") (at 55.245 68.58 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 574f0cd7-4f5a-4fd4-9005-fc45d8a0d960) + (property "Reference" "#PWR01" (id 0) (at 55.245 74.93 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 55.245 73.025 0)) + (property "Footprint" "" (id 2) (at 55.245 68.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 55.245 68.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0e986a88-7c13-4281-951b-57bfedd63240)) + ) + + (symbol (lib_id "power:GND") (at 267.97 147.955 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 610374ad-71c2-4236-9105-05f3b73c72ec) + (property "Reference" "#PWR08" (id 0) (at 267.97 154.305 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 267.97 153.035 0)) + (property "Footprint" "" (id 2) (at 267.97 147.955 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 267.97 147.955 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid cb38b461-9c91-403c-b6ac-f837749fe7bd)) + ) + + (symbol (lib_id "Device:R_Pack04") (at 86.36 76.2 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 79bc1ad9-fa8c-403c-a93d-0dbf2f562882) + (property "Reference" "RN6" (id 0) (at 90.17 68.58 90)) + (property "Value" "2k" (id 1) (at 83.82 68.58 90)) + (property "Footprint" "" (id 2) (at 86.36 83.185 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 86.36 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0049ad84-ed22-40c4-99e2-bbbc012aa410)) + (pin "2" (uuid 91f5dff8-8963-4d10-ad9d-437896460de5)) + (pin "3" (uuid 3bdfa8d4-a55f-4cd6-b86e-2497db03769a)) + (pin "4" (uuid 75ea4609-e31b-4236-b9d7-ba5fa194a5b3)) + (pin "5" (uuid ae18f3b3-5d86-4770-95d7-c12ec4088596)) + (pin "6" (uuid 705bcd87-60a8-4ecf-845a-3086a2748e76)) + (pin "7" (uuid 874a5781-036f-4371-abc7-b64bcc484c6c)) + (pin "8" (uuid d1fb182a-0ae1-4de4-8e42-61fc2cb656c9)) + ) + + (symbol (lib_id "Device:R_Pack04") (at 86.995 41.275 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 7c69a070-d611-4829-91c9-d6c8bcababfb) + (property "Reference" "RN3" (id 0) (at 90.805 33.655 90)) + (property "Value" "2k" (id 1) (at 84.455 33.655 90)) + (property "Footprint" "" (id 2) (at 86.995 48.26 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 86.995 41.275 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2eabdfcf-50a5-4c8d-b153-d56ced0c2522)) + (pin "2" (uuid b7d3b803-d696-41c2-8ca1-433b91188afe)) + (pin "3" (uuid 032d21ea-95fd-449e-94b3-b930f59023bf)) + (pin "4" (uuid 87f56629-ec5d-4618-bde5-11a07aadcdfc)) + (pin "5" (uuid b243a4f2-2e52-4f7e-a29c-71d3609b9b9c)) + (pin "6" (uuid a1013517-036a-4e04-a9c2-b04781d088ec)) + (pin "7" (uuid 8bfdf1dc-981d-467d-8f61-be0cf5bb69d3)) + (pin "8" (uuid fe8090d3-deeb-431a-a7a4-21361ba088d4)) + ) + + (symbol (lib_id "Device:R_Pack04") (at 122.555 46.355 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 8195dcfa-90bd-4214-95e0-4ff112e7b91e) + (property "Reference" "RN4" (id 0) (at 126.365 38.735 90)) + (property "Value" "2k" (id 1) (at 120.015 38.735 90)) + (property "Footprint" "" (id 2) (at 122.555 53.34 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 122.555 46.355 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0ec86947-bf68-41c7-ab72-4b19b09de17a)) + (pin "2" (uuid 60f9aa2a-78e1-4fd3-ab65-6a15f71052dc)) + (pin "3" (uuid 216bf330-b1d6-455d-bcad-65137a0c1866)) + (pin "4" (uuid ee65ab23-fb15-4aac-a86b-4a62be004f5b)) + (pin "5" (uuid 341d1a78-d8e1-4c8f-a556-84b7ed2bfd29)) + (pin "6" (uuid a8845893-4d05-4df6-baf8-275e84fb7a88)) + (pin "7" (uuid 5a7d4869-d283-42f5-90dd-c30017097b25)) + (pin "8" (uuid 4f135a24-5591-4072-8db1-b1f4367610f5)) + ) + + (symbol (lib_id "Connector:DB15_Female_HighDensity_MountingHoles") (at 46.355 57.15 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 83e6c9e8-cf1c-4bee-a197-b11cec8dcf84) + (property "Reference" "J1" (id 0) (at 46.355 34.29 0)) + (property "Value" "DB15_Female_HighDensity_MountingHoles" (id 1) (at 46.355 36.83 0)) + (property "Footprint" "" (id 2) (at 70.485 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" " ~" (id 3) (at 70.485 46.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "0" (uuid 2fa41194-6f2f-4415-a278-cf6bf092c254)) + (pin "1" (uuid 1e22be44-2e68-4ba0-8c74-b53bd12069ab)) + (pin "10" (uuid ab5531f8-84a5-4e70-b6df-d52a51cd416b)) + (pin "11" (uuid 603b411f-efc5-4f2c-acca-98c55e21b6e5)) + (pin "12" (uuid a928f1e3-de40-4e7d-a4c3-ca434f3e6ba7)) + (pin "13" (uuid dfa558ed-da56-40ce-9e08-0a55323c9694)) + (pin "14" (uuid de103ca1-f329-45b7-ac1a-5c42c23106c2)) + (pin "15" (uuid 52bc6300-8193-41fc-8663-191db7980f63)) + (pin "2" (uuid 10de0d4e-76b2-4c4f-90ad-479411865f4d)) + (pin "3" (uuid 71ffc03f-1135-4374-bffc-fbfe162eedd4)) + (pin "4" (uuid 183caedf-9742-42bf-9d12-c8163063a45e)) + (pin "5" (uuid 4dd65195-bcd8-4132-9965-cbe54c4e121e)) + (pin "6" (uuid 8de6a1a2-1512-47d7-bda4-bde4a082c904)) + (pin "7" (uuid 22736876-f13d-40d1-b809-ebf2cb84a67e)) + (pin "8" (uuid 06870aef-c046-4091-8f90-0b8cacc7228b)) + (pin "9" (uuid 7a7afe3f-de28-4085-941c-42730be319ec)) + ) + + (symbol (lib_id "power:GND") (at 71.12 170.18 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8e850c5e-ee72-4d3d-8d0c-c81c6f8602e4) + (property "Reference" "#PWR?" (id 0) (at 71.12 176.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 71.12 175.26 0)) + (property "Footprint" "" (id 2) (at 71.12 170.18 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 71.12 170.18 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 740fb733-b234-423c-878c-7adbc54bf9aa)) + ) + + (symbol (lib_id "power:GND") (at 228.6 73.66 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9c0516cc-3f40-45fe-b195-d8db33a27cdd) + (property "Reference" "#PWR03" (id 0) (at 228.6 80.01 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 228.6 78.74 0)) + (property "Footprint" "" (id 2) (at 228.6 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 228.6 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f1435fcf-68eb-4272-b6ac-d8d7c525781c)) + ) + + (symbol (lib_id "Device:R") (at 31.115 62.23 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 9e373180-e93e-4f4f-bb69-a31604a2ec88) + (property "Reference" "R2" (id 0) (at 26.67 59.69 90)) + (property "Value" "120" (id 1) (at 31.115 62.23 90)) + (property "Footprint" "" (id 2) (at 31.115 64.008 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 31.115 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6f18359c-df77-4da5-8ec9-066de2076d83)) + (pin "2" (uuid 3bfa5356-d76f-4af6-a667-40f973d095da)) + ) + + (symbol (lib_id "Connector:SD_Card") (at 38.735 127 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a0eb9593-3322-4153-9b3d-fc9385acb14a) + (property "Reference" "J?" (id 0) (at 38.735 109.22 0)) + (property "Value" "SD_Card" (id 1) (at 38.735 111.76 0)) + (property "Footprint" "" (id 2) (at 38.735 127 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://portal.fciconnect.com/Comergent//fci/drawing/10067847.pdf" (id 3) (at 38.735 127 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d1786050-dac2-4dc0-86e5-f59a955781db)) + (pin "10" (uuid ca501173-8459-42d1-af0c-c6174fb8f487)) + (pin "11" (uuid 02a6a9cf-fbda-4b16-b195-ee1aa3711dd9)) + (pin "12" (uuid d55c17f1-8173-45bc-a3c9-ae65f8d25794)) + (pin "13" (uuid be63e1b6-043f-4212-bce3-95c7ad957831)) + (pin "2" (uuid dd3edc0f-c343-42c6-be84-5f9421e07009)) + (pin "3" (uuid e39f5a9d-2186-4a4f-b2f5-e3005111c0d8)) + (pin "4" (uuid afb9b195-7bb9-458d-8327-6a4a187926a4)) + (pin "5" (uuid b6e289ef-5f66-49b6-b93b-f8fbbe69b9ea)) + (pin "6" (uuid 28d2f591-8a52-415d-891d-4f8e808ad44c)) + (pin "7" (uuid 8a3dca66-69c2-47da-930a-f7589f773e1d)) + (pin "8" (uuid 51f8cb56-2687-41a0-811d-8fb613e280d1)) + (pin "9" (uuid 271e8cb2-a69b-4aab-a008-6c33488ad772)) + ) + + (symbol (lib_id "power:GND") (at 231.14 147.955 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid aa82ad4f-5ecc-4369-a780-cf06bb10cdb0) + (property "Reference" "#PWR07" (id 0) (at 231.14 154.305 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 231.14 153.035 0)) + (property "Footprint" "" (id 2) (at 231.14 147.955 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 231.14 147.955 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 032bd07a-b8ef-4c04-966e-ee57c8b8a7c7)) + ) + + (symbol (lib_id "Header:T20BGA256_DEV_GPIO_3") (at 250.19 103.505 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c3cf08d3-7b3d-4100-80a5-b4871588e46a) + (property "Reference" "U3" (id 0) (at 249.555 100.965 0)) + (property "Value" "T20BGA256_DEV_GPIO_3" (id 1) (at 249.555 103.505 0)) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x16_P2.54mm_Vertical" (id 2) (at 250.19 103.505 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 250.19 103.505 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6f89fec9-489c-4b32-a468-9a2f964b408a)) + (pin "10" (uuid c7cdec4c-606a-41ea-ac32-5bb79b20baa1)) + (pin "11" (uuid 24cdfe57-cd40-45be-aeec-cfd158fa6392)) + (pin "12" (uuid a9c1c37d-dda9-42f6-9b23-45a6fba98c46)) + (pin "13" (uuid f7cb3492-af35-402e-8573-bdf5256821ab)) + (pin "14" (uuid 6431bffd-4ee2-41dd-9937-ff18e87f5d7e)) + (pin "15" (uuid dab9eff9-f54b-4806-ab61-abfc1f69eddf)) + (pin "16" (uuid f63141ea-e707-438d-8606-56f9f5778025)) + (pin "17" (uuid 3300eae5-d006-48f1-aa60-f61456fe60a2)) + (pin "18" (uuid 8298a431-014a-4337-8ceb-f1765e8188d4)) + (pin "19" (uuid 91c88e15-a8c7-4a6c-8311-5b693ec8e8c0)) + (pin "2" (uuid d9210da6-ba90-4ce9-b0bc-2fad0fe50d6e)) + (pin "20" (uuid dc6c8d3a-5598-45fe-b788-e0a246a1c542)) + (pin "21" (uuid 36a1b6a1-d4c6-4af9-98b5-b625b5ef41bc)) + (pin "22" (uuid dd8ef35b-aff8-48f0-b6d7-ca81fe18ade7)) + (pin "23" (uuid 8b1b038b-4ccd-4a64-b73a-4a6ba57a8a10)) + (pin "24" (uuid d7966103-fa64-4685-8f1d-1dfe51abb115)) + (pin "25" (uuid c02a1a4b-0922-456b-ae8f-ca4a139b27d5)) + (pin "26" (uuid 0b7eadd9-8eac-4a41-9886-87352ae924ee)) + (pin "27" (uuid b383ac93-eb82-4235-838c-bfdcd19eeaa8)) + (pin "28" (uuid cd9f16d7-2f94-493e-8318-a8f651d1e0fd)) + (pin "29" (uuid a9548a52-6416-44bc-8754-7a9e2c637554)) + (pin "3" (uuid 7c3799d7-54d7-4d47-a420-f16f42e94843)) + (pin "30" (uuid 89284693-6c45-421b-9a20-bb5758a9a0dc)) + (pin "31" (uuid 3d174592-3274-4ea7-a69e-67b4fdb5d405)) + (pin "32" (uuid 3649aa5c-70f4-4244-9f6a-b06024f4c06a)) + (pin "4" (uuid ad387e5a-5f41-4057-bcfe-85873a5f3c0d)) + (pin "5" (uuid b9dd2c37-74a2-4cb6-9236-a99e77eecf21)) + (pin "6" (uuid 303daeae-c039-4cdc-af3d-5ad6321acac5)) + (pin "7" (uuid da574a35-d313-4e49-ba30-e3cbae0abc1d)) + (pin "8" (uuid e8af860e-2aa2-4e0f-9dea-e882d525feb6)) + (pin "9" (uuid 0ad30a76-be01-45f3-99d8-3d11ff2e2057)) + ) + + (symbol (lib_id "power:GND") (at 46.355 76.835 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c40dac7a-6e4b-4096-b52f-edb7ec9cb3b2) + (property "Reference" "#PWR02" (id 0) (at 46.355 83.185 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 46.355 81.915 0)) + (property "Footprint" "" (id 2) (at 46.355 76.835 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 46.355 76.835 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8e52922f-62cc-4f4a-bf8e-734f9b419d8f)) + ) + + (symbol (lib_id "power:GND") (at 18.415 174.625 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid da440c22-0df4-4b7f-8046-fa1facb63f02) + (property "Reference" "#PWR?" (id 0) (at 18.415 180.975 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 18.415 179.07 0)) + (property "Footprint" "" (id 2) (at 18.415 174.625 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 18.415 174.625 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e07013bf-30e3-4df2-ac09-f1c4fd4cfa82)) + ) + + (symbol (lib_id "Connector:Micro_SD_Card") (at 40.005 158.115 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e51c959f-a8c0-43ac-bd2e-265982ec9487) + (property "Reference" "J?" (id 0) (at 39.37 138.43 0)) + (property "Value" "Micro_SD_Card" (id 1) (at 39.37 140.97 0)) + (property "Footprint" "" (id 2) (at 10.795 150.495 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://katalog.we-online.de/em/datasheet/693072010801.pdf" (id 3) (at 40.005 158.115 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 824a3116-9ab0-4833-aab7-e73eed74d7fb)) + (pin "2" (uuid d91fdd60-a3e2-4313-b2e7-5d7bea76c68f)) + (pin "3" (uuid 639c1ecb-305b-4f76-a3ad-2e35609444b1)) + (pin "4" (uuid 9d836932-e028-43ce-be2b-8170d33e7748)) + (pin "5" (uuid 1f7acdf4-dff5-4f3a-a8c2-bf6953298ee4)) + (pin "6" (uuid de65e8c0-e030-49e0-9a6d-23143e86eaf4)) + (pin "7" (uuid 0d8cc103-9982-4fee-b796-522416dfdadf)) + (pin "8" (uuid 72552db5-c1a9-42e1-af2a-9f4da4a227bf)) + (pin "9" (uuid fdef8ad7-04eb-4bb6-a634-278f963a6959)) + ) + + (symbol (lib_id "Header:T20BGA256_DEV_GPIO_1D1E") (at 246.38 24.13 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e79177f4-1eec-4664-b34c-b0db7e93f018) + (property "Reference" "U1" (id 0) (at 247.015 21.59 0)) + (property "Value" "T20BGA256_DEV_GPIO_1D1E" (id 1) (at 247.015 24.13 0)) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical" (id 2) (at 246.38 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 246.38 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 50346f6b-97b1-4370-99a7-63d81c44625c)) + (pin "10" (uuid f6b3a0a8-2093-42cc-b6cd-a8d3a18dcc10)) + (pin "11" (uuid 9b74d638-66e5-4f7f-97e2-d7f23e3797e6)) + (pin "12" (uuid 6f09b8c6-9e20-4cd9-98ec-9df84d8c8cc4)) + (pin "13" (uuid 3410ce80-99ad-4ea5-9125-d2a37bc44da3)) + (pin "14" (uuid ea31179c-addf-4a2c-ac5e-497c3d823668)) + (pin "15" (uuid e9d05bfa-3742-4893-a191-fb2b7928d161)) + (pin "16" (uuid 42b02f51-2595-4389-beb4-778d49896863)) + (pin "17" (uuid 96c7f554-7b03-40de-a4d8-85e41d7e86bb)) + (pin "18" (uuid 097205b3-b304-4242-b2cd-7ea593ea6702)) + (pin "19" (uuid d92b2eb2-2168-42a1-8007-3a052c4319d2)) + (pin "2" (uuid a0f7ae9d-5221-4616-8654-77479da72b85)) + (pin "20" (uuid b084e5c7-fc25-468f-b7c7-439eee2fcfa0)) + (pin "21" (uuid 68b42af9-8fc8-44d6-93b7-0e61bc4df071)) + (pin "22" (uuid b7ce67be-1fcf-40d4-9b5e-94559651ca16)) + (pin "23" (uuid 1f6fcc79-0aed-495e-9a44-f2434a8db81f)) + (pin "24" (uuid 5e4c58ab-3c5b-4bea-baf4-908410e92dbb)) + (pin "25" (uuid 988e21fd-7d02-4e35-935f-4e0ce1c394db)) + (pin "26" (uuid 8b66f4ae-f786-4c17-a8c0-c921adbb5436)) + (pin "27" (uuid 6eed5a74-0d44-44e0-a21c-a490313ca33c)) + (pin "28" (uuid 907c903b-a703-4db1-8a68-96f0d71ec58a)) + (pin "29" (uuid e118d3f7-732e-4e6a-b39c-3ba33f7f419c)) + (pin "3" (uuid 4a3fa383-9008-4d19-9227-3b51c7fb5345)) + (pin "30" (uuid 80d76c05-0dc9-4b84-bf13-dfdcb4597024)) + (pin "31" (uuid eba5cd5f-2dfd-4032-8592-071de38625bd)) + (pin "32" (uuid f4ff9156-68c9-4f31-8295-396cd93432c7)) + (pin "33" (uuid aca63c75-69b4-4756-b6a8-695fdc68fccd)) + (pin "34" (uuid 9982b3f6-ec34-4b6a-b28e-3502f1e975c7)) + (pin "35" (uuid a2c776b6-3cbc-4040-8f17-18c25cfef76f)) + (pin "36" (uuid 990c001a-6126-4f0b-915d-25c58ad145bc)) + (pin "4" (uuid ba434336-8d44-4e86-b500-11af175c1c7f)) + (pin "5" (uuid 65571691-baa9-47b9-8420-01f414696ce6)) + (pin "6" (uuid c8e4792e-24d8-4cb8-a9df-eca664afdd5c)) + (pin "7" (uuid b19a3c8f-bccd-4dba-a63b-15a678b2e3f5)) + (pin "8" (uuid fbe0dd48-13a6-4bd6-903e-99efa4fd0c3f)) + (pin "9" (uuid 7df78ea1-9bba-4991-868f-48d68e759050)) + ) + + (symbol (lib_id "power:GND") (at 14.605 133.35 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ee9b66dd-4faa-43da-869b-1ce25cc7ae2f) + (property "Reference" "#PWR?" (id 0) (at 14.605 139.7 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 14.605 138.43 0)) + (property "Footprint" "" (id 2) (at 14.605 133.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 14.605 133.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid be976913-5bed-4050-9fa8-dcf42060a9c1)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/574f0cd7-4f5a-4fd4-9005-fc45d8a0d960" + (reference "#PWR01") (unit 1) (value "GND") (footprint "") + ) + (path "/c40dac7a-6e4b-4096-b52f-edb7ec9cb3b2" + (reference "#PWR02") (unit 1) (value "GND") (footprint "") + ) + (path "/9c0516cc-3f40-45fe-b195-d8db33a27cdd" + (reference "#PWR03") (unit 1) (value "GND") (footprint "") + ) + (path "/4fee6b83-5f12-4418-83ed-2774803956be" + (reference "#PWR04") (unit 1) (value "GND") (footprint "") + ) + (path "/56b82d6f-08dd-4a0a-bd4d-8e161541e4bf" + (reference "#PWR05") (unit 1) (value "GND") (footprint "") + ) + (path "/4c8d3429-c415-4367-a44a-fc1bf968c5b4" + (reference "#PWR06") (unit 1) (value "GND") (footprint "") + ) + (path "/aa82ad4f-5ecc-4369-a780-cf06bb10cdb0" + (reference "#PWR07") (unit 1) (value "GND") (footprint "") + ) + (path "/610374ad-71c2-4236-9105-05f3b73c72ec" + (reference "#PWR08") (unit 1) (value "GND") (footprint "") + ) + (path "/18a88cdc-8e27-451b-abe5-99ec4c2a108f" + (reference "#PWR?") (unit 1) (value "+3V3") (footprint "") + ) + (path "/8e850c5e-ee72-4d3d-8d0c-c81c6f8602e4" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) + (path "/da440c22-0df4-4b7f-8046-fa1facb63f02" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) + (path "/ee9b66dd-4faa-43da-869b-1ce25cc7ae2f" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) + (path "/83e6c9e8-cf1c-4bee-a197-b11cec8dcf84" + (reference "J1") (unit 1) (value "DB15_Female_HighDensity_MountingHoles") (footprint "") + ) + (path "/a0eb9593-3322-4153-9b3d-fc9385acb14a" + (reference "J?") (unit 1) (value "SD_Card") (footprint "") + ) + (path "/e51c959f-a8c0-43ac-bd2e-265982ec9487" + (reference "J?") (unit 1) (value "Micro_SD_Card") (footprint "") + ) + (path "/0adac5e3-3d8a-43a6-b17d-8e16cf684c6e" + (reference "R1") (unit 1) (value "120") (footprint "") + ) + (path "/9e373180-e93e-4f4f-bb69-a31604a2ec88" + (reference "R2") (unit 1) (value "120") (footprint "") + ) + (path "/00a34619-4b85-4d3a-a21a-f8a6740a2565" + (reference "RN1") (unit 1) (value "1k") (footprint "") + ) + (path "/402d479d-b3fb-4e3f-8043-e07c5c382025" + (reference "RN2") (unit 1) (value "1k") (footprint "") + ) + (path "/7c69a070-d611-4829-91c9-d6c8bcababfb" + (reference "RN3") (unit 1) (value "2k") (footprint "") + ) + (path "/8195dcfa-90bd-4214-95e0-4ff112e7b91e" + (reference "RN4") (unit 1) (value "2k") (footprint "") + ) + (path "/4c5fec20-7362-4634-9a84-1e4aeb524405" + (reference "RN5") (unit 1) (value "1k") (footprint "") + ) + (path "/79bc1ad9-fa8c-403c-a93d-0dbf2f562882" + (reference "RN6") (unit 1) (value "2k") (footprint "") + ) + (path "/e79177f4-1eec-4664-b34c-b0db7e93f018" + (reference "U1") (unit 1) (value "T20BGA256_DEV_GPIO_1D1E") (footprint "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical") + ) + (path "/18e6a82d-f9ae-4f72-b2c4-c51d742a18a0" + (reference "U2") (unit 1) (value "T20BGA256_DEV_GPIO_1B1C") (footprint "Connector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_Vertical") + ) + (path "/c3cf08d3-7b3d-4100-80a5-b4871588e46a" + (reference "U3") (unit 1) (value "T20BGA256_DEV_GPIO_3") (footprint "Connector_PinSocket_2.54mm:PinSocket_2x16_P2.54mm_Vertical") + ) + ) +) diff --git a/hw/efinix_shield/fp-info-cache b/hw/efinix_shield/fp-info-cache new file mode 100644 index 0000000..573541a --- /dev/null +++ b/hw/efinix_shield/fp-info-cache @@ -0,0 +1 @@ +0 diff --git a/hw/efinix_shield/sym-lib-table b/hw/efinix_shield/sym-lib-table new file mode 100644 index 0000000..8dc0c30 --- /dev/null +++ b/hw/efinix_shield/sym-lib-table @@ -0,0 +1,208 @@ +(sym_lib_table + (lib (name "4xxx")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/4xxx.kicad_sym")(options "")(descr "")) + (lib (name "4xxx_IEEE")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/4xxx_IEEE.kicad_sym")(options "")(descr "")) + (lib (name "74xGxx")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/74xGxx.kicad_sym")(options "")(descr "")) + (lib (name "74xx")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/74xx.kicad_sym")(options "")(descr "")) + (lib (name "74xx_IEEE")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/74xx_IEEE.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Audio")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Audio.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Buffer")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Buffer.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Current")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Current.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Difference")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Difference.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Instrumentation")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Instrumentation.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Operational")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Operational.kicad_sym")(options "")(descr "")) + (lib (name "Amplifier_Video")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Amplifier_Video.kicad_sym")(options "")(descr "")) + (lib (name "Analog")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Analog.kicad_sym")(options "")(descr "")) + (lib (name "Analog_ADC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Analog_ADC.kicad_sym")(options "")(descr "")) + (lib (name "Analog_DAC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Analog_DAC.kicad_sym")(options "")(descr "")) + (lib (name "Analog_Switch")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Analog_Switch.kicad_sym")(options "")(descr "")) + (lib (name "Audio")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Audio.kicad_sym")(options "")(descr "")) + (lib (name "Battery_Management")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Battery_Management.kicad_sym")(options "")(descr "")) + (lib (name "Buffer")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Buffer.kicad_sym")(options "")(descr "")) + (lib (name "Comparator")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Comparator.kicad_sym")(options "")(descr "")) + (lib (name "Connector")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Connector.kicad_sym")(options "")(descr "")) + (lib (name "Connector_Generic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Connector_Generic.kicad_sym")(options "")(descr "")) + (lib (name "Connector_Generic_MountingPin")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Connector_Generic_MountingPin.kicad_sym")(options "")(descr "")) + (lib (name "Connector_Generic_Shielded")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Connector_Generic_Shielded.kicad_sym")(options "")(descr "")) + (lib (name "Converter_ACDC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Converter_ACDC.kicad_sym")(options "")(descr "")) + (lib (name "Converter_DCDC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Converter_DCDC.kicad_sym")(options "")(descr "")) + (lib (name "CPLD_Altera")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPLD_Altera.kicad_sym")(options "")(descr "")) + (lib (name "CPLD_Microchip")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPLD_Microchip.kicad_sym")(options "")(descr "")) + (lib (name "CPLD_Xilinx")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPLD_Xilinx.kicad_sym")(options "")(descr "")) + (lib (name "CPU")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPU.kicad_sym")(options "")(descr "")) + (lib (name "CPU_NXP_6800")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPU_NXP_6800.kicad_sym")(options "")(descr "")) + (lib (name "CPU_NXP_68000")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPU_NXP_68000.kicad_sym")(options "")(descr "")) + (lib (name "CPU_NXP_IMX")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPU_NXP_IMX.kicad_sym")(options "")(descr "")) + (lib (name "CPU_PowerPC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/CPU_PowerPC.kicad_sym")(options "")(descr "")) + (lib (name "Device")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Device.kicad_sym")(options "")(descr "")) + (lib (name "Diode")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Diode.kicad_sym")(options "")(descr "")) + (lib (name "Diode_Bridge")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Diode_Bridge.kicad_sym")(options "")(descr "")) + (lib (name "Diode_Laser")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Diode_Laser.kicad_sym")(options "")(descr "")) + (lib (name "Display_Character")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Display_Character.kicad_sym")(options "")(descr "")) + (lib (name "Display_Graphic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Display_Graphic.kicad_sym")(options "")(descr "")) + (lib (name "Driver_Display")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_Display.kicad_sym")(options "")(descr "")) + (lib (name "Driver_FET")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_FET.kicad_sym")(options "")(descr "")) + (lib (name "Driver_Haptic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_Haptic.kicad_sym")(options "")(descr "")) + (lib (name "Driver_LED")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_LED.kicad_sym")(options "")(descr "")) + (lib (name "Driver_Motor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_Motor.kicad_sym")(options "")(descr "")) + (lib (name "Driver_Relay")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_Relay.kicad_sym")(options "")(descr "")) + (lib (name "Driver_TEC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Driver_TEC.kicad_sym")(options "")(descr "")) + (lib (name "DSP_AnalogDevices")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/DSP_AnalogDevices.kicad_sym")(options "")(descr "")) + (lib (name "DSP_Freescale")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/DSP_Freescale.kicad_sym")(options "")(descr "")) + (lib (name "DSP_Microchip_DSPIC33")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/DSP_Microchip_DSPIC33.kicad_sym")(options "")(descr "")) + (lib (name "DSP_Motorola")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/DSP_Motorola.kicad_sym")(options "")(descr "")) + (lib (name "DSP_Texas")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/DSP_Texas.kicad_sym")(options "")(descr "")) + (lib (name "Fiber_Optic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Fiber_Optic.kicad_sym")(options "")(descr "")) + (lib (name "Filter")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Filter.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Lattice")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Lattice.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Microsemi")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Microsemi.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Artix7")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Artix7.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Kintex7")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Kintex7.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Spartan6")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Spartan6.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Virtex5")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Virtex5.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Virtex6")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Virtex6.kicad_sym")(options "")(descr "")) + (lib (name "FPGA_Xilinx_Virtex7")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/FPGA_Xilinx_Virtex7.kicad_sym")(options "")(descr "")) + (lib (name "GPU")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/GPU.kicad_sym")(options "")(descr "")) + (lib (name "Graphic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Graphic.kicad_sym")(options "")(descr "")) + (lib (name "Header")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Header.kicad_sym")(options "")(descr "")) + (lib (name "IC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/IC.kicad_sym")(options "")(descr "")) + (lib (name "Interface")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface.kicad_sym")(options "")(descr "")) + (lib (name "Interface_CAN_LIN")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_CAN_LIN.kicad_sym")(options "")(descr "")) + (lib (name "Interface_CurrentLoop")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_CurrentLoop.kicad_sym")(options "")(descr "")) + (lib (name "Interface_Ethernet")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_Ethernet.kicad_sym")(options "")(descr "")) + (lib (name "Interface_Expansion")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_Expansion.kicad_sym")(options "")(descr "")) + (lib (name "Interface_HDMI")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_HDMI.kicad_sym")(options "")(descr "")) + (lib (name "Interface_HID")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_HID.kicad_sym")(options "")(descr "")) + (lib (name "Interface_LineDriver")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_LineDriver.kicad_sym")(options "")(descr "")) + (lib (name "Interface_Optical")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_Optical.kicad_sym")(options "")(descr "")) + (lib (name "Interface_Telecom")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_Telecom.kicad_sym")(options "")(descr "")) + (lib (name "Interface_UART")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_UART.kicad_sym")(options "")(descr "")) + (lib (name "Interface_USB")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Interface_USB.kicad_sym")(options "")(descr "")) + (lib (name "Isolator")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Isolator.kicad_sym")(options "")(descr "")) + (lib (name "Isolator_Analog")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Isolator_Analog.kicad_sym")(options "")(descr "")) + (lib (name "Jumper")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Jumper.kicad_sym")(options "")(descr "")) + (lib (name "LED")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/LED.kicad_sym")(options "")(descr "")) + (lib (name "Logic_LevelTranslator")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Logic_LevelTranslator.kicad_sym")(options "")(descr "")) + (lib (name "Logic_Programmable")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Logic_Programmable.kicad_sym")(options "")(descr "")) + (lib (name "MCU_AnalogDevices")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_AnalogDevices.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Cypress")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Cypress.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Dialog")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Dialog.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Espressif")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Espressif.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Intel")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Intel.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_8051")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_8051.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_ATmega")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_ATmega.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_ATtiny")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_ATtiny.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_AVR")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_AVR.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC10")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC10.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC12")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC12.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC16")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC16.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC18")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC18.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC24")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC24.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_PIC32")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_PIC32.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_SAMA")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_SAMA.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_SAMD")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_SAMD.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_SAME")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_SAME.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_SAML")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_SAML.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Microchip_SAMV")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Microchip_SAMV.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Module")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Module.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Nordic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Nordic.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_ColdFire")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_ColdFire.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_HC11")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_HC11.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_HC12")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_HC12.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_HCS12")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_HCS12.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_Kinetis")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_Kinetis.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_LPC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_LPC.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_MAC7100")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_MAC7100.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_MCore")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_MCore.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_NTAG")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_NTAG.kicad_sym")(options "")(descr "")) + (lib (name "MCU_NXP_S08")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_NXP_S08.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Parallax")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Parallax.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Renesas_Synergy_S1")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Renesas_Synergy_S1.kicad_sym")(options "")(descr "")) + (lib (name "MCU_SiFive")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_SiFive.kicad_sym")(options "")(descr "")) + (lib (name "MCU_SiliconLabs")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_SiliconLabs.kicad_sym")(options "")(descr "")) + (lib (name "MCU_STC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_STC.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM8")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM8.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F0")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F0.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F1")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F1.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F2")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F2.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F3")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F3.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F4")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F4.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32F7")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32F7.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32G0")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32G0.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32H7")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32H7.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32L0")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32L0.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32L1")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32L1.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32L4")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32L4.kicad_sym")(options "")(descr "")) + (lib (name "MCU_ST_STM32L4+")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_ST_STM32L4+.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Texas")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Texas.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Texas_MSP430")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Texas_MSP430.kicad_sym")(options "")(descr "")) + (lib (name "MCU_Texas_SimpleLink")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/MCU_Texas_SimpleLink.kicad_sym")(options "")(descr "")) + (lib (name "Mechanical")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Mechanical.kicad_sym")(options "")(descr "")) + (lib (name "Memory_EEPROM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_EEPROM.kicad_sym")(options "")(descr "")) + (lib (name "Memory_EPROM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_EPROM.kicad_sym")(options "")(descr "")) + (lib (name "Memory_Flash")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_Flash.kicad_sym")(options "")(descr "")) + (lib (name "Memory_NVRAM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_NVRAM.kicad_sym")(options "")(descr "")) + (lib (name "Memory_RAM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_RAM.kicad_sym")(options "")(descr "")) + (lib (name "Memory_ROM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_ROM.kicad_sym")(options "")(descr "")) + (lib (name "Memory_UniqueID")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Memory_UniqueID.kicad_sym")(options "")(descr "")) + (lib (name "Motor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Motor.kicad_sym")(options "")(descr "")) + (lib (name "Oscillator")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Oscillator.kicad_sym")(options "")(descr "")) + (lib (name "Potentiometer_Digital")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Potentiometer_Digital.kicad_sym")(options "")(descr "")) + (lib (name "power")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/power.kicad_sym")(options "")(descr "")) + (lib (name "Power_Management")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Power_Management.kicad_sym")(options "")(descr "")) + (lib (name "Power_Protection")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Power_Protection.kicad_sym")(options "")(descr "")) + (lib (name "Power_Supervisor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Power_Supervisor.kicad_sym")(options "")(descr "")) + (lib (name "pspice")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/pspice.kicad_sym")(options "")(descr "")) + (lib (name "Reference_Current")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Reference_Current.kicad_sym")(options "")(descr "")) + (lib (name "Reference_Voltage")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Reference_Voltage.kicad_sym")(options "")(descr "")) + (lib (name "Regulator_Controller")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Regulator_Controller.kicad_sym")(options "")(descr "")) + (lib (name "Regulator_Current")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Regulator_Current.kicad_sym")(options "")(descr "")) + (lib (name "Regulator_Linear")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Regulator_Linear.kicad_sym")(options "")(descr "")) + (lib (name "Regulator_SwitchedCapacitor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Regulator_SwitchedCapacitor.kicad_sym")(options "")(descr "")) + (lib (name "Regulator_Switching")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Regulator_Switching.kicad_sym")(options "")(descr "")) + (lib (name "Relay")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Relay.kicad_sym")(options "")(descr "")) + (lib (name "Relay_SolidState")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Relay_SolidState.kicad_sym")(options "")(descr "")) + (lib (name "RF")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF.kicad_sym")(options "")(descr "")) + (lib (name "RF_AM_FM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_AM_FM.kicad_sym")(options "")(descr "")) + (lib (name "RF_Amplifier")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Amplifier.kicad_sym")(options "")(descr "")) + (lib (name "RF_Bluetooth")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Bluetooth.kicad_sym")(options "")(descr "")) + (lib (name "RF_Filter")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Filter.kicad_sym")(options "")(descr "")) + (lib (name "RF_GPS")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_GPS.kicad_sym")(options "")(descr "")) + (lib (name "RF_GSM")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_GSM.kicad_sym")(options "")(descr "")) + (lib (name "RF_Mixer")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Mixer.kicad_sym")(options "")(descr "")) + (lib (name "RF_Module")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Module.kicad_sym")(options "")(descr "")) + (lib (name "RF_NFC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_NFC.kicad_sym")(options "")(descr "")) + (lib (name "RF_RFID")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_RFID.kicad_sym")(options "")(descr "")) + (lib (name "RF_Switch")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_Switch.kicad_sym")(options "")(descr "")) + (lib (name "RF_WiFi")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_WiFi.kicad_sym")(options "")(descr "")) + (lib (name "RF_ZigBee")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/RF_ZigBee.kicad_sym")(options "")(descr "")) + (lib (name "Security")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Security.kicad_sym")(options "")(descr "")) + (lib (name "Sensor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Audio")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Audio.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Current")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Current.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Distance")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Distance.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Gas")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Gas.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Humidity")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Humidity.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Magnetic")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Magnetic.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Motion")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Motion.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Optical")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Optical.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Pressure")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Pressure.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Proximity")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Proximity.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Temperature")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Temperature.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Touch")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Touch.kicad_sym")(options "")(descr "")) + (lib (name "Sensor_Voltage")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Sensor_Voltage.kicad_sym")(options "")(descr "")) + (lib (name "Simulation_SPICE")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Simulation_SPICE.kicad_sym")(options "")(descr "")) + (lib (name "Switch")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Switch.kicad_sym")(options "")(descr "")) + (lib (name "Timer")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Timer.kicad_sym")(options "")(descr "")) + (lib (name "Timer_PLL")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Timer_PLL.kicad_sym")(options "")(descr "")) + (lib (name "Timer_RTC")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Timer_RTC.kicad_sym")(options "")(descr "")) + (lib (name "Transformer")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transformer.kicad_sym")(options "")(descr "")) + (lib (name "Transistor_Array")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transistor_Array.kicad_sym")(options "")(descr "")) + (lib (name "Transistor_BJT")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transistor_BJT.kicad_sym")(options "")(descr "")) + (lib (name "Transistor_FET")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transistor_FET.kicad_sym")(options "")(descr "")) + (lib (name "Transistor_IGBT")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transistor_IGBT.kicad_sym")(options "")(descr "")) + (lib (name "Transistor_Power_Module")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Transistor_Power_Module.kicad_sym")(options "")(descr "")) + (lib (name "Triac_Thyristor")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Triac_Thyristor.kicad_sym")(options "")(descr "")) + (lib (name "Valve")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Valve.kicad_sym")(options "")(descr "")) + (lib (name "Video")(type "KiCad")(uri "/home/byron/Projects/super6502/hw/kicad_library/symbols/Video.kicad_sym")(options "")(descr "")) +) diff --git a/hw/kicad_library b/hw/kicad_library new file mode 160000 index 0000000..5733f37 --- /dev/null +++ b/hw/kicad_library @@ -0,0 +1 @@ +Subproject commit 5733f3776534107de5533b0e5c1d09ed32643e7e diff --git a/sw/cc65 b/sw/cc65 index 23a984f..9dc33cf 160000 --- a/sw/cc65 +++ b/sw/cc65 @@ -1 +1 @@ -Subproject commit 23a984f0ddd00712bb29bc0568e2e14cca637ed8 +Subproject commit 9dc33cff22a9cf7e5bdd67324694882bd322e53a