summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorJulianCamacho <jjulian.341@gmail.com>2023-10-03 01:39:00 -0600
committerJulianCamacho <jjulian.341@gmail.com>2023-10-03 01:39:00 -0600
commit8c5a91578ca929f3a94b54628f6431c136dc417d (patch)
treed34b7e52de4494eee991950f70c5e537760df9af /rtl
parent70d7dc9489f4d5b91d8138e0a341eec4ad7f15b0 (diff)
comentarios
Diffstat (limited to 'rtl')
-rw-r--r--rtl/cache/cache_control.sv1
-rw-r--r--rtl/cache/offsets.sv2
-rw-r--r--rtl/cache/routing.sv2
-rw-r--r--rtl/cache/sram.sv5
4 files changed, 9 insertions, 1 deletions
diff --git a/rtl/cache/cache_control.sv b/rtl/cache/cache_control.sv
index 7186e95..85378d5 100644
--- a/rtl/cache/cache_control.sv
+++ b/rtl/cache/cache_control.sv
@@ -29,6 +29,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,
diff --git a/rtl/cache/offsets.sv b/rtl/cache/offsets.sv
index a933d1c..f9ad2ff 100644
--- a/rtl/cache/offsets.sv
+++ b/rtl/cache/offsets.sv
@@ -13,7 +13,7 @@ module cache_offsets
output word core_readdata,
output line_be core_byteenable_line
);
-
+ //Simplificar offsets
line line_mask;
word be_extend, mask3, mask2, mask1, mask0;
word_be be3, be2, be1, be0;
diff --git a/rtl/cache/routing.sv b/rtl/cache/routing.sv
index c72d9b5..8f744dd 100644
--- a/rtl/cache/routing.sv
+++ b/rtl/cache/routing.sv
@@ -48,6 +48,7 @@ module cache_routing
BYPASS
} state;
+ //Arbitrar el bus del lado de la cache
assign cached = io == 3'b000;
assign cache_mem = cache_mem_read || cache_mem_write;
@@ -61,6 +62,7 @@ module cache_routing
always_comb begin
transition = 0;
core_waitrequest = cache_core_waitrequest;
+ // Desde el punto de vista de cache, mem le hace waitreq a cache
cache_mem_waitrequest = 1;
unique case (state)
diff --git a/rtl/cache/sram.sv b/rtl/cache/sram.sv
index 986c09b..8d68b7e 100644
--- a/rtl/cache/sram.sv
+++ b/rtl/cache/sram.sv
@@ -27,6 +27,10 @@ module cache_sram
addr_tag tag_file[DEPTH] /*verilator public*/;
line_state state_file[DEPTH] /*verilator public*/;
+ // Hace 3 cosas:
+ // 1. Si se necesita escribir un dato: escribe en los tag y data files en la posición del index de escritura
+ // 2. Si se necesita escribir un estado: escribe en el state file en la posición del index de escritura
+ // 3. Cada ciclo retorna siempre lo que esté en todos los files en la posición de index de lectura
always_ff @(posedge clk) begin
if (write_data) begin
tag_file[index_wr] <= tag_wr;
@@ -41,6 +45,7 @@ module cache_sram
state_rd <= state_file[index_rd];
end
+ // Se inicializan todas las líneas del state file como INVALID
//FIXME: rst_n para state_file?
initial
for (int i = 0; i < DEPTH; ++i)