diff --git a/boards/avnet-sp3aevl/rtl/lm32_include.v b/boards/avnet-sp3aevl/rtl/lm32_include.v
deleted file mode 100644
index e33360b3..00000000
--- a/boards/avnet-sp3aevl/rtl/lm32_include.v
+++ /dev/null
@@ -1,356 +0,0 @@
-// =============================================================================
-// COPYRIGHT NOTICE
-// Copyright 2006 (c) Lattice Semiconductor Corporation
-// ALL RIGHTS RESERVED
-// This confidential and proprietary software may be used only as authorised by
-// a licensing agreement from Lattice Semiconductor Corporation.
-// The entire notice above must be reproduced on all authorized copies and
-// copies may only be made to the extent permitted by a licensing agreement from
-// Lattice Semiconductor Corporation.
-//
-// Lattice Semiconductor Corporation TEL : 1-800-Lattice (USA and Canada)
-// 5555 NE Moore Court 408-826-6000 (other locations)
-// Hillsboro, OR 97124 web : http://www.latticesemi.com/
-// U.S.A email: techsupport@latticesemi.com
-// =============================================================================/
-// FILE DETAILS
-// Project : LatticeMico32
-// File : lm32_include.v
-// Title : CPU global macros
-// Version : 6.1.17
-// : Initial Release
-// Version : 7.0SP2, 3.0
-// : No Change
-// Version : 3.1
-// : No Change
-// Version : 3.2
-// : No Change
-// Version : 3.3
-// : Support for extended configuration register
-// =============================================================================
-
-`ifdef LM32_INCLUDE_V
-`else
-`define LM32_INCLUDE_V
-
-//
-// Common configuration options
-//
-
-`define CFG_EBA_RESET 32'h0
-`define CFG_DEBA_RESET 32'h0
-
-`define CFG_PL_MULTIPLY_ENABLED
-`define CFG_PL_BARREL_SHIFT_ENABLED
-`define CFG_SIGN_EXTEND_ENABLED
-`define CFG_MC_DIVIDE_ENABLED
-
-`define CFG_ICACHE_ENABLED
-`define CFG_ICACHE_ASSOCIATIVITY 2
-`define CFG_ICACHE_SETS 256
-`define CFG_ICACHE_BYTES_PER_LINE 16
-`define CFG_ICACHE_BASE_ADDRESS 32'h0
-`define CFG_ICACHE_LIMIT 32'h7fffffff
-
-//`define CFG_DCACHE_ENABLED
-`define CFG_DCACHE_ASSOCIATIVITY 2
-`define CFG_DCACHE_SETS 512
-`define CFG_DCACHE_BYTES_PER_LINE 16
-`define CFG_DCACHE_BASE_ADDRESS 32'h0
-`define CFG_DCACHE_LIMIT 32'h7fffffff
-
-
-//
-// End of common configuration options
-//
-
-`ifdef TRUE
-`else
-`define TRUE 1'b1
-`define FALSE 1'b0
-`define TRUE_N 1'b0
-`define FALSE_N 1'b1
-`endif
-
-// Wishbone configuration
-`define CFG_IWB_ENABLED
-`define CFG_DWB_ENABLED
-
-// Data-path width
-`define LM32_WORD_WIDTH 32
-`define LM32_WORD_RNG (`LM32_WORD_WIDTH-1):0
-`define LM32_SHIFT_WIDTH 5
-`define LM32_SHIFT_RNG (`LM32_SHIFT_WIDTH-1):0
-`define LM32_BYTE_SELECT_WIDTH 4
-`define LM32_BYTE_SELECT_RNG (`LM32_BYTE_SELECT_WIDTH-1):0
-
-// Register file size
-`define LM32_REGISTERS 32
-`define LM32_REG_IDX_WIDTH 5
-`define LM32_REG_IDX_RNG (`LM32_REG_IDX_WIDTH-1):0
-
-// Standard register numbers
-`define LM32_RA_REG `LM32_REG_IDX_WIDTH'd29
-`define LM32_EA_REG `LM32_REG_IDX_WIDTH'd30
-`define LM32_BA_REG `LM32_REG_IDX_WIDTH'd31
-
-// Range of Program Counter. Two LSBs are always 0.
-// `ifdef CFG_ICACHE_ENABLED
-// `define LM32_PC_WIDTH (clogb2(`CFG_ICACHE_LIMIT-`CFG_ICACHE_BASE_ADDRESS)-2)
-// `else
-// `ifdef CFG_IWB_ENABLED
-`define LM32_PC_WIDTH (`LM32_WORD_WIDTH-2)
-// `else
-// `define LM32_PC_WIDTH `LM32_IROM_ADDRESS_WIDTH
-// `endif
-// `endif
-`define LM32_PC_RNG (`LM32_PC_WIDTH+2-1):2
-
-// Range of an instruction
-`define LM32_INSTRUCTION_WIDTH 32
-`define LM32_INSTRUCTION_RNG (`LM32_INSTRUCTION_WIDTH-1):0
-
-// Adder operation
-`define LM32_ADDER_OP_ADD 1'b0
-`define LM32_ADDER_OP_SUBTRACT 1'b1
-
-// Shift direction
-`define LM32_SHIFT_OP_RIGHT 1'b0
-`define LM32_SHIFT_OP_LEFT 1'b1
-
-// Currently always enabled
-`define CFG_BUS_ERRORS_ENABLED
-
-// Derive macro that indicates whether we have single-stepping or not
-`ifdef CFG_ROM_DEBUG_ENABLED
-`define LM32_SINGLE_STEP_ENABLED
-`else
-`ifdef CFG_HW_DEBUG_ENABLED
-`define LM32_SINGLE_STEP_ENABLED
-`endif
-`endif
-
-// Derive macro that indicates whether JTAG interface is required
-`ifdef CFG_JTAG_UART_ENABLED
-`define LM32_JTAG_ENABLED
-`else
-`ifdef CFG_DEBUG_ENABLED
-`define LM32_JTAG_ENABLED
-`else
-`endif
-`endif
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-`ifdef CFG_PL_BARREL_SHIFT_ENABLED
-`define LM32_BARREL_SHIFT_ENABLED
-`else // CFG_PL_BARREL_SHIFT_ENABLED
-`ifdef CFG_MC_BARREL_SHIFT_ENABLED
-`define LM32_BARREL_SHIFT_ENABLED
-`else
-`define LM32_NO_BARREL_SHIFT
-`endif
-`endif // CFG_PL_BARREL_SHIFT_ENABLED
-
-// Derive macro that indicates whether we have a multiplier or not
-`ifdef CFG_PL_MULTIPLY_ENABLED
-`define LM32_MULTIPLY_ENABLED
-`else
-`ifdef CFG_MC_MULTIPLY_ENABLED
-`define LM32_MULTIPLY_ENABLED
-`endif
-`endif
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-`ifdef CFG_MC_DIVIDE_ENABLED
-`define LM32_MC_ARITHMETIC_ENABLED
-`endif
-`ifdef CFG_MC_MULTIPLY_ENABLED
-`define LM32_MC_ARITHMETIC_ENABLED
-`endif
-`ifdef CFG_MC_BARREL_SHIFT_ENABLED
-`define LM32_MC_ARITHMETIC_ENABLED
-`endif
-
-// Derive macro that indicates if we are using an EBR register file
-`ifdef CFG_EBR_POSEDGE_REGISTER_FILE
-`define LM32_EBR_REGISTER_FILE
-`endif
-`ifdef CFG_EBR_NEGEDGE_REGISTER_FILE
-`define LM32_EBR_REGISTER_FILE
-`endif
-
-// Revision number
-`define LM32_REVISION 6'h02
-
-// Logical operations - Function encoded directly in instruction
-`define LM32_LOGIC_OP_RNG 3:0
-
-// Conditions for conditional branches
-`define LM32_CONDITION_WIDTH 3
-`define LM32_CONDITION_RNG (`LM32_CONDITION_WIDTH-1):0
-`define LM32_CONDITION_E 3'b001
-`define LM32_CONDITION_G 3'b010
-`define LM32_CONDITION_GE 3'b011
-`define LM32_CONDITION_GEU 3'b100
-`define LM32_CONDITION_GU 3'b101
-`define LM32_CONDITION_NE 3'b111
-`define LM32_CONDITION_U1 3'b000
-`define LM32_CONDITION_U2 3'b110
-
-// Size of load or store instruction - Encoding corresponds to opcode
-`define LM32_SIZE_WIDTH 2
-`define LM32_SIZE_RNG 1:0
-`define LM32_SIZE_BYTE 2'b00
-`define LM32_SIZE_HWORD 2'b11
-`define LM32_SIZE_WORD 2'b10
-`define LM32_ADDRESS_LSBS_WIDTH 2
-
-// Width and range of a CSR index
-`ifdef CFG_DEBUG_ENABLED
-`define LM32_CSR_WIDTH 5
-`define LM32_CSR_RNG (`LM32_CSR_WIDTH-1):0
-`else
-`ifdef CFG_JTAG_ENABLED
-`define LM32_CSR_WIDTH 4
-`define LM32_CSR_RNG (`LM32_CSR_WIDTH-1):0
-`else
-`define LM32_CSR_WIDTH 3
-`define LM32_CSR_RNG (`LM32_CSR_WIDTH-1):0
-`endif
-`endif
-
-// CSR indices
-`define LM32_CSR_IE `LM32_CSR_WIDTH'h0
-`define LM32_CSR_IM `LM32_CSR_WIDTH'h1
-`define LM32_CSR_IP `LM32_CSR_WIDTH'h2
-`define LM32_CSR_ICC `LM32_CSR_WIDTH'h3
-`define LM32_CSR_DCC `LM32_CSR_WIDTH'h4
-`define LM32_CSR_CC `LM32_CSR_WIDTH'h5
-`define LM32_CSR_CFG `LM32_CSR_WIDTH'h6
-`define LM32_CSR_EBA `LM32_CSR_WIDTH'h7
-`ifdef CFG_DEBUG_ENABLED
-`define LM32_CSR_DC `LM32_CSR_WIDTH'h8
-`define LM32_CSR_DEBA `LM32_CSR_WIDTH'h9
-`endif
-`define LM32_CSR_CFG2 `LM32_CSR_WIDTH'ha
-`ifdef CFG_JTAG_ENABLED
-`define LM32_CSR_JTX `LM32_CSR_WIDTH'he
-`define LM32_CSR_JRX `LM32_CSR_WIDTH'hf
-`endif
-`ifdef CFG_DEBUG_ENABLED
-`define LM32_CSR_BP0 `LM32_CSR_WIDTH'h10
-`define LM32_CSR_BP1 `LM32_CSR_WIDTH'h11
-`define LM32_CSR_BP2 `LM32_CSR_WIDTH'h12
-`define LM32_CSR_BP3 `LM32_CSR_WIDTH'h13
-`define LM32_CSR_WP0 `LM32_CSR_WIDTH'h18
-`define LM32_CSR_WP1 `LM32_CSR_WIDTH'h19
-`define LM32_CSR_WP2 `LM32_CSR_WIDTH'h1a
-`define LM32_CSR_WP3 `LM32_CSR_WIDTH'h1b
-`endif
-
-// Values for WPC CSR
-`define LM32_WPC_C_RNG 1:0
-`define LM32_WPC_C_DISABLED 2'b00
-`define LM32_WPC_C_READ 2'b01
-`define LM32_WPC_C_WRITE 2'b10
-`define LM32_WPC_C_READ_WRITE 2'b11
-
-// Exception IDs
-`define LM32_EID_WIDTH 3
-`define LM32_EID_RNG (`LM32_EID_WIDTH-1):0
-`define LM32_EID_RESET 3'h0
-`define LM32_EID_BREAKPOINT 3'd1
-`define LM32_EID_INST_BUS_ERROR 3'h2
-`define LM32_EID_WATCHPOINT 3'd3
-`define LM32_EID_DATA_BUS_ERROR 3'h4
-`define LM32_EID_DIVIDE_BY_ZERO 3'h5
-`define LM32_EID_INTERRUPT 3'h6
-`define LM32_EID_SCALL 3'h7
-
-// Pipeline result selection mux controls
-
-`define LM32_D_RESULT_SEL_0_RNG 0:0
-`define LM32_D_RESULT_SEL_0_REG_0 1'b0
-`define LM32_D_RESULT_SEL_0_NEXT_PC 1'b1
-
-`define LM32_D_RESULT_SEL_1_RNG 1:0
-`define LM32_D_RESULT_SEL_1_ZERO 2'b00
-`define LM32_D_RESULT_SEL_1_REG_1 2'b01
-`define LM32_D_RESULT_SEL_1_IMMEDIATE 2'b10
-
-`define LM32_USER_OPCODE_WIDTH 11
-`define LM32_USER_OPCODE_RNG (`LM32_USER_OPCODE_WIDTH-1):0
-
-// Derive a macro to indicate if either of the caches are implemented
-`ifdef CFG_ICACHE_ENABLED
-`define LM32_CACHE_ENABLED
-`else
-`ifdef CFG_DCACHE_ENABLED
-`define LM32_CACHE_ENABLED
-`endif
-`endif
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-`define CFG_INTERRUPTS_ENABLED
-
-// Currently this is fixed to 32 and should not be changed
-`define CFG_INTERRUPTS 32
-`define LM32_INTERRUPT_WIDTH `CFG_INTERRUPTS
-`define LM32_INTERRUPT_RNG (`LM32_INTERRUPT_WIDTH-1):0
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-`define LM32_BYTE_WIDTH 8
-`define LM32_BYTE_RNG 7:0
-`define LM32_HWORD_WIDTH 16
-`define LM32_HWORD_RNG 15:0
-
-// Word sub-byte indicies
-`define LM32_BYTE_0_RNG 7:0
-`define LM32_BYTE_1_RNG 15:8
-`define LM32_BYTE_2_RNG 23:16
-`define LM32_BYTE_3_RNG 31:24
-
-// Word sub-halfword indices
-`define LM32_HWORD_0_RNG 15:0
-`define LM32_HWORD_1_RNG 31:16
-
-// Use a synchronous reset
-`define CFG_RESET_SENSITIVITY
-
-// V.T. Srce
-`define SRCE
-
-// Whether to include context registers for debug exceptions
-// in addition to standard exception handling registers
-// Bizarre - Removing this increases LUT count!
-`define CFG_DEBUG_EXCEPTIONS_ENABLED
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-`define LM32_CTYPE_WIDTH 3
-`define LM32_CTYPE_RNG (`LM32_CTYPE_WIDTH-1):0
-`define LM32_CTYPE_CLASSIC 3'b000
-`define LM32_CTYPE_CONSTANT 3'b001
-`define LM32_CTYPE_INCREMENTING 3'b010
-`define LM32_CTYPE_END 3'b111
-
-// Wishbone burst types
-`define LM32_BTYPE_WIDTH 2
-`define LM32_BTYPE_RNG (`LM32_BTYPE_WIDTH-1):0
-`define LM32_BTYPE_LINEAR 2'b00
-`define LM32_BTYPE_4_BEAT 2'b01
-`define LM32_BTYPE_8_BEAT 2'b10
-`define LM32_BTYPE_16_BEAT 2'b11
-
-`endif
diff --git a/boards/avnet-sp3aevl/rtl/setup.v b/boards/avnet-sp3aevl/rtl/setup.v
deleted file mode 100644
index ebded551..00000000
--- a/boards/avnet-sp3aevl/rtl/setup.v
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Milkymist VJ SoC
- * Copyright (C) 2007, 2008, 2009 Sebastien Bourdeauducq
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-/*
- * System clock frequency in Hz.
- */
-`define CLOCK_FREQUENCY 64000000
-
-/*
- * System clock period in ns (must be in sync with CLOCK_FREQUENCY).
- */
-`define CLOCK_PERIOD 15.625
-
-/*
- * Default baudrate for the debug UART.
- */
-`define BAUD_RATE 115200
diff --git a/boards/avnet-sp3aevl/rtl/system.v b/boards/avnet-sp3aevl/rtl/system.v
deleted file mode 100644
index 178cfb17..00000000
--- a/boards/avnet-sp3aevl/rtl/system.v
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Milkymist VJ SoC
- * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-`include "setup.v"
-
-module system(
- input clkin,
- input resetin,
-
- // Boot ROM
- output [21:0] flash_adr,
- input [7:0] flash_d,
- output flash_byte_n,
- output flash_oe_n,
- output flash_we_n,
- output flash_ce_n,
- output flash_reset_n,
-
- // UART
- input uart_rxd,
- output uart_txd,
-
- // GPIO
- input [2:0] btn, // 3
- output [3:0] led // 2 (2 LEDs for UART activity)
-);
-
-//------------------------------------------------------------------
-// Clock and Reset Generation
-//------------------------------------------------------------------
-wire sys_clk;
-wire hard_reset;
-
-`ifndef SIMULATION
-DCM_SP #(
- .CLKDV_DIVIDE(1.5), // 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
-
- .CLKFX_DIVIDE(1), // 1 to 32
- .CLKFX_MULTIPLY(4), // 2 to 32
-
- .CLKIN_DIVIDE_BY_2("FALSE"),
- .CLKIN_PERIOD(62.5),
- .CLKOUT_PHASE_SHIFT("NONE"),
- .CLK_FEEDBACK("NONE"),
- .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
- .DFS_FREQUENCY_MODE("LOW"),
- .DLL_FREQUENCY_MODE("LOW"),
- .DUTY_CYCLE_CORRECTION("TRUE"),
- .FACTORY_JF(16'hF0F0),
- .PHASE_SHIFT(0),
- .STARTUP_WAIT("TRUE")
-) clkgen (
- .CLK0(),
- .CLK90(),
- .CLK180(),
- .CLK270(),
-
- .CLK2X(),
- .CLK2X180(),
-
- .CLKDV(),
- .CLKFX(sys_clk),
- .CLKFX180(),
- .LOCKED(),
- .CLKFB(),
- .CLKIN(clkin),
- .RST(1'b0)
-);
-`else
-assign sys_clk = clkin;
-`endif
-
-`ifndef SIMULATION
-/* Synchronize the reset input */
-reg rst0;
-reg rst1;
-always @(posedge sys_clk) rst0 <= resetin;
-always @(posedge sys_clk) rst1 <= rst0;
-
-/* Debounce it
- * and generate power-on reset.
- */
-reg [19:0] rst_debounce;
-reg sys_rst;
-initial rst_debounce <= 20'hFFFFF;
-initial sys_rst <= 1'b1;
-always @(posedge sys_clk) begin
- if(rst1 | hard_reset)
- rst_debounce <= 20'hFFFFF;
- else if(rst_debounce != 20'd0)
- rst_debounce <= rst_debounce - 20'd1;
- sys_rst <= rst_debounce != 20'd0;
-end
-
-/*
- * We must release the Flash reset before the system reset
- * because the Flash needs some time to come out of reset
- * and the CPU begins fetching instructions from it
- * as soon as the system reset is released.
- * From datasheet, minimum reset pulse width is 100ns
- * and reset-to-read time is 150ns.
- */
-
-reg [7:0] flash_rstcounter;
-initial flash_rstcounter <= 8'd0;
-always @(posedge sys_clk) begin
- if(~sys_rst)
- flash_rstcounter <= 8'd0;
- else if(~flash_rstcounter[7])
- flash_rstcounter <= flash_rstcounter + 8'd1;
-end
-
-assign flash_reset_n = ~flash_rstcounter[7];
-
-`else
-wire sys_rst;
-assign sys_rst = resetin;
-`endif
-
-//------------------------------------------------------------------
-// Wishbone master wires
-//------------------------------------------------------------------
-wire [31:0] cpuibus_adr,
- cpudbus_adr;
-
-wire [2:0] cpuibus_cti,
- cpudbus_cti;
-
-wire [31:0] cpuibus_dat_r,
- cpudbus_dat_r,
- cpudbus_dat_w;
-
-wire [3:0] cpudbus_sel;
-
-wire cpudbus_we;
-
-wire cpuibus_cyc,
- cpudbus_cyc;
-
-wire cpuibus_stb,
- cpudbus_stb;
-
-wire cpuibus_ack,
- cpudbus_ack;
-
-//------------------------------------------------------------------
-// Wishbone slave wires
-//------------------------------------------------------------------
-wire [31:0] brg_adr,
- norflash_adr,
- bram_adr,
- csrbrg_adr;
-
-wire [2:0] brg_cti,
- bram_cti;
-
-wire [31:0] norflash_dat_r,
- bram_dat_r,
- bram_dat_w,
- csrbrg_dat_r,
- csrbrg_dat_w;
-
-wire [3:0] bram_sel;
-
-wire bram_we,
- csrbrg_we,
- aceusb_we;
-
-wire norflash_cyc,
- bram_cyc,
- csrbrg_cyc;
-
-wire norflash_stb,
- bram_stb,
- csrbrg_stb;
-
-wire norflash_ack,
- bram_ack,
- csrbrg_ack;
-
-//---------------------------------------------------------------------------
-// Wishbone switch
-//---------------------------------------------------------------------------
-conbus #(
- .s_addr_w(3),
- .s0_addr(3'b000), // norflash 0x00000000
- .s1_addr(3'b001), // bram 0x20000000
- .s2_addr(3'b010), // free 0x40000000
- .s3_addr(3'b100), // CSR bridge 0x80000000
- .s4_addr(3'b101) // free 0xa0000000
-) conbus (
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- // Master 0
- .m0_dat_i(32'hx),
- .m0_dat_o(cpuibus_dat_r),
- .m0_adr_i(cpuibus_adr),
- .m0_cti_i(cpuibus_cti),
- .m0_we_i(1'b0),
- .m0_sel_i(4'hf),
- .m0_cyc_i(cpuibus_cyc),
- .m0_stb_i(cpuibus_stb),
- .m0_ack_o(cpuibus_ack),
- // Master 1
- .m1_dat_i(cpudbus_dat_w),
- .m1_dat_o(cpudbus_dat_r),
- .m1_adr_i(cpudbus_adr),
- .m1_cti_i(cpudbus_cti),
- .m1_we_i(cpudbus_we),
- .m1_sel_i(cpudbus_sel),
- .m1_cyc_i(cpudbus_cyc),
- .m1_stb_i(cpudbus_stb),
- .m1_ack_o(cpudbus_ack),
- // Master 2
- .m2_dat_i(32'bx),
- .m2_dat_o(),
- .m2_adr_i(32'bx),
- .m2_cti_i(3'bx),
- .m2_we_i(1'bx),
- .m2_sel_i(4'bx),
- .m2_cyc_i(1'b0),
- .m2_stb_i(1'b0),
- .m2_ack_o(),
- // Master 3
- .m3_dat_i(32'bx),
- .m3_dat_o(),
- .m3_adr_i(32'bx),
- .m3_cti_i(3'bx),
- .m3_we_i(1'bx),
- .m3_sel_i(4'bx),
- .m3_cyc_i(1'b0),
- .m3_stb_i(1'b0),
- .m3_ack_o(),
- // Master 4
- .m4_dat_i(32'bx),
- .m4_dat_o(),
- .m4_adr_i(32'bx),
- .m4_cti_i(3'bx),
- .m4_we_i(1'bx),
- .m4_sel_i(4'bx),
- .m4_cyc_i(1'b0),
- .m4_stb_i(1'b0),
- .m4_ack_o(),
-
- // Slave 0
- .s0_dat_i(norflash_dat_r),
- .s0_adr_o(norflash_adr),
- .s0_cyc_o(norflash_cyc),
- .s0_stb_o(norflash_stb),
- .s0_ack_i(norflash_ack),
- // Slave 1
- .s1_dat_i(bram_dat_r),
- .s1_dat_o(bram_dat_w),
- .s1_adr_o(bram_adr),
- .s1_cti_o(bram_cti),
- .s1_sel_o(bram_sel),
- .s1_we_o(bram_we),
- .s1_cyc_o(bram_cyc),
- .s1_stb_o(bram_stb),
- .s1_ack_i(bram_ack),
- // Slave 2
- .s2_dat_i(32'bx),
- .s2_dat_o(),
- .s2_adr_o(),
- .s2_cti_o(),
- .s2_sel_o(),
- .s2_we_o(),
- .s2_cyc_o(),
- .s2_stb_o(),
- .s2_ack_i(1'b0),
- // Slave 3
- .s3_dat_i(csrbrg_dat_r),
- .s3_dat_o(csrbrg_dat_w),
- .s3_adr_o(csrbrg_adr),
- .s3_we_o(csrbrg_we),
- .s3_cyc_o(csrbrg_cyc),
- .s3_stb_o(csrbrg_stb),
- .s3_ack_i(csrbrg_ack),
- // Slave 4
- .s4_dat_i(32'bx),
- .s4_dat_o(),
- .s4_adr_o(),
- .s4_we_o(),
- .s4_cyc_o(),
- .s4_stb_o(),
- .s4_ack_i(1'b0)
-);
-
-//------------------------------------------------------------------
-// CSR bus
-//------------------------------------------------------------------
-wire [13:0] csr_a;
-wire csr_we;
-wire [31:0] csr_dw;
-wire [31:0] csr_dr_uart,
- csr_dr_sysctl;
-
-//---------------------------------------------------------------------------
-// WISHBONE to CSR bridge
-//---------------------------------------------------------------------------
-csrbrg csrbrg(
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- .wb_adr_i(csrbrg_adr),
- .wb_dat_i(csrbrg_dat_w),
- .wb_dat_o(csrbrg_dat_r),
- .wb_cyc_i(csrbrg_cyc),
- .wb_stb_i(csrbrg_stb),
- .wb_we_i(csrbrg_we),
- .wb_ack_o(csrbrg_ack),
-
- .csr_a(csr_a),
- .csr_we(csr_we),
- .csr_do(csr_dw),
- /* combine all slave->master data lines with an OR */
- .csr_di(
- csr_dr_uart
- |csr_dr_sysctl
- )
-);
-
-//---------------------------------------------------------------------------
-// Interrupts
-//---------------------------------------------------------------------------
-wire gpio_irq;
-wire timer0_irq;
-wire timer1_irq;
-wire uartrx_irq;
-wire uarttx_irq;
-
-wire [31:0] cpu_interrupt;
-assign cpu_interrupt = {27'd0,
- uarttx_irq,
- uartrx_irq,
- timer1_irq,
- timer0_irq,
- gpio_irq
-};
-
-//---------------------------------------------------------------------------
-// LM32 CPU
-//---------------------------------------------------------------------------
-lm32_top cpu(
- .clk_i(sys_clk),
- .rst_i(sys_rst),
- .interrupt(cpu_interrupt),
-
- .I_ADR_O(cpuibus_adr),
- .I_DAT_I(cpuibus_dat_r),
- .I_DAT_O(),
- .I_SEL_O(),
- .I_CYC_O(cpuibus_cyc),
- .I_STB_O(cpuibus_stb),
- .I_ACK_I(cpuibus_ack),
- .I_WE_O(),
- .I_CTI_O(cpuibus_cti),
- .I_LOCK_O(),
- .I_BTE_O(),
- .I_ERR_I(1'b0),
- .I_RTY_I(1'b0),
-
- .D_ADR_O(cpudbus_adr),
- .D_DAT_I(cpudbus_dat_r),
- .D_DAT_O(cpudbus_dat_w),
- .D_SEL_O(cpudbus_sel),
- .D_CYC_O(cpudbus_cyc),
- .D_STB_O(cpudbus_stb),
- .D_ACK_I(cpudbus_ack),
- .D_WE_O (cpudbus_we),
- .D_CTI_O(cpudbus_cti),
- .D_LOCK_O(),
- .D_BTE_O(),
- .D_ERR_I(1'b0),
- .D_RTY_I(1'b0)
-);
-
-//---------------------------------------------------------------------------
-// Boot ROM
-//---------------------------------------------------------------------------
-norflash8 #(
- .adr_width(22),
- .swapbytes(1'b1)
-) norflash (
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- .wb_adr_i(norflash_adr),
- .wb_dat_o(norflash_dat_r),
- .wb_stb_i(norflash_stb),
- .wb_cyc_i(norflash_cyc),
- .wb_ack_o(norflash_ack),
-
- .flash_adr(flash_adr),
- .flash_d(flash_d)
-);
-
-assign flash_byte_n = 1'b0;
-assign flash_oe_n = 1'b0;
-assign flash_we_n = 1'b1;
-assign flash_ce_n = 1'b0;
-
-//---------------------------------------------------------------------------
-// BRAM
-//---------------------------------------------------------------------------
-//
-// On this board, we have 16k of SRAM instead of 4k
-// so that we have space for loading some programs.
-//
-bram #(
- .adr_width(14)
-) bram (
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- .wb_adr_i(bram_adr),
- .wb_dat_o(bram_dat_r),
- .wb_dat_i(bram_dat_w),
- .wb_sel_i(bram_sel),
- .wb_stb_i(bram_stb),
- .wb_cyc_i(bram_cyc),
- .wb_ack_o(bram_ack),
- .wb_we_i(bram_we)
-);
-
-//---------------------------------------------------------------------------
-// UART
-//---------------------------------------------------------------------------
-uart #(
- .csr_addr(4'h0),
- .clk_freq(`CLOCK_FREQUENCY),
- .baud(`BAUD_RATE)
-) uart (
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- .csr_a(csr_a),
- .csr_we(csr_we),
- .csr_di(csr_dw),
- .csr_do(csr_dr_uart),
-
- .rx_irq(uartrx_irq),
- .tx_irq(uarttx_irq),
-
- .uart_rxd(uart_rxd),
- .uart_txd(uart_txd)
-);
-
-/* LED0 and LED1 are used as TX/RX indicators.
- * Generate long pulses so we have time to see them
- */
-reg [18:0] rxcounter;
-reg rxled;
-always @(posedge sys_clk) begin
- if(~uart_rxd)
- rxcounter <= {19{1'b1}};
- else if(rxcounter != 19'd0)
- rxcounter <= rxcounter - 19'd1;
- rxled <= rxcounter != 19'd0;
-end
-
-reg [18:0] txcounter;
-reg txled;
-always @(posedge sys_clk) begin
- if(~uart_txd)
- txcounter <= {19{1'b1}};
- else if(txcounter != 19'd0)
- txcounter <= txcounter - 19'd1;
- txled <= txcounter != 19'd0;
-end
-
-assign led[0] = txled;
-assign led[1] = rxled;
-
-//---------------------------------------------------------------------------
-// System Controller
-//---------------------------------------------------------------------------
-wire [13:0] gpio_outputs;
-
-sysctl #(
- .csr_addr(4'h1),
- .ninputs(3),
- .noutputs(2),
- .systemid(32'h53334145) /* S3AE */
-) sysctl (
- .sys_clk(sys_clk),
- .sys_rst(sys_rst),
-
- .gpio_irq(gpio_irq),
- .timer0_irq(timer0_irq),
- .timer1_irq(timer1_irq),
-
- .csr_a(csr_a),
- .csr_we(csr_we),
- .csr_di(csr_dw),
- .csr_do(csr_dr_sysctl),
-
- .gpio_inputs(btn),
- .gpio_outputs(led[3:2]), /* LED0 and LED1 are used as TX/RX indicators */
-
- .hard_reset(hard_reset)
-);
-
-endmodule
diff --git a/boards/avnet-sp3aevl/sources.mak b/boards/avnet-sp3aevl/sources.mak
deleted file mode 100644
index 797628ad..00000000
--- a/boards/avnet-sp3aevl/sources.mak
+++ /dev/null
@@ -1,26 +0,0 @@
-BOARD_SRC=$(wildcard $(BOARD_DIR)/*.v)
-
-CONBUS_SRC=$(wildcard $(CORES_DIR)/conbus/rtl/*.v)
-LM32_SRC= \
- $(CORES_DIR)/lm32/rtl/lm32_cpu.v \
- $(CORES_DIR)/lm32/rtl/lm32_instruction_unit.v \
- $(CORES_DIR)/lm32/rtl/lm32_decoder.v \
- $(CORES_DIR)/lm32/rtl/lm32_load_store_unit.v \
- $(CORES_DIR)/lm32/rtl/lm32_adder.v \
- $(CORES_DIR)/lm32/rtl/lm32_addsub.v \
- $(CORES_DIR)/lm32/rtl/lm32_logic_op.v \
- $(CORES_DIR)/lm32/rtl/lm32_shifter.v \
- $(CORES_DIR)/lm32/rtl/lm32_multiplier.v \
- $(CORES_DIR)/lm32/rtl/lm32_mc_arithmetic.v \
- $(CORES_DIR)/lm32/rtl/lm32_interrupt.v \
- $(CORES_DIR)/lm32/rtl/lm32_ram.v \
- $(CORES_DIR)/lm32/rtl/lm32_icache.v \
- $(CORES_DIR)/lm32/rtl/lm32_dcache.v \
- $(CORES_DIR)/lm32/rtl/lm32_top.v
-CSRBRG_SRC=$(wildcard $(CORES_DIR)/csrbrg/rtl/*.v)
-NORFLASH_SRC=$(wildcard $(CORES_DIR)/norflash8/rtl/*.v)
-BRAM_SRC=$(wildcard $(CORES_DIR)/bram/rtl/*.v)
-UART_SRC=$(wildcard $(CORES_DIR)/uart/rtl/*.v)
-SYSCTL_SRC=$(wildcard $(CORES_DIR)/sysctl/rtl/*.v)
-
-CORES_SRC=$(CONBUS_SRC) $(LM32_SRC) $(CSRBRG_SRC) $(NORFLASH_SRC) $(BRAM_SRC) $(UART_SRC) $(SYSCTL_SRC)
diff --git a/boards/avnet-sp3aevl/synthesis/Makefile.xst b/boards/avnet-sp3aevl/synthesis/Makefile.xst
deleted file mode 100644
index 460182ce..00000000
--- a/boards/avnet-sp3aevl/synthesis/Makefile.xst
+++ /dev/null
@@ -1,25 +0,0 @@
-BOARD_DIR=../rtl
-CORES_DIR=../../../cores
-
-include ../sources.mak
-SRC=$(BOARD_SRC) $(CORES_SRC)
-
-all: build/system.bit
-
-build/system.ucf: common.ucf xst.ucf
- cat common.ucf xst.ucf > build/system.ucf
-
-build/system.prj: $(SRC)
- rm -f build/system.prj
- for i in `echo $^`; do \
- echo "verilog work ../$$i" >> build/system.prj; \
- done
-
-build/system.ngc: build/system.prj
- cd build && xst -ifn ../system.xst
-
-build/system.ngd: build/system.ngc build/system.ucf
- cd build && ngdbuild -uc system.ucf system.ngc
-
-include common.mak
-
diff --git a/boards/avnet-sp3aevl/synthesis/build/.keep_me b/boards/avnet-sp3aevl/synthesis/build/.keep_me
deleted file mode 100644
index e69de29b..00000000
diff --git a/boards/avnet-sp3aevl/synthesis/common.mak b/boards/avnet-sp3aevl/synthesis/common.mak
deleted file mode 100644
index 7f544178..00000000
--- a/boards/avnet-sp3aevl/synthesis/common.mak
+++ /dev/null
@@ -1,29 +0,0 @@
-prom: build/system.mcs
-
-timing: build/system-routed.twr
-
-usage: build/system-routed.xdl
- ../../../tools/xdlanalyze.pl build/system-routed.xdl 0
-
-load: build/system.bit
- cd build && impact -batch ../load.cmd
-
-build/system.ncd: build/system.ngd
- cd build && map system.ngd
-
-build/system-routed.ncd: build/system.ncd
- cd build && par -ol high -xe n -w system.ncd system-routed.ncd
-
-build/system.bit: build/system-routed.ncd
- cd build && bitgen -w system-routed.ncd system.bit
-
-build/system-routed.xdl: build/system-routed.ncd
- cd build && xdl -ncd2xdl system-routed.ncd system-routed.xdl
-
-build/system-routed.twr: build/system-routed.ncd
- cd build && trce -v 10 system-routed.ncd system.pcf
-
-clean:
- rm -rf build/*
-
-.PHONY: prom timing usage load clean
diff --git a/boards/avnet-sp3aevl/synthesis/common.ucf b/boards/avnet-sp3aevl/synthesis/common.ucf
deleted file mode 100644
index 60f9568d..00000000
--- a/boards/avnet-sp3aevl/synthesis/common.ucf
+++ /dev/null
@@ -1,69 +0,0 @@
-CONFIG VCCAUX = "3.3";
-
-# ==== Clock input ====
-NET "clkin" TNM_NET = CLK_16MHZ;
-TIMESPEC TS_CLK_16MHZ = PERIOD CLK_16MHZ 62.50 ns;
-
-NET "clkin" LOC = C10 | IOSTANDARD = LVCMOS33;
-
-# ==== Reset button ====
-NET "resetin" LOC = H4 | IOSTANDARD = LVCMOS33;
-
-# ==== Linear Flash ====
-NET "flash_adr(0)" LOC = P16 | IOSTANDARD = LVCMOS33; # also D15
-NET "flash_adr(1)" LOC = N16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(2)" LOC = L13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(3)" LOC = K13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(4)" LOC = M15 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(5)" LOC = M16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(6)" LOC = L14 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(7)" LOC = L16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(8)" LOC = J12 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(9)" LOC = J13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(10)" LOC = G16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(11)" LOC = F16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(12)" LOC = H13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(13)" LOC = G14 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(14)" LOC = E16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(15)" LOC = F15 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(16)" LOC = G13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(17)" LOC = F14 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(18)" LOC = E14 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(19)" LOC = F13 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(20)" LOC = D16 | IOSTANDARD = LVCMOS33;
-NET "flash_adr(21)" LOC = D15 | IOSTANDARD = LVCMOS33;
-NET "flash_d(0)" LOC = T14 | IOSTANDARD = LVCMOS33;
-NET "flash_d(1)" LOC = R13 | IOSTANDARD = LVCMOS33;
-NET "flash_d(2)" LOC = T13 | IOSTANDARD = LVCMOS33;
-NET "flash_d(3)" LOC = P12 | IOSTANDARD = LVCMOS33;
-NET "flash_d(4)" LOC = N8 | IOSTANDARD = LVCMOS33;
-NET "flash_d(5)" LOC = P7 | IOSTANDARD = LVCMOS33;
-NET "flash_d(6)" LOC = T6 | IOSTANDARD = LVCMOS33;
-NET "flash_d(7)" LOC = T5 | IOSTANDARD = LVCMOS33;
-NET "flash_byte_n" LOC = N14 | IOSTANDARD = LVCMOS33;
-NET "flash_oe_n" LOC = R15 | IOSTANDARD = LVCMOS33;
-NET "flash_we_n" LOC = N13 | IOSTANDARD = LVCMOS33;
-NET "flash_ce_n" LOC = P15 | IOSTANDARD = LVCMOS33;
-NET "flash_reset_n" LOC = T10 | IOSTANDARD = LVCMOS33;
-
-# ==== UART ====
-NET "uart_txd" LOC = B3 | IOSTANDARD = LVCMOS33;
-NET "uart_rxd" LOC = A3 | IOSTANDARD = LVCMOS33;
-
-# ==== Push buttons ====
-NET "btn(0)" LOC = K3 | IOSTANDARD = LVCMOS33;
-NET "btn(1)" LOC = H5 | IOSTANDARD = LVCMOS33;
-NET "btn(2)" LOC = L3 | IOSTANDARD = LVCMOS33;
-
-# ==== LEDs ====
-NET "led(0)" LOC = D14 | IOSTANDARD = LVCMOS33;
-NET "led(1)" LOC = C16 | IOSTANDARD = LVCMOS33;
-NET "led(2)" LOC = C15 | IOSTANDARD = LVCMOS33;
-NET "led(3)" LOC = B15 | IOSTANDARD = LVCMOS33;
-
-# ==== Prohibit Special Pins ====
-CONFIG PROHIBIT = T12; # FPGA_INIT_B
-CONFIG PROHIBIT = D5; # FPGA_PUDC
-CONFIG PROHIBIT = P4; # PSOC_FPGA_M0
-CONFIG PROHIBIT = N4; # PSOC_FPGA_M1
-CONFIG PROHIBIT = R2; # PSOC_FPGA_M2
diff --git a/boards/avnet-sp3aevl/synthesis/load.cmd b/boards/avnet-sp3aevl/synthesis/load.cmd
deleted file mode 100644
index 52de4fc3..00000000
--- a/boards/avnet-sp3aevl/synthesis/load.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-setMode -bscan
-setCable -p auto
-identify
-assignfile -p 1 -file system.bit
-program -p 1
-quit
diff --git a/boards/avnet-sp3aevl/synthesis/system.xst b/boards/avnet-sp3aevl/synthesis/system.xst
deleted file mode 100644
index 19f8bea3..00000000
--- a/boards/avnet-sp3aevl/synthesis/system.xst
+++ /dev/null
@@ -1,9 +0,0 @@
-run
--ifn system.prj
--top system
--ifmt MIXED
--opt_mode AREA
--opt_level 2
--ofn system.ngc
--p xc3s400a-ft256-4
--register_balancing yes
diff --git a/boards/avnet-sp3aevl/synthesis/xst.ucf b/boards/avnet-sp3aevl/synthesis/xst.ucf
deleted file mode 100644
index e69de29b..00000000
diff --git a/boards/avnet-sp3aevl/test/Makefile b/boards/avnet-sp3aevl/test/Makefile
deleted file mode 100644
index 80d27427..00000000
--- a/boards/avnet-sp3aevl/test/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-TOPDIR?=$(shell pwd)
-BOARD_DIR=$(TOPDIR)/../rtl
-CORES_DIR=$(TOPDIR)/../../../cores
-
-include ../sources.mak
-
-SIM_SRC=$(TOPDIR)/system_tb.v $(CORES_DIR)/hpdmc_ddr32/test/iddr.v $(CORES_DIR)/hpdmc_ddr32/test/oddr.v $(CORES_DIR)/hpdmc_ddr32/test/idelay.v
-
-SRC=$(SIM_SRC) $(BOARD_SRC) $(CORES_SRC)
-
-all: isim
-
-cversim: $(SRC) bios.rom
- cver +define+SIMULATION +incdir+$(BOARD_DIR) +incdir+$(CORES_DIR)/lm32/rtl $(SRC)
-
-isim: system bios.rom
- ./system
-
-system: $(SRC)
- iverilog -D SIMULATION -I $(BOARD_DIR) -I $(CORES_DIR)/lm32/rtl -o system $(SRC)
-
-bios.rom: ../../../software/bios/bios.bin
- ../../../tools/bin2hex ../../../software/bios/bios.bin bios.rom 32768
-
-clean:
- rm -f verilog.log bios.rom system
-
-.PHONY: clean cversim isim
diff --git a/boards/avnet-sp3aevl/test/system_tb.v b/boards/avnet-sp3aevl/test/system_tb.v
deleted file mode 100644
index d9e69297..00000000
--- a/boards/avnet-sp3aevl/test/system_tb.v
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Milkymist VJ SoC
- * Copyright (C) 2007, 2008, 2009 Sebastien Bourdeauducq
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-`timescale 1ns/1ps
-
-module system_tb();
-
-reg sys_clk;
-reg resetin;
-
-initial sys_clk = 1'b0;
-always #5 sys_clk = ~sys_clk;
-
-initial begin
- resetin = 1'b1;
- #200 resetin = 1'b0;
-end
-
-wire [21:0] flash_adr;
-reg [31:0] flash_d;
-reg [7:0] flash_d8;
-reg [31:0] flash[0:32767];
-initial $readmemh("bios.rom", flash);
-always @(flash_adr) begin
- #110;
- flash_d = flash[flash_adr[21:2]];
- case(flash_adr[1:0])
- 2'b00: flash_d8 = flash_d[31:24];
- 2'b01: flash_d8 = flash_d[23:16];
- 2'b10: flash_d8 = flash_d[15:8];
- 2'b11: flash_d8 = flash_d[7:0];
- endcase
-end
-
-system system(
- .clkin(sys_clk),
- .resetin(resetin),
-
- .flash_adr(flash_adr),
- .flash_d(flash_d8),
-
- .uart_rxd(),
- .uart_txd()
-);
-
-endmodule
diff --git a/clean_all.sh b/clean_all.sh
index 0b164384..36fe1865 100755
--- a/clean_all.sh
+++ b/clean_all.sh
@@ -13,7 +13,6 @@ cd $BASEDIR/software/bios && make clean
cd $BASEDIR/software/demo && make clean
cd $BASEDIR/boards/xilinx-ml401/synthesis && make -f common.mak clean
-cd $BASEDIR/boards/avnet-sp3aevl/synthesis && make -f common.mak clean
cd $BASEDIR/boards/milkymist-one/synthesis && make -f common.mak clean
cd $BASEDIR/doc && make clean
diff --git a/software/bios/main.c b/software/bios/main.c
index 13d3d20e..f39af840 100644
--- a/software/bios/main.c
+++ b/software/bios/main.c
@@ -38,18 +38,12 @@ const struct board_desc *brd_desc;
/* SDRAM functions */
-static int sdram_enabled;
static int dqs_ps;
static void ddrinit()
{
volatile unsigned int i;
- if(!sdram_enabled) {
- printf("E: Command disabled\n");
- return;
- }
-
putsnonl("I: Initializing SDRAM [DDR200 CL=2 BL=8]...");
/* Bring CKE high */
CSR_HPDMC_SYSTEM = HPDMC_SYSTEM_BYPASS|HPDMC_SYSTEM_RESET|HPDMC_SYSTEM_CKE;
@@ -89,11 +83,6 @@ static int plltest()
{
int ok1, ok2;
- if(!sdram_enabled) {
- printf("E: Command disabled\n");
- return 0;
- }
-
printf("I: Checking if SDRAM clocking is functional:\n");
ok1 = CSR_HPDMC_IODELAY & HPDMC_PLL1_LOCKED;
ok2 = CSR_HPDMC_IODELAY & HPDMC_PLL2_LOCKED;
@@ -109,11 +98,6 @@ static int memtest(unsigned int div)
unsigned int i;
unsigned int size;
- if(!sdram_enabled) {
- printf("E: Command disabled\n");
- return 0;
- }
-
putsnonl("I: SDRAM test...");
size = brd_desc->sdram_size*1024*1024/(4*div);
@@ -147,11 +131,6 @@ static void calibrate()
int quit;
char c;
- if(!sdram_enabled) {
- printf("E: Command disabled\n");
- return;
- }
-
printf("================================\n");
printf("DDR SDRAM calibration tool\n");
printf("================================\n");
@@ -548,7 +527,7 @@ static void display_board()
static const char banner[] =
"\nMILKYMIST(tm) v"VERSION" BIOS\thttp://www.milkymist.org\n"
- "(c) 2007, 2008, 2009 Sebastien Bourdeauducq\n\n"
+ "(c) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq\n\n"
"This program is free software: you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation, version 3 of the License.\n\n";
@@ -585,24 +564,17 @@ int main(int i, char **c)
crcbios();
display_board();
-
- sdram_enabled = 1;
- if(brd_desc->sdram_size > 0) {
- if(plltest()) {
- ddrinit();
- flush_bridge_cache();
-
- if(memtest(8))
- boot_sequence();
- else
- printf("E: Aborted boot on memory error\n");
- } else
- printf("E: Faulty SDRAM clocking\n");
- } else {
- printf("I: No SDRAM on this evaluation board, not booting\n");
- sdram_enabled = 0;
- }
+ if(plltest()) {
+ ddrinit();
+ flush_bridge_cache();
+
+ if(memtest(8))
+ boot_sequence();
+ else
+ printf("E: Aborted boot on memory error\n");
+ } else
+ printf("E: Faulty SDRAM clocking\n");
splash_showerr();
while(1) {
diff --git a/software/libbase/board.c b/software/libbase/board.c
index 0cce2804..55b33cc7 100644
--- a/software/libbase/board.c
+++ b/software/libbase/board.c
@@ -30,13 +30,6 @@ static const struct board_desc boards[3] = {
.ddr_dqsdelay = 244,
.memory_card = MEMCARD_SYSTEMACE
},
- {
- .id = 0x53334145, /* S3AE */
- .name = "Avnet Spartan-3A evaluation kit",
- .clk_frequency = 64000000,
- .sdram_size = 0,
- .memory_card = MEMCARD_NONE
- },
{
.id = 0x4D4F4E45, /* MONE */
.name = "Milkymist One",