summaryrefslogtreecommitdiff
path: root/rtl/cache/cache_control.sv
diff options
context:
space:
mode:
authorJulianCamacho <jjulian.341@gmail.com>2023-10-04 01:13:12 -0600
committerJulianCamacho <jjulian.341@gmail.com>2023-10-04 01:13:12 -0600
commitdbe88c450b72913efc7831131cd92d27c9cc0b92 (patch)
tree5e3c22b266844c68915efe0c03e0783e4f6c81d6 /rtl/cache/cache_control.sv
parentbc466f0511d8b3029c0822f415ebc9ae152b9d09 (diff)
routing and beginning cache control comments
Diffstat (limited to '')
-rw-r--r--rtl/cache/cache_control.sv13
1 files changed, 8 insertions, 5 deletions
diff --git a/rtl/cache/cache_control.sv b/rtl/cache/cache_control.sv
index 85378d5..fb7896a 100644
--- a/rtl/cache/cache_control.sv
+++ b/rtl/cache/cache_control.sv
@@ -89,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;
@@ -105,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 +141,12 @@ 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_data_ready = 1;