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

CVXIF 1.0.0 #2340

Merged
merged 20 commits into from
Jul 12, 2024
Merged

Conversation

Gchauvon
Copy link
Contributor

@Gchauvon Gchauvon commented Jul 9, 2024

Update CoreV-X-interface to its lastest version : release 1.0.0

  • Update CVA6 CVXIF interface.
  • Update example coprocessor.
  • Update list of supported instructions by example coprocessor.

It is not backward compatible with the old 0.2.0 implemented version.

Copy link
Contributor

❌ failed run, report available here.

Gchauvon and others added 15 commits July 11, 2024 13:25
# Conflicts:
#	core/cva6.sv
#	core/ex_stage.sv
#	core/include/build_config_pkg.sv
#	core/issue_read_operands.sv
#	core/issue_stage.sv
#	verif/regress/smoke-tests.sh
#	verif/tests/testlist_cvxif.yaml

# Conflicts:
#	core/cva6.sv

# Conflicts:
#	verif/core-v-verif

# Conflicts:
#	core/cva6.sv
#	core/id_stage.sv
#	core/include/build_config_pkg.sv
#	core/issue_read_operands.sv
#	core/issue_stage.sv
#	verif/core-v-verif
# Conflicts:
#	verif/env/uvme/cov/uvme_cva6_cov_model.sv
#	verif/env/uvme/uvme_cva6_cfg.sv
#	verif/env/uvme/uvme_cva6_env.sv
#	verif/env/uvme/uvme_cva6_pkg.flist
#	verif/env/uvme/uvme_cva6_vsqr.sv
#	verif/tb/uvmt/cva6_tb_wrapper.sv
#	verif/tb/uvmt/uvmt_cva6_dut_wrap.sv
core/issue_read_operands.sv Outdated Show resolved Hide resolved
core/issue_read_operands.sv Outdated Show resolved Hide resolved
core/issue_read_operands.sv Outdated Show resolved Hide resolved
Gchauvon and others added 3 commits July 11, 2024 16:28
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
core/issue_read_operands.sv Outdated Show resolved Hide resolved
core/issue_read_operands.sv Outdated Show resolved Hide resolved
Copy link
Contributor

❌ failed run, report available here.

1 similar comment
Copy link
Contributor

❌ failed run, report available here.

@JeanRochCoulon JeanRochCoulon merged commit 8fa590b into openhwgroup:master Jul 12, 2024
4 checks passed
@JeanRochCoulon JeanRochCoulon deleted the dev/CVXIF branch July 12, 2024 08:53
@cathales
Copy link
Contributor

cathales commented Jul 12, 2024

Hello,

This PR introduced a new kind of warning in asic-synthesis job:

Warning: Timing update failed because design has loops.

EDIT: mention that the warning occurs during synthesis

@jquevremont
Copy link
Contributor

Hello,

This PR introduced a new kind of warning:

Warning: Timing update failed because design has loops.

Does this mean a combinatorial loop?

@cathales
Copy link
Contributor

I guess so

@Gchauvon
Copy link
Contributor Author

I look into this. However gate simulation with timing works fine. That's why it was merged.

@Gchauvon
Copy link
Contributor Author

It is a misleading warning from DC_SHELL which is resolved in compile optimization. There are no combinatorial loop in the result netlist.

@Gchauvon
Copy link
Contributor Author

There are 4 loops looking like the one below :
gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/*cell*93337/B gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/*cell*93337/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191967/A gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191967/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191966/D gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191966/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191941/A gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/hpdcache_ctrl_i/hpdcache_ctrl_pe_i/*cell*191941/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/*cell*95265/A gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/*cell*95265/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T2/A gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T2/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T3/B gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T3/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T4/A gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T4/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T5/B gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/T5/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/prio_msk_i/*cell*97812/B gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/prio_msk_i/*cell*97812/Z gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/*cell*95263/A2 gen_cache_hpd.i_cache_subsystem/i_dcache/i_hpdcache/core_req_arbiter_i/req_arbiter_i/*cell*95263/Z

According to Synopsys's Solvnet this can happens during the GTECH representation of the design, it is then optimized away during compile. Synopsys recommends using report_timing -loops to report timing loops. In our case no timing loop are reported.

@jquevremont
Copy link
Contributor

@cfuguet Can you give a look? This is in the HPDCache.

@cfuguet
Copy link
Contributor

cfuguet commented Jul 16, 2024

Hello ! Yes, I will take a look. But if the report_timing -loops does not display any loop, it probably means that it is a fake positive. Probably after synthesis, some paths are optimized and the "loop" is removed. But I will take a look anyway to see if I can see something.

@cfuguet
Copy link
Contributor

cfuguet commented Jul 21, 2024

Hello, I made a Synthesis and I did not found any timing loop warning in the reports.

However, I needed to do some fixes in the RTL regarding "SUPERSCALAR" to get the CVA6 to synthesize. Hereafter the patch I applied. It is a workaround patch to get the synthesis to succeed (can you take a look @cathales ?) :

--- a/core/ex_stage.sv
+++ b/core/ex_stage.sv
@@ -687,8 +687,8 @@ module ex_stage
           vaddr_to_be_flushed <= '0;
           // if the current instruction in EX_STAGE is a sfence.vma, in the next cycle no writes will happen
         end else if ((~current_instruction_is_sfence_vma) && (~((fu_data_i[0].operation == SFENCE_VMA) && |csr_valid_i))) begin
-          vaddr_to_be_flushed <= rs1_forwarding_i;
-          asid_to_be_flushed  <= rs2_forwarding_i[CVA6Cfg.ASID_WIDTH-1:0];
+          vaddr_to_be_flushed <= rs1_forwarding_i[0];
+          asid_to_be_flushed  <= rs2_forwarding_i[0][CVA6Cfg.ASID_WIDTH-1:0];
         end
       end
     end

My environment is the following for the synthesis:

Design Compiler 2019.12-sp5-4
CVA6 commit c84042ce
CVA6 configuration: core/include/cv64a6_imafdc_sv39_hpdcache_config_pkg.sv

@Gchauvon, @jquevremont Can you tell me the configuration you are using for the synthesis to see if it is related to some specific parameter ?

Thank you

@cathales
Copy link
Contributor

Hello César,

Thank you very much for the report, I will have a look at cv64a6_imafdc_sv39_hpdcache synthesis

@cfuguet
Copy link
Contributor

cfuguet commented Jul 22, 2024

Hello @cathales,

Thank you. But anyway you should have an error with any configuration actually... The rs[12]_forwarding signals are 2-dimensional arrays, but in the code, only the second dimension is used, but with an index (ASID_WIDTH) that is not withing the range of the first dimension. Maybe you did not had the errors in your configurations because ASID_WIDTH is less than 2 in that configuration ?

@cathales
Copy link
Contributor

A fix is available in #2384

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants