blob: 10536b9af92fa563b808480ab87a2e3cac07aeb8 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{ name: "main",
type: "xbar",
clock_primary: "clk_main_i", // Main clock, used in sockets
other_clock_list: [ "clk_fixed_i", "clk_spi_host0_i", "clk_spi_host1_i", "clk_usb_i"] // Secondary clocks used by specific nodes
reset_primary: "rst_main_ni", // Main reset, used in sockets
other_reset_list: [ "rst_fixed_ni", "rst_spi_host0_ni", "rst_spi_host1_ni", "rst_usb_ni"] // Secondary clocks used by specific nodes
// Rationale for pipeline and req/rsp_fifo_pass:
// For host interfaces that are used during production state (corei/cored),
// minimize the amount of host introduced latency. This is accomplished
// by setting pipeline to false.
// For host interfaces that are only used for debug, relax the timing by
// inserting a register slice and not allowing passthrough (more access
// latency. This is accomplished by setting `req/rsp_fifo_pass` to false,
// and implicitly using the default of pipeline true.
//
// For device interfaces, especially configuration registers, latency is
// not generally a concern, thus use `req/rsp_fifo_pass` false and pipeline
// true.
// For device accesses to memories (ram / rom / flash), performance is a concern,
// so use pipeline false where permissible by timing. If not, find a combination
// that works.
nodes: [
{ name: "rv_core_ibex.corei",
type: "host",
clock: "clk_main_i",
reset: "rst_main_ni",
pipeline: false
},
{ name: "rv_core_ibex.cored",
type: "host",
clock: "clk_main_i",
reset: "rst_main_ni",
pipeline: false
},
{ name: "rv_dm.sba",
type: "host",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "rv_dm.regs",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "rv_dm.mem",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "rom_ctrl.rom",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: true,
rsp_fifo_pass: false,
},
{ name: "rom_ctrl.regs",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "peri",
type: "device",
clock: "clk_fixed_i",
reset: "rst_fixed_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "spi_host0",
type: "device",
clock: "clk_spi_host0_i",
reset: "rst_spi_host0_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "spi_host1",
type: "device",
clock: "clk_spi_host1_i",
reset: "rst_spi_host1_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "usbdev",
type: "device",
clock: "clk_usb_i",
reset: "rst_usb_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "flash_ctrl.core",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "flash_ctrl.prim",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
// Return and examine whether this path
// latency can be improved.
{ name: "flash_ctrl.mem",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "hmac",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "kmac"
type: "device"
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
}
{ name: "aes",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "entropy_src",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "csrng",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "edn0",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "edn1",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "rv_plic",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
inst_type: "rv_plic",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "otbn",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "keymgr",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "rv_core_ibex.cfg",
type: "device",
clock: "clk_main_i"
reset: "rst_main_ni"
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "sram_ctrl_main.regs",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
req_fifo_pass: false,
rsp_fifo_pass: false,
},
{ name: "sram_ctrl_main.ram",
type: "device",
clock: "clk_main_i",
reset: "rst_main_ni",
pipeline: false
},
],
connections: {
rv_core_ibex.corei: ["rom_ctrl.rom", "rv_dm.mem", "sram_ctrl_main.ram", "flash_ctrl.mem"],
rv_core_ibex.cored: [
"rom_ctrl.rom", "rom_ctrl.regs", "rv_dm.mem", "rv_dm.regs",
"sram_ctrl_main.ram", "peri", "spi_host0", "spi_host1", "usbdev",
"flash_ctrl.core", "flash_ctrl.prim", "flash_ctrl.mem",
"aes", "entropy_src", "csrng", "edn0", "edn1", "hmac",
"rv_plic", "otbn", "keymgr", "kmac", "sram_ctrl_main.regs",
"rv_core_ibex.cfg"
],
rv_dm.sba: [
"rom_ctrl.rom", "rom_ctrl.regs", "rv_dm.mem", "rv_dm.regs",
"sram_ctrl_main.ram", "peri", "spi_host0", "spi_host1", "usbdev",
"flash_ctrl.core", "flash_ctrl.prim", "flash_ctrl.mem",
"aes", "entropy_src", "csrng", "edn0", "edn1", "hmac",
"rv_plic", "otbn", "keymgr", "kmac", "sram_ctrl_main.regs",
"rv_core_ibex.cfg",
],
},
}