-
Notifications
You must be signed in to change notification settings - Fork 689
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TASK] Parametrization #1451
Comments
|
@zarubaf I listed the parameters belonging to the config package to identify which are already in CVACfg ("done") and the others, some could be easily transformed as parameter ("easy"), some less ("hard"). |
There was already an existing task for this #1233 |
Hello, I’m working on it |
I have started working on it last week but this week I did not have time to work on this topic. |
Back from holiday, I am rebasing my previous work and will continue working on it. |
I have finished transferring It will require me a few more weeks before I can complete this task. |
|
Here is the current status: #1704 Once this PR is completed and merged, the planned work will be to:
It would be nice if someone else can help me, especially for points b) and c) which I cannot handle myself. These two points can be started in parallel of my current work. |
This is the third step for #1451. Many values are moved but not all values are moved yet * move NR_SB_ENTRIES & TRANS_ID_BITS * remove default rvfi_instr_t from spike.sv * fifo_v3: ariane_pkg::FPGA_EN becomes a param * move FPGA_EN * inline wt_cache_pkg::L15_SET_ASSOC * move wt_cache_pkg::L15_WAY_WIDTH * inline wt_cache_pkg::L1I_SET_ASSOC * inline wt_cache_pkg::L1D_SET_ASSOC * move wt_cache_pkg::DCACHE_CL_IDX_WIDTH * move ICACHE_TAG_WIDTH * move DCACHE_TAG_WIDTH * move ICACHE_INDEX_WIDTH * move ICACHE_SET_ASSOC * use ICACHE_SET_ASSOC_WIDTH instead of $clog2(ICACHE_SET_ASSOC) * move DCACHE_NUM_WORDS * move DCACHE_INDEX_WIDTH * move DCACHE_OFFSET_WIDTH * move DCACHE_BYTE_OFFSET * move DCACHE_DIRTY_WIDTH * move DCACHE_SET_ASSOC_WIDTH * move DCACHE_SET_ASSOC * move CONFIG_L1I_SIZE * move CONFIG_L1D_SIZE * move DCACHE_LINE_WIDTH * move ICACHE_LINE_WIDTH * move ICACHE_USER_LINE_WIDTH * move DCACHE_USER_LINE_WIDTH * DATA_USER_WIDTH = DCACHE_USER_WIDTH * move DCACHE_USER_WIDTH * move FETCH_USER_WIDTH * move FETCH_USER_EN * move LOG2_INSTR_PER_FETCH * move INSTR_PER_FETCH * move FETCH_WIDTH * transform SSTATUS_SD and SMODE_STATUS_READ_MASK into functions * move [SM]_{SW,TIMER,EXT}_INTERRUPT into a structure * move SV * move vm_mode_t to config_pkg * move MODE_SV * move VPN2 * move PPNW * move ASIDW * move ModeW * move XLEN_ALIGN_BYTES * move DATA_USER_EN * format: apply verible
All the three steps announced on Mattermost are now merged. Many values have been moved to the new structure but the work is not over yet! Below are points that still need to be addressed. Update submodulesSubmodules currently depend on configuration values from packages. It prevents form moving these values and their dependencies into the structure.
RVFI (done)This task has been done by @yanicasa
Update user configs and config generator
However, Move more values to the configuration structureNot all values are parametrized yet, and updating user configurations would help finding them. Rules of thumb to help moving values into the configuration structure.Identify items to moveFind potential dependents of grep -nrw <the item> core/include Start with the leaves of the dependency tree. Add the item to the configuration
Commit your changes before massive edits. You will be able to amend your commit after them. Massive editsAll commands below can have false positive. Make sure you understand the command before running it (mind the placeholders). Make sure your have nothing to commit; it will make it easy to cancel your command with Add
|
Another input from @zarubaf The types could be at the beginning of the module instead of inside the parameters. module the_module #(
- localparam type the_type = ...
) ( ... );
+ localparam type the_type = ...;
...
endmodule |
Is there an existing CVA6 task for this?
Task Description
To be able to instantiate several CVA6 with different configurations, parameters must be defined as cva6 input parameters.
Required Changes
Move parameters from packages to cva6 input parameters. But as not all the parameters can be configured, identify:
Remove ifdef from RTL, for instance openpiton ifdef
Current Status
NOC done
RVFI done
Ariane_cfg_t ongoing
All others to be done
Risks
To not finish the modification, to be in the middle of the bridge.
Prerequisites
system verilog limitations
KPI (KEY Performance Indicators)
remaining number of parameters to be moved from package to input parameters
Description of Done
All parameters are moved from package to input parameters
Associated PRs
No response
The text was updated successfully, but these errors were encountered: