mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-20 11:57:12 -04:00
- Add required signals to top-level - Propagate error through fetch stages - Add new exception type - Update documentation for new exception type - Resolves issue #109
115 lines
6 KiB
ReStructuredText
115 lines
6 KiB
ReStructuredText
.. _core-integration:
|
|
|
|
Core Integration
|
|
================
|
|
|
|
The main module is named ``ibex_core`` and can be found in ``ibex_core.sv``.
|
|
Below, the instantiation template is given and the parameters and interfaces are described.
|
|
|
|
Instantiation Template
|
|
----------------------
|
|
|
|
.. code-block:: verilog
|
|
|
|
ibex_core #(
|
|
.MHPMCounterNum (0),
|
|
.MHPMCounterWidth (40),
|
|
.RV32E (0),
|
|
.RV32M (1),
|
|
.DmHaltAddr (32'h1A110800),
|
|
.DmExceptionAddr (32'h1A110808)
|
|
) u_core (
|
|
// Clock and reset
|
|
.clk_i (),
|
|
.rst_ni (),
|
|
.test_en_i (),
|
|
|
|
// Configuration
|
|
.core_id_i (),
|
|
.cluster_id_i (),
|
|
.boot_addr_i (),
|
|
|
|
// Instruction memory interface
|
|
.instr_req_o (),
|
|
.instr_gnt_i (),
|
|
.instr_rvalid_i (),
|
|
.instr_addr_o (),
|
|
.instr_rdata_i (),
|
|
.instr_err_i (),
|
|
|
|
// Data memory interface
|
|
.data_req_o (),
|
|
.data_gnt_i (),
|
|
.data_rvalid_i (),
|
|
.data_we_o (),
|
|
.data_be_o (),
|
|
.data_addr_o (),
|
|
.data_wdata_o (),
|
|
.data_rdata_i (),
|
|
.data_err_i (),
|
|
|
|
// Interrupt inputs
|
|
.irq_software_i (),
|
|
.irq_timer_i (),
|
|
.irq_external_i (),
|
|
.irq_fast_i (),
|
|
.irq_nm_i (),
|
|
|
|
// Debug interface
|
|
.debug_req_i (),
|
|
|
|
// Special control signal
|
|
.fetch_enable_i ()
|
|
);
|
|
|
|
Parameters
|
|
----------
|
|
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| Name | Type/Range | Default | Description |
|
|
+=======================+=============+============+=================================================================+
|
|
| ``MHPMCounterNum`` | int (0..8) | 0 | Number of performance monitor event counters |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| ``MHPMCounterWidth`` | int (64..1) | 40 | Bit width of performance monitor event counters |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| ``RV32E`` | bit | 0 | RV32E mode enable (16 integer registers only) |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| ``RV32M`` | bit | 1 | M(ultiply) extension enable |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| ``DmHaltAddr`` | int | 0x1A110800 | Address to jump to when entering debug mode |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
| ``DmExceptionAddr`` | int | 0x1A110808 | Address to jump to when an exception occurs while in debug mode |
|
|
+-----------------------+-------------+------------+-----------------------------------------------------------------+
|
|
|
|
|
|
Interfaces
|
|
----------
|
|
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| Signal(s) | Width | Dir | Description |
|
|
+=========================+=========================+=====+========================================+
|
|
| ``clk_i`` | 1 | in | Clock signal |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``rst_ni`` | 1 | in | Active-low asynchronous reset |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``test_en_i`` | 1 | in | Test input, enables clock |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``core_id_i`` | 4 | in | Core ID, usually static, can be read |
|
|
| | | | from :ref:`csr-mhartid` CSR |
|
|
+-------------------------+-------------------------+-----+ +
|
|
| ``cluster_id_i`` | 6 | in | |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``boot_addr_i`` | 32 | in | First program counter after reset |
|
|
| | | | = ``boot_addr_i`` + 0x80, |
|
|
| | | | see :ref:`exceptions-interrupts` |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``instr_*`` | Instruction fetch interface, see :ref:`instruction-fetch` |
|
|
+-------------------------+------------------------------------------------------------------------+
|
|
| ``data_*`` | Load-store unit interface, see :ref:`load-store-unit` |
|
|
+-------------------------+------------------------------------------------------------------------+
|
|
| ``irq_*`` | Interrupt inputs, see :ref:`exceptions-interrupts` |
|
|
+-------------------------+------------------------------------------------------------------------+
|
|
| ``debug_*`` | Debug interface, see :ref:`debug-support` |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|
|
| ``fetch_enable_i`` | 1 | in | Enable the core, won't fetch when 0 |
|
|
+-------------------------+-------------------------+-----+----------------------------------------+
|