Skip to content

Single Cycle CFU instruction issue with Vexriscv #747

Description

@bala122

Hi @tcal-x and @mithro ,
I'm experiencing issues with the working of the Vexriscv core, it's CFU bus and execution of single cycle CFU instructions.

Take the below case, where I have a bunch of single cycle cfu instructions running in a loop.

for loop{ 
	       //Based on flags, add offset or put 0
	       cfu_op1(2,0,0);
	       //Products
	       cfu_op1(3,0,0);
	       //Adding prods
	       cfu_op1(4,0,0);
	       //Store back and add into accum buffer
	       cfu_op1(5,0,0);
    }           

What Im seeing is that some of these instructions , say cfu_op1(3,0,0) are executing twice , even though I didn't intend it to. I have experienced this before with the multi-cycle cfu interface with the Vexriscv core. However, I assumed that the single-cycle cfu interface+ Vexriscv core would work. Do I pull the latest version of the g-cfu repository and have you guys come across this and resolved this bug or is this still there in the Vexriscv core?
Please suggest alternate methods to resolve this as well.

This is the cfu single cycle interface Im using:

  // Trivial handshaking for a combinational CFU
  assign rsp_valid = cmd_valid;
  assign cmd_ready = rsp_ready;

Thanks,
Bala.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions