Master candidate dcls - #3421
Conversation
|
It was a default-branch workflow, but due to new GitHub security rules, we switched to a per-branch workflow #3415 We may want to cherry-pick #3415 in |
cainria
left a comment
There was a problem hiding this comment.
Nice contribution! I like the way you handled the common register file.
There was a problem hiding this comment.
This looks like a duplicate of shift_reg from pulp-platform, which is used in CVA6 load unit.
There was a problem hiding this comment.
You are right, I will use it instead.
Using this module also gives the option of having no delay between the cores.
| dcls_comparator #( | ||
| .data_t(core_outputs_t) | ||
| ) i_dcls_comparator ( | ||
| .clk_i, | ||
| .rst_ni (rst_shadow_no), | ||
| .main_i (main_outputs_delayed), | ||
| .shadow_i(shadow_outputs_i), | ||
| .alarm_o (alarm_o[0]) | ||
| ); | ||
| dcls_comparator #( | ||
| .data_t(core_outputs_t) | ||
| ) i_dcls_comparator_dup ( | ||
| .clk_i, | ||
| .rst_ni (rst_shadow_no), | ||
| .main_i (main_outputs_delayed), | ||
| .shadow_i(shadow_outputs_i), | ||
| .alarm_o (alarm_o[1]) | ||
| ); |
There was a problem hiding this comment.
Could we use a for loop here? Or would it prevent us from telling the synthesis tool to not merge these duplicates instances?
There was a problem hiding this comment.
I tested it and it still synthesizes both comparators, at least with our synthesis flow.
I will use a generate loop then
Proposed base of work for common DCLS implementation.
Elaboration top becomes cva6_top which instantiate either a single CVA6 or a CVA6 DCLS with its logic control.
The `dcls_logic` module shifts the main core inputs by a configurable delay to drive the shadow core. it also performs the core outputs comparison.
The `dcls_common` instantiates common modules depending on whether they are configured to be shared or not. Both cores either instantiate the module or send their control signals and receive data from the dcls common modules at the top.
It compares the received control inputs from both cores and outputs and send the result to the cores, shifted by n cycles for the shadow core.
The comparators output synchronous alarms.
Current options are:
Target cv32a60x is set with:
Others configurations are left unchanged and function as before