rtl: update serv to include internal rf
diff --git a/info.yaml b/info.yaml index 839c192..1d18a3a 100644 --- a/info.yaml +++ b/info.yaml
@@ -42,21 +42,12 @@ clock_hz: 0 # Clock frequency in Hz (if required) we are expecting max clock frequency to be ~6khz. Provided on input 0. picture: "tbd" # relative path to a picture in your repository inputs: # a description of what the inputs do - - clock + - clk - reset - - none - - none - - none - - none - - none - - none + - data + - scan_select + - serv_clk outputs: - - segment a # a description of what the outputs do - - segment b - - segment c - - segment d - - segment e - - segment f - - segment g - - none + - clk out # a description of what the outputs do + - data out
diff --git a/verilog/rtl/top.v b/verilog/rtl/top.v index 085c991..a5bd65e 100644 --- a/verilog/rtl/top.v +++ b/verilog/rtl/top.v
@@ -7,35 +7,14 @@ ); wire clk = io_in[0]; - wire reset = io_in[7]; + wire reset = io_in[1]; - wire data = io_in[4]; - wire scan_select = io_in[5]; - wire latch_enable = io_in[6]; - wire serv_clk = io_in[7]; + wire data = io_in[2]; + wire scan_select = io_in[3]; + wire serv_clk = io_in[5]; wire timer_irq; - parameter reset_strategy = "MINI"; - parameter sim = 0; - parameter with_csr = 0; - parameter [0:0] compress = 0; - parameter [0:0] align = 0; - - wire [4+with_csr:0] wreg0; - wire [4+with_csr:0] wreg1; - wire [4+with_csr:0] rreg0; - wire [4+with_csr:0] rreg1; - wire rf_wreq; - wire rf_rreq; - wire wen0; - wire wen1; - wire wdata0; - wire wdata1; - wire rf_ready; - wire rdata0; - wire rdata1; - wire [31:0] wb_ibus_adr; wire [31:0] wb_ibus_rdt; wire wb_ibus_cyc; @@ -65,12 +44,6 @@ wire wb_mem_cyc; wire wb_mem_ack; - wire wb_gpio_dat; - wire wb_gpio_we; - wire wb_gpio_cyc; - wire wb_gpio_rdt; - - servant_arbiter u_arbiter ( .i_wb_cpu_dbus_adr (wb_dbus_adr), .i_wb_cpu_dbus_dat (wb_dbus_dat), @@ -95,50 +68,37 @@ ); - serv_top #( - .RESET_PC (32'h0000_0000), + +module serv_rf_top + #(.RESET_PC(32'd0), + .COMPRESSED(1), + .ALIGN(1), + .MDU(0), .PRE_REGISTER(1), - .RESET_STRATEGY (reset_strategy), - .WITH_CSR (with_csr), - .COMPRESSED(compress), - .ALIGN(align)) - cpu - ( - .clk (serv_clk), - .i_rst (reset), - .i_timer_irq (timer_irq), + .RESET_STRATEGY = "MINI", + .WITH_CSR(1), + .RF_WIDTH(2), + ( + input wire serv_clk, + input wire i_rst, + input wire i_timer_irq, - .o_rf_rreq (rf_rreq), - .o_rf_wreq (rf_wreq), - .i_rf_ready (rf_ready), - .o_wreg0 (wreg0), - .o_wreg1 (wreg1), - .o_wen0 (wen0), - .o_wen1 (wen1), - .o_wdata0 (wdata0), - .o_wdata1 (wdata1), - .o_rreg0 (rreg0), - .o_rreg1 (rreg1), - .i_rdata0 (rdata0), - .i_rdata1 (rdata1), - - .o_ibus_adr (wb_ibus_adr), - .o_ibus_cyc (wb_ibus_cyc), - .i_ibus_rdt (wb_ibus_rdt), - .i_ibus_ack (wb_ibus_ack), - - .o_dbus_adr (wb_dbus_adr), - .o_dbus_dat (wb_dbus_dat), - .o_dbus_sel (wb_dbus_sel), - .o_dbus_we (wb_dbus_we), - .o_dbus_cyc (wb_dbus_cyc), - .i_dbus_rdt (wb_dbus_rdt), - .i_dbus_ack (wb_dbus_ack) - ); + output wire [31:0] o_ibus_adr, + output wire o_ibus_cyc, + input wire [31:0] i_ibus_rdt, + input wire i_ibus_ack, + output wire [31:0] o_dbus_adr, + output wire [31:0] o_dbus_dat, + output wire [3:0] o_dbus_sel, + output wire o_dbus_we , + output wire o_dbus_cyc, + input wire [31:0] i_dbus_rdt, + input wire i_dbus_ack, + ); scanchain_local #( - .SCAN_LENGTH(96)) + .SCAN_LENGTH(70)) u_scanchain_local ( // Inputs from TinyTapeout scanchain to our internal scanchain @@ -149,7 +109,7 @@ // Pass all signals out from our internal scanchain, only really need data .clk_out (io_out[0]), .data_out (io_out[1]), - .scan_select_out (io_out[2]), + .scan_select_out (), // data .module_data_out ({ @@ -158,27 +118,13 @@ wb_mem_dat, // 32 wb_mem_sel, // 4 wb_mem_we, // 1 - wb_mem_cyc, // 1 - // RF interface - rf_wreq, // 1 - rf_rreq, // 1 - wreg0, // 5 - wreg1, // 5 - wen0, // 1 - wen1, // 1 - wdata0, // 1 - wdata1, // 1 - rreg0, // 5 - rreg1}), // 5 - + wb_mem_cyc}), // 1 + .module_data_in ({ // Bus interface wb_mem_rdt, // 32 wb_mem_ack, // 1 - timer_irq, // 1 - rf_ready, // 1 - rdata0, // 1 - rdata1}) // 1 + timer_irq}) // 1 ); endmodule