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

[regfile_fpga] oh_raddr_*_err signals unassigned if RdataMuxCheck=0 #2230

Open
glaserf opened this issue Dec 6, 2024 · 0 comments
Open

[regfile_fpga] oh_raddr_*_err signals unassigned if RdataMuxCheck=0 #2230

glaserf opened this issue Dec 6, 2024 · 0 comments
Labels

Comments

@glaserf
Copy link

glaserf commented Dec 6, 2024

Observed Behavior

The onehot-error signals in relation to the read addresses (oh_raddr_a_err, oh_raddr_b_err) in rtl/ibex_register_file_fpga.sv are unassigned for non-secure Ibex configurations (which is for example used for opentitan FPGA top-levels IIRC):

end else begin : gen_no_rdata_mux_check
// async_read a
assign rdata_a_o = (raddr_a_i == '0) ? WordZeroVal : mem[raddr_a_i];
// async_read b
assign rdata_b_o = (raddr_b_i == '0) ? WordZeroVal : mem[raddr_b_i];
end

This leads to the regfile err_o signal becoming x

assign err_o = oh_raddr_a_err || oh_raddr_b_err || oh_we_err;

which triggers assertions (at least for us) when simulating with the FPGA regfile. It however seems to not cause issues during synthesis, at least with Vivado.

I am also unsure about the comments that refer to rdata_*_o as asynchronous:

// async_read a
assign rdata_a_o = (raddr_a_i == '0) ? WordZeroVal : mem[raddr_a_i];

Expected Behavior

Same as for the other regfile variants; signals in question being tied to 1'b0 for RdataMuxCheck = 0.

@glaserf glaserf added the Type:Bug Bugs label Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant