Add ILA and GPIO peripheral

This commit is contained in:
Florian Zaruba 2018-11-25 21:22:51 +01:00
parent 9907da6e6b
commit 6381b3d3ee
No known key found for this signature in database
GPG key ID: E742FFE8EC38A792
19 changed files with 636 additions and 1138 deletions

View file

@ -294,7 +294,8 @@ verilate_command := $(verilator)
-Wno-style \
-Wno-lint \
$(if $(DEBUG),--trace-structs --trace,) \
-LDFLAGS "-lfesvr" -CFLAGS "$(CFLAGS)" -Wall --cc --vpi \
-LDFLAGS "-L$(RISCV)/lib -Wl,-rpath,$(RISCV)/lib -lfesvr" \
-CFLAGS "$(CFLAGS)" -Wall --cc --vpi \
$(list_incdir) --top-module ariane_testharness \
--Mdir $(ver-library) -O3 \
--exe tb/ariane_tb.cpp tb/dpi/SimDTM.cc tb/dpi/SimJTAG.cc \
@ -384,7 +385,7 @@ fpga: $(ariane_pkg) $(util) $(src) $(fpga_src) $(util) $(uart_src)
@echo read_verilog -sv {$(src)} >> fpga/scripts/add_sources.tcl
@echo read_verilog -sv {$(fpga_src)} >> fpga/scripts/add_sources.tcl
@echo "[FPGA] Generate Bitstream"
cd fpga && make
cd fpga && make XILINX_PART="xc7k325tffg900-2" XILINX_BOARD="digilentinc.com:genesys2:part0:1.1" CLK_PERIOD_NS="20"
clean:
rm -rf $(riscv-torture-dir)/output/test*

View file

@ -12,12 +12,14 @@ Table of Contents
=================
* [Ariane RISC-V CPU](#ariane-risc-v-cpu)
* [Table of Contents](#table-of-contents)
* [Getting Started](#getting-started)
* [Running User-Space Applications](#running-user-space-applications)
* [FPU Support](#fpu-support)
* [FPGA Emulation](#fpga-emulation)
* [Generating a Bistream](#generating-a-bistream)
* [Debugging](#debugging)
* [Preliminary Support for OpenPiton Cache System](#preliminary-support-for-openpiton-cache-system)
* [Planned Improvements](#planned-improvements)
* [Going Beyond](#going-beyond)
* [CI Testsuites and Randomized Constrained Testing with Torture](#ci-testsuites-and-randomized-constrained-testing-with-torture)

View file

@ -8,6 +8,7 @@ ip-dir := xilinx
ips := xlnx_axi_clock_converter.xci \
xlnx_axi_dwidth_converter.xci \
xlnx_axi_quad_spi.xci \
xlnx_axi_gpio.xci \
xlnx_clk_gen.xci \
xlnx_mig_7_ddr3.xci
@ -17,13 +18,13 @@ ips-target := $(join $(addsuffix /ip/, $(addprefix $(ip-dir)/, $(basename $(ips)
all: $(mcs)
# Generate mcs from bitstream
$(mcs): $(ips) $(bit)
$(mcs): $(bit)
$(VIVADO) $(VIVADOFLAGS) -source scripts/write_cfgmem.tcl -tclargs $@ $^
$(bit):
$(bit): $(ips)
mkdir -p $(work-dir)
$(VIVADO) $(VIVADOFLAGS) -source scripts/run.tcl
cp ariane.runs/impl_1/ariane_xilinx.bit ./$(work-dir)
cp ariane.runs/impl_1/ariane_xilinx* ./$(work-dir)
$(ips): %.xci :
@echo Generating $(@F)

View file

@ -21,8 +21,10 @@ read_ip xilinx/xlnx_mig_7_ddr3/ip/xlnx_mig_7_ddr3.xci
read_ip xilinx/xlnx_axi_clock_converter/ip/xlnx_axi_clock_converter.xci
read_ip xilinx/xlnx_axi_dwidth_converter/ip/xlnx_axi_dwidth_converter.xci
read_ip xilinx/xlnx_axi_ethernetlite/ip/xlnx_axi_ethernetlite.xci
read_ip xilinx/xlnx_axi_gpio/ip/xlnx_axi_gpio.xci
read_ip xilinx/xlnx_axi_quad_spi/ip/xlnx_axi_quad_spi.xci
read_ip xilinx/xlnx_clk_gen/ip/xlnx_clk_gen.xci
read_ip xilinx/xlnx_ila/ip/xlnx_ila.xci
source scripts/add_sources.tcl

View file

@ -16,7 +16,8 @@ module ariane_peripherals #(
parameter int AxiUserWidth = 1,
parameter bit InclUART = 1,
parameter bit InclSPI = 0,
parameter bit InclEthernet = 0
parameter bit InclEthernet = 0,
parameter bit InclGPIO = 0
) (
input logic clk_i , // Clock
input logic clk_200MHz_i ,
@ -24,6 +25,7 @@ module ariane_peripherals #(
AXI_BUS.in plic ,
AXI_BUS.in uart ,
AXI_BUS.in spi ,
AXI_BUS.in gpio ,
input logic eth_clk_i ,
AXI_BUS.in ethernet ,
output logic [1:0] irq_o ,
@ -46,7 +48,9 @@ module ariane_peripherals #(
output logic spi_clk_o ,
output logic spi_mosi ,
input logic spi_miso ,
output logic spi_ss
output logic spi_ss ,
output logic [7:0] leds_o ,
input logic [7:0] dip_switches_i
);
// ---------------
@ -801,4 +805,141 @@ module ariane_peripherals #(
assign ethernet.r_data = 'hdeadbeef;
assign ethernet.r_last = 1'b1;
end
// 5. GPIO
if (InclGPIO) begin : gen_gpio
logic [31:0] s_axi_gpio_awaddr;
logic [7:0] s_axi_gpio_awlen;
logic [2:0] s_axi_gpio_awsize;
logic [1:0] s_axi_gpio_awburst;
logic [3:0] s_axi_gpio_awcache;
logic s_axi_gpio_awvalid;
logic s_axi_gpio_awready;
logic [31:0] s_axi_gpio_wdata;
logic [3:0] s_axi_gpio_wstrb;
logic s_axi_gpio_wlast;
logic s_axi_gpio_wvalid;
logic s_axi_gpio_wready;
logic [1:0] s_axi_gpio_bresp;
logic s_axi_gpio_bvalid;
logic s_axi_gpio_bready;
logic [31:0] s_axi_gpio_araddr;
logic [7:0] s_axi_gpio_arlen;
logic [2:0] s_axi_gpio_arsize;
logic [1:0] s_axi_gpio_arburst;
logic [3:0] s_axi_gpio_arcache;
logic s_axi_gpio_arvalid;
logic s_axi_gpio_arready;
logic [31:0] s_axi_gpio_rdata;
logic [1:0] s_axi_gpio_rresp;
logic s_axi_gpio_rlast;
logic s_axi_gpio_rvalid;
// system-bus is 64-bit, convert down to 32 bit
xlnx_axi_dwidth_converter i_xlnx_axi_dwidth_converter_gpio (
.s_axi_aclk ( clk_i ),
.s_axi_aresetn ( rst_ni ),
.s_axi_awid ( gpio.aw_id ),
.s_axi_awaddr ( gpio.aw_addr[31:0] ),
.s_axi_awlen ( gpio.aw_len ),
.s_axi_awsize ( gpio.aw_size ),
.s_axi_awburst ( gpio.aw_burst ),
.s_axi_awlock ( gpio.aw_lock ),
.s_axi_awcache ( gpio.aw_cache ),
.s_axi_awprot ( gpio.aw_prot ),
.s_axi_awregion ( gpio.aw_region ),
.s_axi_awqos ( gpio.aw_qos ),
.s_axi_awvalid ( gpio.aw_valid ),
.s_axi_awready ( gpio.aw_ready ),
.s_axi_wdata ( gpio.w_data ),
.s_axi_wstrb ( gpio.w_strb ),
.s_axi_wlast ( gpio.w_last ),
.s_axi_wvalid ( gpio.w_valid ),
.s_axi_wready ( gpio.w_ready ),
.s_axi_bid ( gpio.b_id ),
.s_axi_bresp ( gpio.b_resp ),
.s_axi_bvalid ( gpio.b_valid ),
.s_axi_bready ( gpio.b_ready ),
.s_axi_arid ( gpio.ar_id ),
.s_axi_araddr ( gpio.ar_addr[31:0] ),
.s_axi_arlen ( gpio.ar_len ),
.s_axi_arsize ( gpio.ar_size ),
.s_axi_arburst ( gpio.ar_burst ),
.s_axi_arlock ( gpio.ar_lock ),
.s_axi_arcache ( gpio.ar_cache ),
.s_axi_arprot ( gpio.ar_prot ),
.s_axi_arregion ( gpio.ar_region ),
.s_axi_arqos ( gpio.ar_qos ),
.s_axi_arvalid ( gpio.ar_valid ),
.s_axi_arready ( gpio.ar_ready ),
.s_axi_rid ( gpio.r_id ),
.s_axi_rdata ( gpio.r_data ),
.s_axi_rresp ( gpio.r_resp ),
.s_axi_rlast ( gpio.r_last ),
.s_axi_rvalid ( gpio.r_valid ),
.s_axi_rready ( gpio.r_ready ),
.m_axi_awaddr ( s_axi_gpio_awaddr ),
.m_axi_awlen ( s_axi_gpio_awlen ),
.m_axi_awsize ( s_axi_gpio_awsize ),
.m_axi_awburst ( s_axi_gpio_awburst ),
.m_axi_awlock ( ),
.m_axi_awcache ( s_axi_gpio_awcache ),
.m_axi_awprot ( ),
.m_axi_awregion ( ),
.m_axi_awqos ( ),
.m_axi_awvalid ( s_axi_gpio_awvalid ),
.m_axi_awready ( s_axi_gpio_awready ),
.m_axi_wdata ( s_axi_gpio_wdata ),
.m_axi_wstrb ( s_axi_gpio_wstrb ),
.m_axi_wlast ( s_axi_gpio_wlast ),
.m_axi_wvalid ( s_axi_gpio_wvalid ),
.m_axi_wready ( s_axi_gpio_wready ),
.m_axi_bresp ( s_axi_gpio_bresp ),
.m_axi_bvalid ( s_axi_gpio_bvalid ),
.m_axi_bready ( s_axi_gpio_bready ),
.m_axi_araddr ( s_axi_gpio_araddr ),
.m_axi_arlen ( s_axi_gpio_arlen ),
.m_axi_arsize ( s_axi_gpio_arsize ),
.m_axi_arburst ( s_axi_gpio_arburst ),
.m_axi_arlock ( ),
.m_axi_arcache ( s_axi_gpio_arcache ),
.m_axi_arprot ( ),
.m_axi_arregion ( ),
.m_axi_arqos ( ),
.m_axi_arvalid ( s_axi_gpio_arvalid ),
.m_axi_arready ( s_axi_gpio_arready ),
.m_axi_rdata ( s_axi_gpio_rdata ),
.m_axi_rresp ( s_axi_gpio_rresp ),
.m_axi_rlast ( s_axi_gpio_rlast ),
.m_axi_rvalid ( s_axi_gpio_rvalid ),
.m_axi_rready ( s_axi_gpio_rready )
);
xlnx_axi_gpio i_xlnx_axi_gpio (
.s_axi_aclk ( s_axi_gpio_aclk ),
.s_axi_aresetn ( s_axi_gpio_aresetn ),
.s_axi_awaddr ( s_axi_gpio_awaddr[8:0] ),
.s_axi_awvalid ( s_axi_gpio_awvalid ),
.s_axi_awready ( s_axi_gpio_awready ),
.s_axi_wdata ( s_axi_gpio_wdata ),
.s_axi_wstrb ( s_axi_gpio_wstrb ),
.s_axi_wvalid ( s_axi_gpio_wvalid ),
.s_axi_wready ( s_axi_gpio_wready ),
.s_axi_bresp ( s_axi_gpio_bresp ),
.s_axi_bvalid ( s_axi_gpio_bvalid ),
.s_axi_bready ( s_axi_gpio_bready ),
.s_axi_araddr ( s_axi_gpio_araddr[8:0] ),
.s_axi_arvalid ( s_axi_gpio_arvalid ),
.s_axi_arready ( s_axi_gpio_arready ),
.s_axi_rdata ( s_axi_gpio_rdata ),
.s_axi_rresp ( s_axi_gpio_rresp ),
.s_axi_rvalid ( s_axi_gpio_rvalid ),
.s_axi_rready ( s_axi_gpio_rready ),
.gpio_io_i ( ),
.gpio_io_o ( leds_o ),
.gpio_io_t ( ),
.gpio2_io_i ( dip_switches_i )
);
end
endmodule

View file

@ -196,6 +196,7 @@ axi_node_wrap_with_slices #(
ariane_soc::UARTBase,
ariane_soc::SPIBase,
ariane_soc::EthernetBase,
ariane_soc::GPIOBase,
ariane_soc::DRAMBase
}),
.end_addr_i ({
@ -206,6 +207,7 @@ axi_node_wrap_with_slices #(
ariane_soc::UARTBase + ariane_soc::UARTLength - 1,
ariane_soc::SPIBase + ariane_soc::SPILength - 1,
ariane_soc::EthernetBase + ariane_soc::EthernetLength -1,
ariane_soc::GPIOBase + ariane_soc::GPIOLength - 1,
ariane_soc::DRAMBase + ariane_soc::DRAMLength - 1
})
);
@ -264,7 +266,7 @@ dm_top #(
.dmi_resp_o ( debug_resp )
);
axi_master_connect i_axi_connect_ariane (.axi_req_i(axi_sba_req), .axi_resp_o(axi_sba_resp), .master(slave[1]));
axi_master_connect i_axi_master_dm (.axi_req_i(dm_axi_m_req), .axi_resp_o(dm_axi_m_resp), .master(slave[1]));
axi_slave_connect i_axi_slave_dm (.axi_req_o(dm_axi_s_req), .axi_resp_i(dm_axi_s_resp), .slave(master[ariane_soc::Debug]));
// ---------------
@ -288,7 +290,7 @@ ariane #(
.axi_resp_i ( axi_ariane_resp )
);
axi_master_connect i_axi_connect_sba (.axi_req_i(axi_ariane_req), .axi_resp_o(axi_ariane_resp), .master(slave[0]));
axi_master_connect i_axi_master_connect_ariane (.axi_req_i(axi_ariane_req), .axi_resp_o(axi_ariane_resp), .master(slave[0]));
// ---------------
// CLINT
@ -359,6 +361,7 @@ ariane_peripherals #(
.AxiIdWidth ( AxiIdWidthSlaves ),
.AxiUserWidth ( AxiUserWidth ),
.InclUART ( 1'b1 ),
.InclGPIO ( 1'b1 ),
`ifdef GENESYSII
.InclSPI ( 1'b1 ),
.InclEthernet ( 1'b1 )
@ -373,6 +376,7 @@ ariane_peripherals #(
.plic ( master[ariane_soc::PLIC] ),
.uart ( master[ariane_soc::UART] ),
.spi ( master[ariane_soc::SPI] ),
.gpio ( master[ariane_soc::GPIO] ),
.eth_clk_i ( eth_clk ),
.ethernet ( master[ariane_soc::Ethernet] ),
.irq_o ( irq ),
@ -387,11 +391,13 @@ ariane_peripherals #(
.eth_txd,
.eth_mdio,
.eth_mdc,
.phy_tx_clk_i ( phy_tx_clk ),
.spi_clk_o ( spi_clk_o ),
.spi_mosi ( spi_mosi ),
.spi_miso ( spi_miso ),
.spi_ss ( spi_ss )
.phy_tx_clk_i ( phy_tx_clk ),
.spi_clk_o ( spi_clk_o ),
.spi_mosi ( spi_mosi ),
.spi_miso ( spi_miso ),
.spi_ss ( spi_ss ),
.leds_o ( led ),
.dip_switches_i ( sw )
);
// ---------------------

View file

@ -33,6 +33,14 @@
device_type = "memory";
reg = <0x0 0x80000000 0x0 0x8000000>;
};
leds {
compatible = "gpio-leds";
heartbeat-led {
gpios = <&xlnx_gpio 1 0>;
linux,default-trigger = "heartbeat";
retain-state-suspended;
};
};
L26: soc {
#address-cells = <2>;
#size-cells = <2>;
@ -128,5 +136,21 @@
};
};
};
xlnx_gpio: gpio@40000000 {
#gpio-cells = <2>;
compatible = "xlnx,xps-gpio-1.00.a";
gpio-controller ;
reg = <0x0 0x40000000 0x0 0x10000 >;
xlnx,all-inputs = <0x0>;
xlnx,all-inputs-2 = <0x0>;
xlnx,dout-default = <0x0>;
xlnx,dout-default-2 = <0x0>;
xlnx,gpio-width = <0x8>;
xlnx,gpio2-width = <0x8>;
xlnx,interrupt-present = <0x0>;
xlnx,is-dual = <0x1>;
xlnx,tri-default = <0xffffffff>;
xlnx,tri-default-2 = <0xffffffff>;
};
};
};

View file

@ -1,659 +1,35 @@
// Auto-generated code
const int reset_vec_size = 1670;
const int reset_vec_size = 790;
uint32_t reset_vec[reset_vec_size] = {
0x00800913,
0x30491073,
0x00000493,
0xf1402973,
0x03249663,
0x0210011b,
0x01a11113,
0x1df000ef,
0x020004b7,
0x00100913,
0x0124a023,
0x00448493,
0x02000937,
0x4009091b,
0xff24c6e3,
0x10500073,
0x34402973,
0x00897913,
0xfe090ae3,
0x020004b7,
0xf1402973,
0x00291913,
0x00990933,
0x00092023,
0x0004a903,
0xfe091ee3,
0x00448493,
0x02000937,
0x4009091b,
0xff24c6e3,
0xf1402573,
0x00001597,
0x9c458593,
0x0010049b,
0x01f49493,
0x00048067,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00238082,
0x808200b5,
0x00054503,
0x07b78082,
0xc5031000,
0x75130147,
0x80820205,
0x10000737,
0x01474783,
0x0207f793,
0x0023dfe5,
0x808200a7,
0x100007b7,
0x00078223,
0xf8000713,
0x00e78623,
0x8023476d,
0x822300e7,
0x470d0007,
0x00e78623,
0xfc700713,
0x00e78423,
0x02000713,
0x00e78823,
0x11418082,
0xe406e022,
0x4503842a,
0xe5090004,
0x640260a2,
0x80820141,
0xfa5ff0ef,
0xb7f50405,
0x00002797,
0x88078793,
0x00f57713,
0x4703973e,
0x81110007,
0x80a397aa,
0xc78300e5,
0x80230007,
0x808200f5,
0xf0227179,
0xe84aec26,
0x892af406,
0x54e14461,
0x0089553b,
0x7513002c,
0xf0ef0ff5,
0x4503fc3f,
0x34610081,
0xf55ff0ef,
0x00914503,
0xf4dff0ef,
0xfe9410e3,
0x740270a2,
0x694264e2,
0x80826145,
0xf0227179,
0xe84aec26,
0x892af406,
0x03800413,
0x553354e1,
0x002c0089,
0x0ff57513,
0xf81ff0ef,
0x00814503,
0xf0ef3461,
0x4503f13f,
0xf0ef0091,
0x10e3f0bf,
0x70a2fe94,
0x64e27402,
0x61456942,
0x11018082,
0xec06002c,
0xf55ff0ef,
0x00814503,
0xee9ff0ef,
0x00914503,
0xee1ff0ef,
0x610560e2,
0xc10c8082,
0x41088082,
0x15178082,
0x11010000,
0x3da50513,
0xe822ec06,
0xf0efe426,
0x07b7f05f,
0x47292000,
0x47a9c3b8,
0x37fd0001,
0x0437fff5,
0x07932000,
0xd03c1040,
0x15175064,
0x05130000,
0xf0ef3ba5,
0x2481eddf,
0x02049513,
0xf0ef9101,
0x1517f53f,
0x05130000,
0xf0ef3c25,
0x0793ec5f,
0xd03c1660,
0x15175064,
0x05130000,
0xf0ef38e5,
0x2481eb1f,
0x02049513,
0xf0ef9101,
0x1517f27f,
0x05130000,
0xf0ef3965,
0x4799e99f,
0x6442d03c,
0x64a260e2,
0x00001517,
0x37050513,
0xf06f6105,
0x1101e81f,
0x200007b7,
0xe822ec06,
0x5779e426,
0xd7a8dbb8,
0x06400793,
0x37fd0001,
0x07b7fff5,
0x07132000,
0xd3b81060,
0x849353f8,
0x8b050647,
0x57e0ff65,
0x240153fc,
0xe3958b85,
0x00001517,
0x34050513,
0xe3bff0ef,
0x15024088,
0xf0ef9101,
0x1517eb3f,
0x05130000,
0xf0ef3225,
0x07b7e25f,
0x577d2000,
0x0ff47513,
0x644260e2,
0x4719dbb8,
0x64a2d3b8,
0x80826105,
0x10000793,
0x06b7ec63,
0x200007b7,
0xdbb85779,
0x200006b7,
0x873b87aa,
0x616340a7,
0x079304b7,
0x00010320,
0xfff537fd,
0x10600713,
0x200007b7,
0x0737d3b8,
0x537c2000,
0xfff58b85,
0x20000537,
0x20000837,
0x0007869b,
0x00b6ef63,
0x200007b7,
0xdbb8577d,
0xd3b84719,
0x80824501,
0x0007c703,
0xd6b80785,
0x5178bf4d,
0xff798b05,
0x06c82683,
0x00f60733,
0x00230785,
0xb7e900d7,
0x8082557d,
0x0ff00513,
0xf07ff06f,
0xf4067179,
0xf022e432,
0x842eec26,
0xf0ef84aa,
0xe513febf,
0xf0ef0404,
0x551beedf,
0x75130184,
0xf0ef0ff5,
0x551bee1f,
0x75130104,
0xf0ef0ff5,
0x551bed5f,
0x75130084,
0xf0ef0ff5,
0x7513ec9f,
0xf0ef0ff4,
0x6622ec1f,
0x06400413,
0xf0ef8532,
0xf0efeb5f,
0x179bfa7f,
0xd79b0185,
0x84aa4187,
0x0007da63,
0xf475147d,
0x00001517,
0x22c50513,
0xd0fff0ef,
0x740270a2,
0x64e28526,
0x80826145,
0xe8221101,
0x1517842a,
0x05130000,
0xec062365,
0xf0efe42e,
0x8522cedf,
0xce7ff0ef,
0x00001517,
0x23050513,
0xcdbff0ef,
0x852e65a2,
0xd97ff0ef,
0x60e26442,
0x00001517,
0x1c050513,
0xf06f6105,
0x1101cc1f,
0xec06e426,
0x4485e822,
0x06134581,
0x45010950,
0xf2dff0ef,
0xf0ef842a,
0x1517f1ff,
0x85a20000,
0x1fe50513,
0xf99ff0ef,
0xfe9410e3,
0x644260e2,
0x450564a2,
0x80826105,
0x06131101,
0x05930870,
0x45211aa0,
0xe822ec06,
0xe04ae426,
0xef1ff0ef,
0xf0ef892a,
0xf0efee3f,
0xf0efedff,
0x84aaedbf,
0xed5ff0ef,
0xf0ef842a,
0xf0efecff,
0x4785ecbf,
0x1b634501,
0x88bd00f9,
0x01249863,
0x0004051b,
0xf5650513,
0x00153513,
0x644260e2,
0x690264a2,
0x80826105,
0x06131141,
0x45810650,
0x03700513,
0xe022e406,
0xe99ff0ef,
0xf0ef842a,
0x1517e8bf,
0x85a20000,
0x17250513,
0xf05ff0ef,
0x0004051b,
0x640260a2,
0x3513157d,
0x01410015,
0x11018082,
0xec06e426,
0x4485e822,
0xfbdff0ef,
0x07700613,
0x400005b7,
0x02900513,
0xe55ff0ef,
0x85aa842a,
0x00001517,
0x13850513,
0xec5ff0ef,
0xe39ff0ef,
0xfc940ce3,
0x0004051b,
0x644260e2,
0x351364a2,
0x61050015,
0x11418082,
0xe022e406,
0xc8bff0ef,
0x00001517,
0x11050513,
0xb93ff0ef,
0x347d4429,
0xe05ff0ef,
0xf0effc6d,
0x57fdec9f,
0xf0efc911,
0x57f9efbf,
0xf0efc511,
0x57f5f89f,
0x4781c111,
0x640260a2,
0x0141853e,
0x8de98082,
0x0075d79b,
0x0045d51b,
0x8d2d8d3d,
0x00451593,
0x75138d2d,
0x808207f5,
0x0085579b,
0x8d5d0522,
0x91411542,
0xd51b8da9,
0x893d0045,
0x95138da9,
0x8d2d00c5,
0x0105151b,
0x4105551b,
0x0105179b,
0x0107d79b,
0x17016709,
0x0057979b,
0x8d3d8ff9,
0x91411542,
0x71558082,
0xfd26e1a2,
0x84b2f94a,
0xf54ee586,
0xed56f152,
0xe55ee95a,
0x842e892a,
0x567d4781,
0x08000713,
0x00f106b3,
0x00c68023,
0x9be30785,
0x559bfee7,
0xf5930184,
0x45010ff5,
0xf6fff0ef,
0x0104559b,
0x0ff5f593,
0xf63ff0ef,
0x0084559b,
0x0ff5f593,
0xf57ff0ef,
0x0ff47593,
0xf4fff0ef,
0x0015161b,
0x00166613,
0x0ff67613,
0x454985a2,
0xd1dff0ef,
0xf0efc501,
0xbff5d0ff,
0x90811482,
0x0fe00a13,
0x3e800a93,
0xcfdff0ef,
0xff451ee3,
0x20090b13,
0x4981844a,
0x05938622,
0x850a0400,
0xc65ff0ef,
0x0b934901,
0x07b30400,
0xc5830124,
0x854e0007,
0xf0ef0905,
0x89aaf0ff,
0xff7917e3,
0x04040413,
0xfd641ae3,
0xcbdff0ef,
0x0085151b,
0x14138922,
0x90410305,
0xcadff0ef,
0x14428c49,
0x29819041,
0x05341263,
0x0354e7b3,
0x1517e799,
0x05130000,
0xf0effaa5,
0x14fda15f,
0xf89046e3,
0x46054401,
0x45314581,
0xc85ff0ef,
0xc79ff0ef,
0x60ae8522,
0x74ea640e,
0x79aa794a,
0x6aea7a0a,
0x6baa6b4a,
0x80826169,
0xbfe15479,
0xe8a2711d,
0xec5ef05a,
0xe4a6ec86,
0xfc4ee0ca,
0xf456f852,
0xe466e862,
0x8b2a1080,
0xf0ef8bae,
0xc515e1df,
0x00001517,
0xf5050513,
0x9b3ff0ef,
0xfa040113,
0x644660e6,
0x690664a6,
0x7a4279e2,
0x7b027aa2,
0x6c426be2,
0x61256ca2,
0x89aa8082,
0x00001517,
0xf4c50513,
0x987ff0ef,
0x71018a8a,
0x45854605,
0xf0ef850a,
0x848ae71f,
0xc105892a,
0x00001517,
0xf4450513,
0x967ff0ef,
0xf0ef854a,
0x15179e3f,
0x05130000,
0xf0efe525,
0x1517955f,
0x05130000,
0xf0eff3e5,
0x1517949f,
0x05130000,
0xf0eff525,
0x608893df,
0x9b9ff0ef,
0x00001517,
0xf5050513,
0x92bff0ef,
0xf0ef4488,
0x1517967f,
0x05130000,
0xf0eff4e5,
0x44c8919f,
0x955ff0ef,
0x00001517,
0xf4c50513,
0x907ff0ef,
0xf0ef4888,
0x1517943f,
0x05130000,
0xf0eff4a5,
0x48c88f5f,
0x931ff0ef,
0x00001517,
0xf4850513,
0x8e3ff0ef,
0xf0ef6c88,
0x151795ff,
0x05130000,
0xf0eff4e5,
0x70888d1f,
0x94dff0ef,
0x00001517,
0xf4c50513,
0x8bfff0ef,
0xf0ef64a8,
0x151793bf,
0x05130000,
0xf0eff5a5,
0x48a88adf,
0x8e9ff0ef,
0x00001517,
0xf6850513,
0x89bff0ef,
0xf0ef48e8,
0x15178d7f,
0x05130000,
0xf0efd865,
0x44ac889f,
0x46057101,
0xf0ef850a,
0x8a0ad75f,
0xc10584aa,
0x00001517,
0xe4850513,
0x86bff0ef,
0xf0ef8526,
0x15178e7f,
0x05130000,
0xf0efd565,
0x0493859f,
0x4c11010a,
0x00001517,
0xf3450513,
0x847ff0ef,
0x0ff9f513,
0x903ff0ef,
0x00001517,
0xf3850513,
0x833ff0ef,
0xff048913,
0x00094503,
0xf0ef0905,
0x1be38e9f,
0x1517fe99,
0x05130000,
0xf0eff3a5,
0x0c93815f,
0x45030109,
0x09050009,
0x8cbff0ef,
0xff991be3,
0x00001517,
0xf3c50513,
0xff6ff0ef,
0x89136888,
0x8c930284,
0xf0ef0704,
0x151786bf,
0x05130000,
0xf0eff325,
0x6c88fdcf,
0x859ff0ef,
0x00001517,
0xf3050513,
0xfcaff0ef,
0xf0ef7088,
0x1517847f,
0x05130000,
0xf0eff2e5,
0x4503fb8f,
0x09050009,
0x873ff0ef,
0xff2c9be3,
0x00001517,
0xc9c50513,
0xf0ef2985,
0x8493f9cf,
0x93e30804,
0x1517f589,
0x05130000,
0xf0eff0e5,
0x2583f88f,
0x865e020a,
0xf0ef855a,
0x1517c75f,
0x05130000,
0xf0eff0e5,
0x8156f70f,
0x1141bb75,
0xf0efe406,
0x1517f32f,
0x05130000,
0xf0efc165,
0x4505f58f,
0x057e65a1,
0xd71ff0ef,
0x0010041b,
0x01f41413,
0xf1402573,
0x00000597,
0x02058593,
0xa0018402,
0x07458593,
0x00008402,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0xf1402573,
0x00000597,
0x03c58593,
0x10500073,
0x0000bff5,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
@ -1416,261 +792,5 @@ uint32_t reset_vec[reset_vec_size] = {
0x7361682c,
0x69646d2d,
0x0000006f,
0x00000000,
0x6c6c6548,
0x6f57206f,
0x21646c72,
0x00000a0d,
0x74696e69,
0x49505320,
0x00000a0d,
0x00000000,
0x74617473,
0x203a7375,
0x00007830,
0x00000000,
0x20495053,
0x74696e69,
0x696c6169,
0x2164657a,
0x00000a0d,
0x00000000,
0x66207872,
0x206f6669,
0x20746f6e,
0x74706d65,
0x203f3f79,
0x00000000,
0x6c756f63,
0x6f6e2064,
0x69662074,
0x7620646e,
0x64696c61,
0x20647320,
0x70736572,
0x65736e6f,
0x00000a0d,
0x00000000,
0x63204453,
0x616d6d6f,
0x0020646e,
0x00000000,
0x65720920,
0x6e6f7073,
0x3a206573,
0x00000020,
0x30646d63,
0x00000000,
0x35646d63,
0x00000035,
0x34646d63,
0x00000031,
0x74696e69,
0x696c6169,
0x676e697a,
0x2e445320,
0x0d202e2e,
0x0000000a,
0x0000002e,
0x00000000,
0x6c756f63,
0x6f6e2064,
0x6e692074,
0x61697469,
0x657a696c,
0x2e647320,
0x65202e2e,
0x69746978,
0x0a0d676e,
0x00000000,
0x69206473,
0x6974696e,
0x7a696c61,
0x0d216465,
0x0000000a,
0x00000000,
0x63206473,
0x2079706f,
0x75746572,
0x76206e72,
0x65756c61,
0x0000203a,
0x20747067,
0x74726170,
0x6f697469,
0x6174206e,
0x20656c62,
0x64616568,
0x003a7265,
0x00000000,
0x73090a0d,
0x616e6769,
0x65727574,
0x0000093a,
0x72090a0d,
0x73697665,
0x3a6e6f69,
0x00000009,
0x73090a0d,
0x3a657a69,
0x00000909,
0x00000000,
0x63090a0d,
0x685f6372,
0x65646165,
0x00093a72,
0x72090a0d,
0x72657365,
0x3a646576,
0x00000009,
0x63090a0d,
0x65727275,
0x6c20746e,
0x093a6162,
0x00000000,
0x00000000,
0x62090a0d,
0x756b6361,
0x646c2070,
0x00093a61,
0x70090a0d,
0x69747261,
0x6e6f6974,
0x746e6520,
0x73656972,
0x61626c20,
0x2020203a,
0x00000009,
0x6e090a0d,
0x65626d75,
0x61702072,
0x74697472,
0x206e6f69,
0x72746e65,
0x3a736569,
0x00000009,
0x73090a0d,
0x20657a69,
0x74726170,
0x6f697469,
0x6e65206e,
0x65697274,
0x20203a73,
0x00000009,
0x20747067,
0x74726170,
0x6f697469,
0x6e65206e,
0x20797274,
0x00000000,
0x70090a0d,
0x69747261,
0x6e6f6974,
0x70797420,
0x75672065,
0x093a6469,
0x00000000,
0x00000000,
0x70090a0d,
0x69747261,
0x6e6f6974,
0x69756720,
0x20203a64,
0x09202020,
0x00000000,
0x00000000,
0x66090a0d,
0x74737269,
0x61626c20,
0x0000093a,
0x6c090a0d,
0x20747361,
0x3a61626c,
0x00000009,
0x61090a0d,
0x69727474,
0x65747562,
0x00093a73,
0x6e090a0d,
0x3a656d61,
0x00000009,
0x00000000,
0x79706f63,
0x20676e69,
0x746f6f62,
0x616d6920,
0x00206567,
0x00000000,
0x6e6f6420,
0x0a0d2165,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x33323130,
0x37363534,
0x42413938,
0x46454443,
0x00000000,
0x00000000
};

View file

@ -20,55 +20,102 @@ module bootrom (
input logic [63:0] addr_i,
output logic [63:0] rdata_o
);
localparam int RomSize = 337;
localparam int RomSize = 481;
const logic [RomSize-1:0][63:0] mem = {
64'h00000000_0065646f,
64'h6d2d7968_70006f69,
64'h646d2d73_61682c78,
64'h6e6c7800_6c616e72,
64'h65746e69_2d657375,
64'h2c786e6c_7800676e,
64'h6f702d67_6e69702d,
64'h78742c78_6e6c7800,
64'h68746469_772d6469,
64'h2d697861_2d732c78,
64'h00000000_00000032,
64'h2d746c75_61666564,
64'h2d697274_2c786e6c,
64'h7800746c_75616665,
64'h642d6972_742c786e,
64'h6c78006c_6175642d,
64'h73692c78_6e6c7800,
64'h746e6573_6572702d,
64'h74707572_7265746e,
64'h692c786e_6c780068,
64'h74646977_2d326f69,
64'h70672c78_6e6c7800,
64'h68746469_772d6f69,
64'h70672c78_6e6c7800,
64'h322d746c_75616665,
64'h642d7475_6f642c78,
64'h6e6c7800_746c7561,
64'h6665642d_74756f64,
64'h2c786e6c_7800322d,
64'h73747570_6e692d6c,
64'h6c612c78_6e6c7800,
64'h73747570_6e692d6c,
64'h6c612c78_6e6c7800,
64'h72656c6c_6f72746e,
64'h6f632d6f_69706700,
64'h736c6c65_632d6f69,
64'h70672300_6f69646d,
64'h2d736168_2c786e6c,
64'h78006c61_6e726574,
64'h6e692d65_73752c78,
64'h6e6c7800_676e6f70,
64'h2d676e69_702d7872,
64'h2c786e6c_78006563,
64'h6e617473_6e692c78,
64'h6e6c7800_6f69646d,
64'h2d656475_6c636e69,
64'h2c786e6c_78006b63,
64'h6162706f_6f6c2d6c,
64'h616e7265_746e692d,
64'h6564756c_636e692c,
64'h786e6c78_00737265,
64'h66667562_2d6c6162,
64'h6f6c672d_6564756c,
64'h636e692c_786e6c78,
64'h0078656c_7075642c,
64'h786e6c78_00656c64,
64'h6e61682d_79687000,
64'h73736572_6464612d,
64'h63616d2d_6c61636f,
64'h6c006874_6469772d,
64'h6f692d67_65720074,
64'h66696873_2d676572,
64'h00737470_75727265,
64'h746e6900_746e6572,
64'h61702d74_70757272,
64'h65746e69_00646565,
64'h70732d74_6e657272,
64'h75630076_65646e2c,
64'h76637369_72007974,
64'h69726f69_72702d78,
64'h616d2c76_63736972,
64'h0073656d_616e2d67,
64'h65720064_65646e65,
64'h7478652d_73747075,
64'h72726574_6e690073,
64'h65676e61_7200656c,
64'h2d676e69_702d7874,
64'h2c786e6c_78006874,
64'h6469772d_64692d69,
64'h78612d73_2c786e6c,
64'h7800676e_6f702d67,
64'h6e69702d_78722c78,
64'h6e6c7800_65636e61,
64'h74736e69_2c786e6c,
64'h78006f69_646d2d65,
64'h64756c63_6e692c78,
64'h6e6c7800_6b636162,
64'h706f6f6c_2d6c616e,
64'h7265746e_692d6564,
64'h756c636e_692c786e,
64'h6c780073_72656666,
64'h75622d6c_61626f6c,
64'h672d6564_756c636e,
64'h692c786e_6c780078,
64'h656c7075_642c786e,
64'h6c780065_6c646e61,
64'h682d7968_70007373,
64'h65726464_612d6361,
64'h6d2d6c61_636f6c00,
64'h70772d65_6c626173,
64'h69640073_65676e61,
64'h722d6567_61746c6f,
64'h76007963_6e657571,
64'h6572662d_78616d2d,
64'h69707300_6f697461,
64'h722d6b63_732c786e,
64'h6c780073_7469622d,
64'h72656673_6e617274,
64'h2d6d756e_2c786e6c,
64'h78007374_69622d73,
64'h732d6d75_6e2c786e,
64'h6c780074_73697865,
64'h2d6f6669_662c786e,
64'h6c780079_6c696d61,
64'h662c786e_6c780068,
64'h74646977_2d6f692d,
64'h67657200_74666968,
64'h732d6765_72007374,
64'h70757272_65746e69,
64'h00746e65_7261702d,
64'h74707572_7265746e,
64'h69006465_6570732d,
64'h746e6572_72756300,
64'h7665646e_2c766373,
64'h69720079_7469726f,
64'h6972702d_78616d2c,
64'h76637369_72007365,
64'h6d616e2d_67657200,
64'h6465646e_65747865,
64'h2d737470_75727265,
64'h746e6900_7365676e,
64'h61720064_65646e65,
64'h70737573_2d657461,
64'h74732d6e_69617465,
64'h72007265_67676972,
64'h742d746c_75616665,
64'h642c7875_6e696c00,
64'h736f6970_6700656c,
64'h646e6168_702c7875,
64'h6e696c00_72656c6c,
64'h6f72746e_6f632d74,
@ -95,174 +142,271 @@ module bootrom (
64'h73736572_64646123,
64'h09000000_02000000,
64'h02000000_02000000,
64'h01000000_bb000000,
64'h04000000_03000000,
64'h01000000_b5000000,
64'h04000000_03000000,
64'hffffffff_8f030000,
64'h04000000_03000000,
64'hffffffff_7e030000,
64'h04000000_03000000,
64'h01000000_71030000,
64'h04000000_03000000,
64'h00000000_5a030000,
64'h04000000_03000000,
64'h08000000_49030000,
64'h04000000_03000000,
64'h08000000_39030000,
64'h04000000_03000000,
64'h00000000_25030000,
64'h04000000_03000000,
64'h00000000_13030000,
64'h04000000_03000000,
64'h00000000_01030000,
64'h04000000_03000000,
64'h00000000_f1020000,
64'h04000000_03000000,
64'h00000100_00000000,
64'h00000040_00000000,
64'h67000000_10000000,
64'h03000000_e1020000,
64'h00000000_03000000,
64'h00000000_612e3030,
64'h2e312d6f_6970672d,
64'h7370782c_786e6c78,
64'h1b000000_15000000,
64'h03000000_02000000,
64'hd5020000_04000000,
64'h03000000_00000030,
64'h30303030_30303440,
64'h6f697067_01000000,
64'h02000000_02000000,
64'h02000000_04000000,
64'hbb000000_04000000,
64'h03000000_04000000,
64'hb5000000_04000000,
64'h03000000_01000000,
64'h67000000_04000000,
64'h03000000_00000000,
64'h7968702d_74656e72,
64'h65687465_5b000000,
64'h0d000000_03000000,
64'h00000000_35313963,
64'h2e633130_3064692d,
64'h7968702d_74656e72,
64'h65687465_1b000000,
64'h19000000_03000000,
64'h00003040_7968702d,
64'h74656e72_65687465,
64'h01000000_00000000,
64'h0f000000_04000000,
64'h03000000_01000000,
64'h00000000_04000000,
64'h03000000_00000000,
64'h6f69646d_01000000,
64'h01000000_c7020000,
64'h04000000_03000000,
64'h00000000_b5020000,
64'h04000000_03000000,
64'h01000000_a3020000,
64'h04000000_03000000,
64'h04000000_8f020000,
64'h04000000_03000000,
64'h01000000_7d020000,
64'h04000000_03000000,
64'h00657469_6c74656e,
64'h72656874_655f6978,
64'h615f786e_6c785f69,
64'h6f020000_18000000,
64'h03000000_01000000,
64'h5d020000_04000000,
64'h03000000_00000000,
64'h3e020000_04000000,
64'h03000000_01000000,
64'h22020000_04000000,
64'h03000000_01000000,
64'h16020000_04000000,
64'h03000000_00000100,
64'h00000000_00000030,
64'h00000000_67000000,
64'h10000000_03000000,
64'h04000000_0b020000,
64'h04000000_03000000,
64'h00002201_00350a00,
64'hf9010000_06000000,
64'h03000000_00000000,
64'h03000000_58010000,
64'h08000000_03000000,
64'h03000000_47010000,
64'h04000000_03000000,
64'h006b726f_7774656e,
64'h5b000000_08000000,
64'h03000000_0000612e,
64'h30302e31_2d657469,
64'h6c74656e_72656874,
64'h652d7370_782c786e,
64'h6c780030_2e332d65,
64'h74696c74_656e7265,
64'h6874652d_6978612c,
64'h786e6c78_1b000000,
64'h37000000_03000000,
64'h00000030_30303030,
64'h30303340_74656e72,
64'h65687465_01000000,
64'h02000000_02000000,
64'hee010000_00000000,
64'h03000000_e40c0000,
64'he40c0000_df010000,
64'h08000000_03000000,
64'h20bcbe00_cd010000,
64'h04000000_03000000,
64'h00000000_67000000,
64'h04000000_03000000,
64'h00000000_746f6c73,
64'h2d697073_2d636d6d,
64'h1b000000_0d000000,
64'h03000000_00000030,
64'h40636d6d_01000000,
64'h04000000_be010000,
64'h04000000_03000000,
64'h08000000_a7010000,
64'h04000000_03000000,
64'h01000000_96010000,
64'h04000000_03000000,
64'h01000000_86010000,
64'h04000000_03000000,
64'h00377865_746e696b,
64'h7a010000_08000000,
64'h03000000_00100000,
64'h00000000_00000020,
64'h00000000_67000000,
64'h10000000_03000000,
64'h02000000_02000000,
64'h58010000_08000000,
64'h03000000_03000000,
64'h47010000_04000000,
64'h03000000_00000000,
64'h0f000000_04000000,
64'h03000000_01000000,
64'h00000000_04000000,
64'h03000000_00612e30,
64'h302e322d_6970732d,
64'h7370782c_786e6c78,
64'h00622e30_302e322d,
64'h6970732d_7370782c,
64'h786e6c78_1b000000,
64'h28000000_03000000,
64'h00000000_30303030,
64'h30303032_40697073,
64'h2d737078_01000000,
64'h02000000_04000000,
64'h6d010000_04000000,
64'h03000000_02000000,
64'h63010000_04000000,
64'h03000000_01000000,
64'h58010000_04000000,
64'h03000000_03000000,
64'h47010000_04000000,
64'h03000000_00c20100,
64'h39010000_04000000,
64'h03000000_80f0fa02,
64'h4b000000_04000000,
64'h03000000_00100000,
64'h00000000_00000010,
64'h00000000_67000000,
64'h10000000_03000000,
64'h00303537_3631736e,
64'h1b000000_08000000,
64'h03000000_00000030,
64'h30303030_30303140,
64'h74726175_01000000,
64'h02000000_006c6f72,
64'h746e6f63_11010000,
64'h08000000_03000000,
64'h00100000_00000000,
64'h00000000_00000000,
64'h67000000_10000000,
64'h03000000_ffff0000,
64'h02000000_fd000000,
64'h08000000_03000000,
64'h00333130_2d677562,
64'h65642c76_63736972,
64'h1b000000_10000000,
64'h03000000_00003040,
64'h72656c6c_6f72746e,
64'h6f632d67_75626564,
64'h01000000_02000000,
64'h03000000_bb000000,
64'h04000000_03000000,
64'h03000000_b5000000,
64'h04000000_03000000,
64'h01000000_67000000,
64'h03000000_2e010000,
64'h04000000_03000000,
64'h00000000_7968702d,
64'h74656e72_65687465,
64'h5b000000_0d000000,
64'h03000000_00000000,
64'h35313963_2e633130,
64'h3064692d_7968702d,
64'h74656e72_65687465,
64'h1b000000_19000000,
64'h03000000_00003040,
64'h7968702d_74656e72,
64'h65687465_01000000,
64'h00000000_0f000000,
64'h07000000_1b010000,
64'h04000000_03000000,
64'h01000000_00000000,
64'h04000000_03000000,
64'h00000000_6f69646d,
64'h01000000_00000000,
64'h64692d69_696d6772,
64'h23020000_09000000,
64'h03000000_01000000,
64'h15020000_04000000,
64'h03000000_00000000,
64'h03020000_04000000,
64'h03000000_01000000,
64'hf1010000_04000000,
64'h03000000_04000000,
64'hdd010000_04000000,
64'h03000000_01000000,
64'hcb010000_04000000,
64'h03000000_00657469,
64'h6c74656e_72656874,
64'h655f6978_615f786e,
64'h6c785f69_bd010000,
64'h18000000_03000000,
64'h01000000_ab010000,
64'h04000000_03000000,
64'h00000000_8c010000,
64'h04000000_03000000,
64'h01000000_70010000,
64'h04000000_03000000,
64'h01000000_64010000,
64'h04000000_03000000,
64'h00000100_00000000,
64'h00000030_00000000,
64'h00000004_00000000,
64'h0000000c_00000000,
64'h67000000_10000000,
64'h03000000_03000000,
64'h59010000_04000000,
64'h03000000_00002201,
64'h00350a00_47010000,
64'h06000000_03000000,
64'h00000000_03000000,
64'h25010000_08000000,
64'h03000000_02000000,
64'h14010000_04000000,
64'h03000000_006b726f,
64'h7774656e_5b000000,
64'h08000000_03000000,
64'h0000612e_30302e31,
64'h2d657469_6c74656e,
64'h72656874_652d7370,
64'h782c786e_6c780030,
64'h2e332d65_74696c74,
64'h656e7265_6874652d,
64'h6978612c_786e6c78,
64'h1b000000_37000000,
64'h03000000_00000030,
64'h30303030_30303340,
64'h74656e72_65687465,
64'h01000000_02000000,
64'h04000000_3a010000,
64'h04000000_03000000,
64'h02000000_30010000,
64'h04000000_03000000,
64'h01000000_25010000,
64'h04000000_03000000,
64'h02000000_14010000,
64'h04000000_03000000,
64'h00c20100_06010000,
64'h04000000_03000000,
64'h80f0fa02_4b000000,
64'h04000000_03000000,
64'h00100000_00000000,
64'h00000010_00000000,
64'h67000000_10000000,
64'h03000000_00303537,
64'h3631736e_1b000000,
64'h08000000_03000000,
64'h00000030_30303030,
64'h30303140_74726175,
64'h01000000_02000000,
64'h006c6f72_746e6f63,
64'hde000000_08000000,
64'h03000000_00100000,
64'h00000000_00000000,
64'h00000000_67000000,
64'h03000000_09000000,
64'h02000000_0b000000,
64'h02000000_fd000000,
64'h10000000_03000000,
64'hffff0000_01000000,
64'hca000000_08000000,
64'h03000000_00333130,
64'h2d677562_65642c76,
64'h63736972_1b000000,
64'h10000000_03000000,
64'h00003040_72656c6c,
64'h6f72746e_6f632d67,
64'h75626564_01000000,
64'h02000000_02000000,
64'hbb000000_04000000,
64'h03000000_02000000,
64'hb5000000_04000000,
64'h03000000_03000000,
64'hfb000000_04000000,
64'h03000000_07000000,
64'he8000000_04000000,
64'h03000000_00000004,
64'h00000000_0000000c,
64'h00000000_67000000,
64'h10000000_03000000,
64'h09000000_01000000,
64'h0b000000_01000000,
64'hca000000_10000000,
64'h03000000_a0000000,
64'h00000000_03000000,
64'h00306369_6c702c76,
64'h63736972_1b000000,
64'h0c000000_03000000,
64'h01000000_8f000000,
64'h04000000_03000000,
64'h00000000_00000000,
64'h04000000_03000000,
64'h00000000_30303030,
64'h30306340_72656c6c,
64'h6f72746e_6f632d74,
64'h70757272_65746e69,
64'h01000000_02000000,
64'h006c6f72_746e6f63,
64'hde000000_08000000,
64'h03000000_00000c00,
64'h00000000_00000002,
64'h00000000_67000000,
64'h10000000_03000000,
64'h07000000_01000000,
64'ha0000000_00000000,
64'h03000000_00306369,
64'h6c702c76_63736972,
64'h1b000000_0c000000,
64'h03000000_01000000,
64'hca000000_10000000,
64'h8f000000_04000000,
64'h03000000_00000000,
64'h30746e69_6c632c76,
64'h63736972_1b000000,
64'h0d000000_03000000,
64'h00000030_30303030,
64'h30324074_6e696c63,
64'h01000000_c3000000,
64'h00000000_03000000,
64'h00007375_622d656c,
64'h706d6973_00636f73,
64'h2d657261_622d656e,
64'h61697261_2c687465,
64'h1b000000_1f000000,
64'h03000000_02000000,
64'h0f000000_04000000,
64'h03000000_02000000,
64'h00000000_04000000,
64'h03000000_00636f73,
64'h03000000_00000000,
64'h30303030_30306340,
64'h72656c6c_6f72746e,
64'h6f632d74_70757272,
64'h65746e69_01000000,
64'h02000000_006c6f72,
64'h746e6f63_11010000,
64'h08000000_03000000,
64'h00000c00_00000000,
64'h00000002_00000000,
64'h67000000_10000000,
64'h03000000_07000000,
64'h02000000_03000000,
64'h02000000_fd000000,
64'h10000000_03000000,
64'h00000000_30746e69,
64'h6c632c76_63736972,
64'h1b000000_0d000000,
64'h03000000_00000030,
64'h30303030_30324074,
64'h6e696c63_01000000,
64'hf6000000_00000000,
64'h03000000_00007375,
64'h622d656c_706d6973,
64'h00636f73_2d657261,
64'h622d656e_61697261,
64'h2c687465_1b000000,
64'h1f000000_03000000,
64'h02000000_0f000000,
64'h04000000_03000000,
64'h02000000_00000000,
64'h04000000_03000000,
64'h00636f73_01000000,
64'h02000000_02000000,
64'hdf000000_00000000,
64'h03000000_00000074,
64'h61656274_72616568,
64'hc9000000_0a000000,
64'h03000000_00000000,
64'h01000000_01000000,
64'hc3000000_0c000000,
64'h03000000_00000064,
64'h656c2d74_61656274,
64'h72616568_01000000,
64'h00000073_64656c2d,
64'h6f697067_1b000000,
64'h0a000000_03000000,
64'h00000000_7364656c,
64'h01000000_02000000,
64'h00000008_00000000,
64'h00000080_00000000,
@ -274,9 +418,9 @@ module bootrom (
64'h38407972_6f6d656d,
64'h01000000_02000000,
64'h02000000_02000000,
64'h01000000_bb000000,
64'h02000000_bb000000,
64'h04000000_03000000,
64'h01000000_b5000000,
64'h02000000_b5000000,
64'h04000000_03000000,
64'h00006374_6e692d75,
64'h70632c76_63736972,
@ -339,11 +483,11 @@ module bootrom (
64'h00000000_01000000,
64'h00000000_00000000,
64'h00000000_00000000,
64'ha0070000_2c020000,
64'ha80a0000_a2030000,
64'h00000000_10000000,
64'h11000000_28000000,
64'hd8070000_38000000,
64'h040a0000_edfe0dd0,
64'he00a0000_38000000,
64'h820e0000_edfe0dd0,
64'h00000000_00000000,
64'h00000000_00000000,
64'h00000000_00000000,

View file

@ -53,6 +53,18 @@ module rgmii_to_mii_conv_xilinx (
input logic net_phy_mdc
);
xlnx_ila i_xlnx_ila (
.clk(mem_clk_i), // input wire clk
.probe0(net_phy_rst_n), // input wire [0:0] probe0
.probe1(net_phy_tx_clk), // input wire [0:0] probe1
.probe2(net_phy_tx_en), // input wire [0:0] probe2
.probe3(net_phy_tx_data), // input wire [3:0] probe3
.probe4(net_phy_rx_clk), // input wire [0:0] probe4
.probe5(net_phy_dv), // input wire [0:0] probe5
.probe6(net_phy_rx_data), // input wire [3:0] probe6
.probe7(net_phy_rx_er) // input wire [0:0] probe7
);
// -------------
// MDIO
// -------------

View file

@ -0,0 +1,2 @@
PROJECT:=xlnx_axi_gpio
include ../common.mk

View file

@ -0,0 +1,16 @@
set partNumber $::env(XILINX_PART)
set boardName $::env(XILINX_BOARD)
set ipName xlnx_axi_gpio
create_project $ipName . -part $partNumber
set_property board_part $boardName [current_project]
create_ip -name axi_gpio -vendor xilinx.com -library ip -module_name $ipName
set_property -dict [list CONFIG.C_GPIO_WIDTH {8} CONFIG.C_GPIO2_WIDTH {8} CONFIG.C_IS_DUAL {1} CONFIG.C_ALL_INPUTS_2 {1} CONFIG.C_INTERRUPT_PRESENT {0} CONFIG.GPIO_BOARD_INTERFACE {led_8bits} CONFIG.GPIO2_BOARD_INTERFACE {dip_switches_8bits}] [get_ips $ipName]
generate_target {instantiation_template} [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
generate_target all [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
create_ip_run [get_files -of_objects [get_fileset sources_1] ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
launch_run -jobs 8 ${ipName}_synth_1
wait_on_run ${ipName}_synth_1

View file

@ -0,0 +1,2 @@
PROJECT:=xlnx_ila
include ../common.mk

View file

@ -0,0 +1,17 @@
set partNumber $::env(XILINX_PART)
set boardName $::env(XILINX_BOARD)
set ipName xlnx_ila
create_project $ipName . -part $partNumber
set_property board_part $boardName [current_project]
create_ip -name ila -vendor xilinx.com -library ip -module_name $ipName
set_property -dict [list CONFIG.C_PROBE6_WIDTH {4} CONFIG.C_PROBE3_WIDTH {4} CONFIG.C_DATA_DEPTH {16384} CONFIG.C_NUM_OF_PROBES {8} CONFIG.C_INPUT_PIPE_STAGES {1}] [get_ips $ipName]
generate_target {instantiation_template} [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
generate_target all [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
create_ip_run [get_files -of_objects [get_fileset sources_1] ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
launch_run -jobs 8 ${ipName}_synth_1
wait_on_run ${ipName}_synth_1

@ -1 +1 @@
Subproject commit 1f77f634b65fdee56dfc928cadadd66e9fafc485
Subproject commit 6338af6ee3065c4de22b555a67f64755745b7129

@ -1 +1 @@
Subproject commit cb801849915b6bcd7af33f4aa8389c627324a31b
Subproject commit b4769f4121ed42e99dd168122e036ce1f218637b

View file

@ -16,7 +16,8 @@ module ariane_peripherals #(
parameter int AxiUserWidth = 1,
parameter bit InclUART = 1,
parameter bit InclSPI = 0,
parameter bit InclEthernet = 0
parameter bit InclEthernet = 0,
parameter bit InclGPIO = 0
) (
input logic clk_i , // Clock
input logic rst_ni , // Asynchronous reset active low
@ -277,8 +278,8 @@ module ariane_peripherals #(
.pready_o ( uart_pready ),
.pslverr_o ( uart_pslverr )
);
/* pragma translate_on */
`endif
/* pragma translate_on */
end
// ---------------
@ -450,8 +451,10 @@ module ariane_peripherals #(
.sck_o ( spi_clk_o ),
.sck_i ( '0 ),
.sck_t ( ),
.ip2intc_irpt ( irq_sources[1] )
// .ip2intc_irpt ( irq_sources[1] )
.ip2intc_irpt ( )
);
assign irq_sources [1] = 1'b0;
end else begin
assign spi_clk_o = 1'b0;
assign spi_mosi = 1'b0;

View file

@ -20,13 +20,14 @@ package ariane_soc;
typedef enum int unsigned {
DRAM = 0,
Ethernet = 1,
SPI = 2,
UART = 3,
PLIC = 4,
CLINT = 5,
ROM = 6,
Debug = 7
GPIO = 1,
Ethernet = 2,
SPI = 3,
UART = 4,
PLIC = 5,
CLINT = 6,
ROM = 7,
Debug = 8
} axi_slaves_t;
localparam NB_PERIPHERALS = Debug + 1;
@ -38,6 +39,7 @@ package ariane_soc;
localparam logic[63:0] UARTLength = 64'h1000;
localparam logic[63:0] SPILength = 64'h800000;
localparam logic[63:0] EthernetLength = 64'h10000;
localparam logic[63:0] GPIOLength = 64'h1000;
localparam logic[63:0] DRAMLength = 64'h8000000; // 128 MByte of DDR
localparam logic[63:0] SRAMLength = 64'h1800000; // 24 MByte of SRAM
// Instantiate AXI protocol checkers
@ -51,6 +53,7 @@ package ariane_soc;
UARTBase = 64'h1000_0000,
SPIBase = 64'h2000_0000,
EthernetBase = 64'h3000_0000,
GPIOBase = 64'h4000_0000,
DRAMBase = 64'h8000_0000
} soc_bus_start_t;

View file

@ -447,6 +447,7 @@ module ariane_testharness #(
ariane_soc::UARTBase,
ariane_soc::SPIBase,
ariane_soc::EthernetBase,
ariane_soc::GPIOBase,
ariane_soc::DRAMBase
}),
.end_addr_i ({
@ -457,6 +458,7 @@ module ariane_testharness #(
ariane_soc::UARTBase + ariane_soc::UARTLength - 1,
ariane_soc::SPIBase + ariane_soc::SPILength - 1,
ariane_soc::EthernetBase + ariane_soc::EthernetLength -1,
ariane_soc::GPIOBase + ariane_soc::GPIOLength - 1,
ariane_soc::DRAMBase + ariane_soc::DRAMLength - 1
})
);