Skip to content

Commit 360d272

Browse files
Merge pull request #1026 from openhwgroup/dev
merge dev into master
2 parents 782283a + 1079a83 commit 360d272

31 files changed

+1689
-79
lines changed

bhv/cv32e40p_instr_trace.svh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ class instr_trace_t;
802802
else str_hb = ".h";
803803

804804
// set mnemonic
805-
case (instr)
805+
casex (instr)
806806
INSTR_CVADDH ,
807807
INSTR_CVADDSCH ,
808808
INSTR_CVADDSCIH,

bhv/cv32e40p_rvfi.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1640,7 +1640,7 @@ insn_trace_t trace_if, trace_id, trace_ex, trace_ex_next, trace_wb;
16401640
trace_wb.m_rd_wdata[0] = r_pipe_freeze_trace.rf_wdata_wb;
16411641
end
16421642

1643-
if (r_pipe_freeze_trace.csr.fregs_we) begin
1643+
if(r_pipe_freeze_trace.csr.fregs_we && r_pipe_freeze_trace.rf_we_wb && r_pipe_freeze_trace.rf_addr_wb[5]) begin //Catching mstatus updates caused by flw
16441644
`CSR_FROM_PIPE(wb, mstatus_fs)
16451645
trace_wb.m_csr.mstatus_fs_we = 1'b1;
16461646
trace_wb.m_csr.mstatus_fs_wmask = '1;

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
# The short X.Y version
4545
version = u''
4646
# The full version, including alpha/beta/rc tags
47-
release = u'v1.8.0'
47+
release = u'v1.8.3'
4848

4949

5050
# -- General configuration ---------------------------------------------------

docs/source/corev_hw_loop.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ If ebreak is used to enter in Debug Mode (:ref:`ebreak_scenario_2`) and put at t
181181

182182
When ebreak instruction is used as Software Breakpoint by a debugger when in debug mode and is placed at the last instruction location of an HWLoop in instruction memory, no special management is foreseen.
183183
When executing the Software Breakpoint/ebreak instruction, control is given back to the debugger which will manage the different cases.
184-
For instance in Single-Step case, original instruction is put back in instruction memory, a Single-Step command is executed on this last instruction (with desgin updating PC and lpcountX to correct values) and Software Breakpoint/ebreak is put back by the debugger in memory.
184+
For instance in Single-Step case, original instruction is put back in instruction memory, a Single-Step command is executed on this last instruction (with design updating PC and lpcountX to correct values) and Software Breakpoint/ebreak is put back by the debugger in memory.
185185

186186
When ecall instruction is used by a debugger to execute System Calls and is placed at the last instruction location of an HWLoop in instruction memory, debugger ecall handler in debug program should do the same than described above for application case.
187187

docs/source/fpu.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,6 @@ host the floating-point operands.
163163

164164
The latency of the individual instructions are explained in :ref:`instructions_latency_table` table.
165165

166-
To allow FPU unit to be put in sleep mode at the same time the core is doing so, a clock gating cell is instantiated in ``cv32e40p_top`` top level module as well
167-
with its enable signal being inverted ``core_sleep_o`` core output.
168-
169166
FP CSR
170167
------
171168

@@ -175,6 +172,11 @@ exceptions that occurred since it was last reset and the rounding mode.
175172
:ref:`csr-fflags` and :ref:`csr-frm` can be accessed directly or via :ref:`csr-fcsr` which is mapped to
176173
those two registers.
177174

175+
FPU Sleeping mode
176+
-----------------
177+
178+
To reduce power consumption, FPU clock is stopped when no FP instruction is being executed. To do so a dedicated clock gating cell is instantiated in ``cv32e40p_top`` top level module with its enable signal depending of both ``apu_req_o`` and ``apu_busy_o`` core outputs.
179+
178180
Reminder for programmers
179181
------------------------
180182

docs/source/integration.rst

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -248,13 +248,55 @@ The ``constraints/cv32e40p_core.sdc`` file provides an example of synthesis cons
248248
ASIC Synthesis
249249
^^^^^^^^^^^^^^
250250

251-
ASIC synthesis is supported for CV32E40P. The whole design is completely
252-
synchronous and uses positive-edge triggered flip-flops. The
253-
core occupies an area of about XX kGE.
254-
With the FPU, the area increases to about XX kGE (XX kGE
255-
FPU, XX kGE additional register file). A technology specific implementation
256-
of a clock gating cell as described in :ref:`clock-gating-cell` needs to
257-
be provided.
251+
ASIC synthesis is supported for CV32E40P. The whole design is completely synchronous and uses positive-edge triggered flip-flops.
252+
253+
To give some size numbers, it has been synthetized at 100 MHz with a 32 KB memory connected on each of its OBI interface, DFT scan chains have been implemented and it went down to full back-end implementation with Clock Tree synthesis.
254+
But no memory bist are inserted and there are no scan compression for DFT.
255+
256+
And a technology specific implementation of a clock gating cell as described in :ref:`clock-gating-cell` has been provided.
257+
258+
Following table gives CV32E40P size in Kilo-Gates numbers using a 2-input NAND gate with X1 drive for different top parameters settings (COREV_CLUSTER = 0 for all cases).
259+
260+
.. table:: CV32E40P size
261+
:name: CV32E40P size
262+
:widths: 45 45 10
263+
:class: no-scrollbar-table
264+
265+
+-----------------------+--------------------+--------+
266+
| **Configuration** | **Top Parameters** | **KG** |
267+
+=======================+====================+========+
268+
| V1 | COREV_PULP = 0 | 40 |
269+
| | | |
270+
| | FPU = 0 | |
271+
| | | |
272+
| | ZFINX = 0 | |
273+
+-----------------------+--------------------+--------+
274+
| V2 PULP | COREV_PULP = 1 | 57 |
275+
| | | |
276+
| | FPU = 0 | |
277+
| | | |
278+
| | ZFINX = 0 | |
279+
+-----------------------+--------------------+--------+
280+
| V2 PULP & FPU | COREV_PULP = 1 | 93 |
281+
| | | |
282+
| | FPU = 1 | |
283+
| | | |
284+
| | ZFINX = 0 | |
285+
| | | |
286+
| | FPU_ADDMUL_LAT = 0 | |
287+
| | | |
288+
| | FPU_OTHERS_LAT = 0 | |
289+
+-----------------------+--------------------+--------+
290+
| V2 PULP & FPU & ZFINX | COREV_PULP = 1 | 77 |
291+
| | | |
292+
| | FPU = 1 | |
293+
| | | |
294+
| | ZFINX = 1 | |
295+
| | | |
296+
| | FPU_ADDMUL_LAT = 0 | |
297+
| | | |
298+
| | FPU_OTHERS_LAT = 0 | |
299+
+-----------------------+--------------------+--------+
258300

259301
FPGA Synthesis
260302
^^^^^^^^^^^^^^^

0 commit comments

Comments
 (0)