| // 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", |
| ], |
| }, |
| } |