You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow me to leave a comment that might help with what this issue discusses.
I encountered synthesis errors regarding exists_match_bits.
The synthesis tool interpreted that exists_match_bits is multiply assigned and forming combinational loops.
This is probably because the inner genvar loop means to clone a logic of assigning to single exists_match_bits, rather than an assignment to each bit of exists_match_bits.
Considering the code would intend, I worked for a resolution as follows.
The errors have been resolved.
// Exists Lookupfor (genvar i =0; i <CAPACITY; i++) begin:gen_lookupdata_t exists_match_bits;
-for (genvar j =0; j <$bits(data_t); j++) begin:gen_mask-always_combbegin+always_combbegin+for (int j =0; j <$bits(data_t); j++) begin:gen_maskif (linked_data_q[i].free) begin
exists_match_bits[j] =1'b0;
endelsebeginif (!exists_mask_i[j]) begin
exists_match_bits[j] =1'b1;
endelsebegin
exists_match_bits[j] = (linked_data_q[i].data[j] == exists_data_i[j]);
endendendendassign exists_match[i] = (&exists_match_bits);
end
As noted in #138,
id_queue
currently does not support multidimensional arrays:There are several options to address this:
data_t
. These would need to be flattened outside the module.data_t
(as suggested in Fix toolproblems inid_queue
#138)id_queue
The text was updated successfully, but these errors were encountered: