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.
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.
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:
Thanks,
Bala.