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

VCS Compiling problem Corev-dv #2588

Open
murattokez opened this issue Mar 5, 2025 · 4 comments
Open

VCS Compiling problem Corev-dv #2588

murattokez opened this issue Mar 5, 2025 · 4 comments

Comments

@murattokez
Copy link

Hello,

When compiling corev-dv with VCS I get errors in 3 related files. I was able to compile with Questa. I am working on cv32e40p/dev branch. Can anyone help?

Error-[ICTA] Incompatible complex type
/verif/code/env/instr_gen_env/cv32e40p_isg_env/cv32e40p_load_store_instr_lib.sv, 45
  Incompatible complex type assignment
  Type of source expression is incompatible with type of target expression. 
  Mismatching types cannot be used in assignments, initializations and 
  instantiations. The type of the target is 'enum 
  riscv_instr_pkg::riscv_reg_t$[]', while the type of the source is 'enum 
  riscv_instr_pkg::riscv_reg_t$[$]'.
  Source Expression: this.s0_a5_avail_regs.find(item) with ((!(item inside 
  {this.cfg.reserved_regs, this.reserved_rd})))

Error-[ICTA] Incompatible complex type
/verif/code/env/instr_gen_env/cv32e40p_isg_env/cv32e40p_load_store_instr_lib.sv, 77
  Incompatible complex type assignment
  Type of source expression is incompatible with type of target expression. 
  Mismatching types cannot be used in assignments, initializations and 
  instantiations. The type of the target is 'enum 
  riscv_instr_pkg::riscv_reg_t$[]', while the type of the source is 'enum 
  riscv_instr_pkg::riscv_reg_t$[$]'.
  Source Expression: this.s0_a5_avail_regs.find(item) with ((!(item inside 
  {this.cfg.reserved_regs, this.reserved_rd})))
  


Error-[ICTA] Incompatible complex type
/verif/code/env/instr_gen_env/cv32e40p_isg_env/cv32e40p_loop_instr.sv, 53
  Incompatible complex type assignment
  Type of source expression is incompatible with type of target expression. 
  Mismatching types cannot be used in assignments, initializations and 
  instantiations. The type of the target is 'enum 
  riscv_instr_pkg::riscv_reg_t$[]', while the type of the source is 'enum 
  riscv_instr_pkg::riscv_reg_t$[$]'.
  Source Expression: this.s0_a5_avail_regs.find(item) with ((!(item inside 
  {this.cfg.reserved_regs, this.reserved_rd})))

135 warnings
3 errors

@MikeOpenHWGroup
Copy link
Member

This looks similar to #2393. The root cause of that issue is a bug in older versions of VCS. For a long time we had a kludge in place as a workaround. It was eventually removed in #2402 and the conclusion was to use a newer version of VCS such as U-2023.03-SP1 or V-2023.12-1 (although these are no long "new" versions).

What version of VCS are you using?

@murattokez
Copy link
Author

I am using V-2023.12-SP1-1. I solved the problem by assigning the dynamic array to a temp queue. It is now working in Questa and VCS.

@MikeOpenHWGroup
Copy link
Member

It is odd that we do not see this error since we are using almost the same version of VCS. Would you be willing to contribute a PR so we can review your fix?

@murattokez
Copy link
Author

Sure, I have created PR with my fix so you can review it.

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

No branches or pull requests

2 participants