diff options
| author | JulianCamacho <jjulian.341@gmail.com> | 2023-10-03 01:39:00 -0600 |
|---|---|---|
| committer | JulianCamacho <jjulian.341@gmail.com> | 2023-10-03 01:39:00 -0600 |
| commit | 8c5a91578ca929f3a94b54628f6431c136dc417d (patch) | |
| tree | d34b7e52de4494eee991950f70c5e537760df9af /rtl/cache | |
| parent | 70d7dc9489f4d5b91d8138e0a341eec4ad7f15b0 (diff) | |
comentarios
Diffstat (limited to 'rtl/cache')
| -rw-r--r-- | rtl/cache/cache_control.sv | 1 | ||||
| -rw-r--r-- | rtl/cache/offsets.sv | 2 | ||||
| -rw-r--r-- | rtl/cache/routing.sv | 2 | ||||
| -rw-r--r-- | rtl/cache/sram.sv | 5 |
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) |
