blob: 78e315ebb3c0ec55d3984e26930e7e679bb7c4dd [file] [log] [blame]
`timescale 1ns / 1ps
`include "decred_defines.v"
module decred_top (
`ifdef USE_POWER_PINS
inout vccd1, // User area 1 1.8V supply
inout vssd1, // User area 1 digital ground
`endif
input wire EXT_RESET_N_fromHost,
input wire SCLK_fromHost,
input wire M1_CLK_IN,
input wire M1_CLK_SELECT,
input wire PLL_INPUT,
input wire S1_CLK_IN,
input wire S1_CLK_SELECT,
input wire SPI_CLK_RESET_N,
input wire SCSN_fromHost,
input wire MOSI_fromHost,
input wire MISO_fromClient,
input wire IRQ_OUT_fromClient,
input wire ID_fromClient,
output wire SCSN_toClient,
output wire SCLK_toClient,
output wire MOSI_toClient,
output wire EXT_RESET_N_toClient,
output wire ID_toHost,
output wire CLK_LED,
output wire MISO_toHost,
output wire HASH_LED,
output wire IRQ_OUT_toHost
);
wire m1_clk_local;
wire HASH_EN;
wire [`NUMBER_OF_MACROS - 1: 0] MACRO_WR_SELECT;
wire [7: 0] DATA_TO_HASH;
wire [`NUMBER_OF_MACROS - 1: 0] MACRO_RD_SELECT;
wire [5: 0] HASH_ADDR;
wire [3 :0] THREAD_COUNT [`NUMBER_OF_MACROS-1:0];
wire [`NUMBER_OF_MACROS - 1: 0] DATA_AVAILABLE;
wire [7: 0] DATA_FROM_HASH;
decred_controller decred_controller_block (
.EXT_RESET_N_fromHost(EXT_RESET_N_fromHost),
.SCLK_fromHost(SCLK_fromHost),
.M1_CLK_IN(M1_CLK_IN),
.M1_CLK_SELECT(M1_CLK_SELECT),
.m1_clk_local(m1_clk_local),
.PLL_INPUT(PLL_INPUT),
.S1_CLK_IN(S1_CLK_IN),
.S1_CLK_SELECT(S1_CLK_SELECT),
.SPI_CLK_RESET_N(SPI_CLK_RESET_N),
.SCSN_fromHost(SCSN_fromHost),
.MOSI_fromHost(MOSI_fromHost),
.MISO_fromClient(MISO_fromClient),
.IRQ_OUT_fromClient(IRQ_OUT_fromClient),
.ID_fromClient(ID_fromClient),
.SCSN_toClient(SCSN_toClient),
.SCLK_toClient(SCLK_toClient),
.MOSI_toClient(MOSI_toClient),
.EXT_RESET_N_toClient(EXT_RESET_N_toClient),
.ID_toHost(ID_toHost),
.CLK_LED(CLK_LED),
.MISO_toHost(MISO_toHost),
.HASH_LED(HASH_LED),
.IRQ_OUT_toHost(IRQ_OUT_toHost),
// hash macro exports
.HASH_EN(HASH_EN),
.MACRO_WR_SELECT(MACRO_WR_SELECT),
.DATA_TO_HASH(DATA_TO_HASH),
.MACRO_RD_SELECT(MACRO_RD_SELECT),
.HASH_ADDR(HASH_ADDR),
.THREAD_COUNT(THREAD_COUNT[0]),
.DATA_AVAILABLE(DATA_AVAILABLE),
.DATA_FROM_HASH(DATA_FROM_HASH)
);
genvar i;
for (i = 0; i < `NUMBER_OF_MACROS; i = i + 1) begin: hash_macro_multi_block
decred_hash_macro decred_hash_block (
.CLK(m1_clk_local),
.HASH_EN(HASH_EN),
.MACRO_WR_SELECT(MACRO_WR_SELECT[i]),
.DATA_TO_HASH(DATA_TO_HASH),
.MACRO_RD_SELECT(MACRO_RD_SELECT[i]),
.HASH_ADDR(HASH_ADDR),
.THREAD_COUNT(THREAD_COUNT[i]),
.DATA_AVAILABLE(DATA_AVAILABLE[i]),
.DATA_FROM_HASH(DATA_FROM_HASH)
);
end
endmodule // decred_top