Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge dev into master #1026

Merged
merged 39 commits into from
Jul 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b7434ba
Adding formal rule for coverage holes on controller
Jun 4, 2024
c581a90
Adding more assertions for code coverage holes in controller
Jun 6, 2024
54558a8
RVFI - Correction corner case conflict on mstatus_fs upades when inte…
Jun 6, 2024
b281ced
Running verible
Jun 6, 2024
f814f55
Merge pull request #997 from YoannPruvost/dev_formal_2
davideschiavone Jun 6, 2024
bdd5253
Merge pull request #998 from YoannPruvost/dev_mstatus_fs_mismatch
davideschiavone Jun 6, 2024
162574d
jasper SLEC script changes
mret55 Jun 12, 2024
62c8b57
Update README.rtf
mret55 Jun 12, 2024
cc3fe88
Delete .DS_Store
mret55 Jun 12, 2024
cf61744
Delete scripts/.DS_Store
mret55 Jun 12, 2024
6483ac1
Delete scripts/slec/.DS_Store
mret55 Jun 12, 2024
d4971dc
Changes made to run.sh. Added a new folder for assume and bind files
mret55 Jun 16, 2024
f700261
Merge branch 'dev' of https://github.com/mret55/cv32e40p into dev
mret55 Jun 16, 2024
5f5dc4e
Delete scripts/slec/.DS_Store
mret55 Jun 16, 2024
84940f4
Delete scripts/.DS_Store
mret55 Jun 16, 2024
06dc30f
Delete scripts/slec/cadence/.DS_Store
mret55 Jun 16, 2024
fd8ddc0
Delete .DS_Store
mret55 Jun 16, 2024
4951be4
Replaced headers in assume and bind files with the ones in formal dir…
mret55 Jun 17, 2024
f5ce76d
Merge branch 'dev' of https://github.com/mret55/cv32e40p into dev
mret55 Jun 17, 2024
b2eebc5
Merge pull request #1003 from mret55/dev
MikeOpenHWGroup Jun 18, 2024
2ceb84f
RISC-V ISA Formal Verification files for SiemensEDA OneSpin tool.
Jun 6, 2024
3b9cd10
Added signoff report generation.
Jun 12, 2024
e77b13b
License header addition except in json files which don't accept comme…
Jun 19, 2024
9de461c
Changed Siemens EDA to Siemens and Onespin to Questa Processor.
Jun 20, 2024
98695ef
Merge pull request #1008 from pascalgouedo/dev_dd_pgo_riscv_formal
Jun 21, 2024
052253b
Up-to-date files for RISC-V ISA Formal Verification.
Jun 26, 2024
211d290
Updated PRC commands.
Jun 27, 2024
6993959
Added Siemens Questa Processor version requirement.
Jun 27, 2024
8f24b1d
Merge pull request #1014 from pascalgouedo/dev_dd_pgo_riscv_formal
Jun 28, 2024
9aa9890
Cleanup.
Jun 6, 2024
2ef1163
Added FPU sleep information.
Jul 3, 2024
35acdef
Added ASIC size numbers for different configurations.
Jul 3, 2024
8ca2522
User Manual Verification section final version.
Jul 3, 2024
4e7b2ec
Changed User Manual version to v1.8.3
Jul 3, 2024
c998590
Merge pull request #1020 from pascalgouedo/dev_dd_pgo_doc
Jul 3, 2024
c0823cf
All links updated to cv32e40p_v1.8.3 tag for the 3 target repos (core…
Jul 11, 2024
d1ddd92
Merge pull request #1024 from pascalgouedo/dev_dd_pgo_doc
Jul 11, 2024
43e6af1
core-v-docs changed to programs
Jul 11, 2024
1079a83
Merge pull request #1025 from pascalgouedo/dev_dd_pgo_doc
Jul 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bhv/cv32e40p_instr_trace.svh
Original file line number Diff line number Diff line change
Expand Up @@ -802,7 +802,7 @@ class instr_trace_t;
else str_hb = ".h";

// set mnemonic
case (instr)
casex (instr)
INSTR_CVADDH ,
INSTR_CVADDSCH ,
INSTR_CVADDSCIH,
Expand Down
2 changes: 1 addition & 1 deletion bhv/cv32e40p_rvfi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -1640,7 +1640,7 @@ insn_trace_t trace_if, trace_id, trace_ex, trace_ex_next, trace_wb;
trace_wb.m_rd_wdata[0] = r_pipe_freeze_trace.rf_wdata_wb;
end

if (r_pipe_freeze_trace.csr.fregs_we) begin
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
`CSR_FROM_PIPE(wb, mstatus_fs)
trace_wb.m_csr.mstatus_fs_we = 1'b1;
trace_wb.m_csr.mstatus_fs_wmask = '1;
Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
# The short X.Y version
version = u''
# The full version, including alpha/beta/rc tags
release = u'v1.8.0'
release = u'v1.8.3'


# -- General configuration ---------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion docs/source/corev_hw_loop.rst
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ If ebreak is used to enter in Debug Mode (:ref:`ebreak_scenario_2`) and put at t

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.
When executing the Software Breakpoint/ebreak instruction, control is given back to the debugger which will manage the different cases.
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.
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.

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.

Expand Down
8 changes: 5 additions & 3 deletions docs/source/fpu.rst
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,6 @@ host the floating-point operands.

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

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
with its enable signal being inverted ``core_sleep_o`` core output.

FP CSR
------

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

FPU Sleeping mode
-----------------

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.

Reminder for programmers
------------------------

Expand Down
56 changes: 49 additions & 7 deletions docs/source/integration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -248,13 +248,55 @@ The ``constraints/cv32e40p_core.sdc`` file provides an example of synthesis cons
ASIC Synthesis
^^^^^^^^^^^^^^

ASIC synthesis is supported for CV32E40P. The whole design is completely
synchronous and uses positive-edge triggered flip-flops. The
core occupies an area of about XX kGE.
With the FPU, the area increases to about XX kGE (XX kGE
FPU, XX kGE additional register file). A technology specific implementation
of a clock gating cell as described in :ref:`clock-gating-cell` needs to
be provided.
ASIC synthesis is supported for CV32E40P. The whole design is completely synchronous and uses positive-edge triggered flip-flops.

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.
But no memory bist are inserted and there are no scan compression for DFT.

And a technology specific implementation of a clock gating cell as described in :ref:`clock-gating-cell` has been provided.

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).

.. table:: CV32E40P size
:name: CV32E40P size
:widths: 45 45 10
:class: no-scrollbar-table

+-----------------------+--------------------+--------+
| **Configuration** | **Top Parameters** | **KG** |
+=======================+====================+========+
| V1 | COREV_PULP = 0 | 40 |
| | | |
| | FPU = 0 | |
| | | |
| | ZFINX = 0 | |
+-----------------------+--------------------+--------+
| V2 PULP | COREV_PULP = 1 | 57 |
| | | |
| | FPU = 0 | |
| | | |
| | ZFINX = 0 | |
+-----------------------+--------------------+--------+
| V2 PULP & FPU | COREV_PULP = 1 | 93 |
| | | |
| | FPU = 1 | |
| | | |
| | ZFINX = 0 | |
| | | |
| | FPU_ADDMUL_LAT = 0 | |
| | | |
| | FPU_OTHERS_LAT = 0 | |
+-----------------------+--------------------+--------+
| V2 PULP & FPU & ZFINX | COREV_PULP = 1 | 77 |
| | | |
| | FPU = 1 | |
| | | |
| | ZFINX = 1 | |
| | | |
| | FPU_ADDMUL_LAT = 0 | |
| | | |
| | FPU_OTHERS_LAT = 0 | |
+-----------------------+--------------------+--------+

FPGA Synthesis
^^^^^^^^^^^^^^^
Expand Down
Loading
Loading