summaryrefslogtreecommitdiff
path: root/rtl/cache/cache_control.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-04 18:06:48 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-04 18:06:48 -0600
commitcb1c2ce13066d7ef64d92699d005a67858ff06a8 (patch)
treeb5ef55f9756e96ea01d396c89189c54f8f2a1876 /rtl/cache/cache_control.sv
parent8741aef09939f7775cb66058c59cbc8e321f4372 (diff)
parent84ac4c10f1e3ca4f779a19a1b0a2c43c5e18e37d (diff)
Merge remote-tracking branch 'origin/comentarios' into arqui2
Diffstat (limited to '')
-rw-r--r--rtl/cache/cache_control.sv13
1 files changed, 9 insertions, 4 deletions
diff --git a/rtl/cache/cache_control.sv b/rtl/cache/cache_control.sv
index 46d4638..33d380a 100644
--- a/rtl/cache/cache_control.sv
+++ b/rtl/cache/cache_control.sv
@@ -28,6 +28,7 @@ module cache_control
output ring_token out_token,
output logic out_token_valid,
+ // Señales para la SRAM
input addr_tag tag_rd,
input line data_rd,
input line_state state_rd,
@@ -88,9 +89,11 @@ module cache_control
*/
assign unlock_line = !core_waitrequest;
+ // Replace si no coinciden las tags y el estado no es INVALID
assign replace = tag_rd != core_tag && state_rd != INVALID;
- assign last_hop = in_hold.ttl == `TTL_END;
- assign snoop_hit = tag_rd == in_hold.tag;
+ assign last_hop = in_hold.ttl == `TTL_END; //Indica si es el último salto
+ assign snoop_hit = tag_rd == in_hold.tag; //Snoop hit si coinciden las tags
+ // Aceptar snoop si no es el último nodo y se tiene un mensaje válido
assign accept_snoop = in_hold_valid && !last_hop && (in_hold.inval || !in_hold.reply);
assign may_send = may_send_if_token_held && in_token_valid;
@@ -104,7 +107,7 @@ module cache_control
assign out_data_valid = out_stall || send || (in_hold_valid && !last_hop && in_data_ready);
assign send_data.tag = core_tag;
- assign send_data.ttl = `TTL_MAX;
+ assign send_data.ttl = `TTL_MAX; // Acá se inicializa el valor máximo de TTL
assign send_data.data = fwd_data.data; // Esto evita muchos muxes
assign send_data.read = send_read;
assign send_data.index = core_index;
@@ -139,11 +142,13 @@ module cache_control
unique case (state)
ACCEPT: begin
+ // Si es el último nodo en recibir el mensaje y la request no es de lectura
if (last_hop && !in_hold.read) begin
- end_reply = in_hold_valid;
+ end_reply = in_hold_valid; // Se termina el paso de ese mensaje
in_data_ready = 1;
end
+ // Si no es el último salto y hay reply
if (!last_hop && in_hold.reply && !in_hold.inval)
in_data_ready = 1;