-
Notifications
You must be signed in to change notification settings - Fork 17
Squash of Luca Codeluppi's thesis - Verif part #61
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
base: master
Are you sure you want to change the base?
Conversation
initial commit multi-hwpe extension adjustment in write check corrected few errors push test QoS: bandwidth adjusted an error in read check few tests handled the scenario with 0 hwpe, core, ext, or dma waveform to check few modifies debug waveform correct the previous commit: debug this waveform PATH: corrected list of forbidden addresses, assign correct data during read transaction, create path if does't exist modified the makefile to automatically generate the stimuli corrected a small error in the python code small error in the upper bound (address generation) parametric number of HWPE_WIDTH added latency TEST QoS arbitration multi-hwpe: debug photo of waveforms for arbitration problem Enriched the makefile: setup targets updated python documentation corrected an error in tb_top: PRIORITY_CHECK and RANDOM_REQ macros adjusted QoS metrics example config modified hci_arbiter, added mode 1 cleaned the code eliminated task check_hwpe_read_task: redundant cleaned the code changed the description of the arbiter added another mode for the hci_arbiter changed description of the hci_arbiter removed unnecessary from tb_top.sv modified a name in the makefile removed nested generate in the arbiter propagate arbiter mode through the hci added TEST_RATIO: ratio between the number of transactions in the two branches debug corrected small error in tb_top Improved the makefile and changed the python script accordingly Eliminate few targets from makefile Eliminated the following targets: setup_bandwidth, setup_data_integ, setup_arbiter_stall, setup_arbiter_no_stall. Replaced with test_1.mk, test_2.mk, test_3.mk, test_4.mk in config folder forgot to add makefile to the staging area in the previous commit Clean makefile Fix MACRO_TB in the Makefile Eliminate unnecessary in tb_top.sv Change few messages in tb_top.sv Change name N_TEST in config files to N_TRANSACTION and add EXACT_OR_MAX_OFFSET Adapt python script to support EXACT_OR_MAX_OFFSET parameter Implement hci_inteconnect_wrap.sv and fix small error in hci_arbiter.sv Set default value for memory access pattern Eliminate WIDTH_OF_MEMORY and improve readability of sim_time metric Fix few comments Add module queue_stimuli.sv Add modules: queues_out and queues_rdata Add comments to write transaction checker Create verificaion_hci_package Define parameters, structs and tasks in the package Add arbiter_checker module Add macro in hci_package.sv and set ecc to 0 Add progress bar Modularize logic to compute QoS metrics Add end_simulation, progress_bar modules and fix bugs in hci_wrapper Add assignment modules between masters and hci Eliminate data_for_read_transaction method from python class stimuli_generator Fix output warning Add comments to tb_top for clarity Fix error in previous commit [Update] python documentation [Update] process_txt.py and class_stimuli_generator.py documentation [Clean] verification_hci_package.sv [Clean] the code [Clean] [FIX] small error in stimuli generation [Documentation] Update [FIX] README.md [Documentation] Update [Removed] unnecessary print
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a comprehensive verification environment for the Heterogeneous Cluster Interconnect (HCI) hardware IP, developed as part of Luca Codeluppi's thesis. The verification suite provides data integrity checking, bandwidth measurement, and QoS arbitration testing capabilities for the HCI interconnect.
- Complete testbench infrastructure with clock/reset generation, stimuli generation, and result verification
- Python-based stimuli generator supporting various memory access patterns (random, linear, 2D, 3D)
- Configurable simulation framework with makefile-based setup and multiple test configurations
Reviewed Changes
Copilot reviewed 39 out of 41 changed files in this pull request and generated 20 comments.
Show a summary per file
File | Description |
---|---|
verif/sv/tb_top.sv | Main testbench module implementing HCI verification with transaction checking and QoS metrics |
verif/sv/other_modules/*.sv | Supporting modules for stimuli queues, data verification, latency computation, and progress tracking |
verif/stimuli_generator/*.py | Python stimuli generation framework with configurable memory access patterns |
config/*.mk | Configuration files for hardware parameters, simulation settings, and test scenarios |
Makefile | Build system with targets for setup, stimuli generation, compilation, and simulation |
README.md | Documentation for verification environment setup and usage |
Comments suppressed due to low confidence (1)
verif/sv/other_modules/end_simulation_and_final_report.sv:54
- Misspelling: 'troughput' should be 'throughput' (appears twice)
$display("PERFORMANCE RATING %f%%\n", troughput_real/troughput_theo*100);
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
// REAL TROUGHPUT AND SIMULATION TIME // | ||
//////////////////////////////////////// | ||
real latency_per_master[N_MASTER]; | ||
real troughput_real; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misspelling: 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
.END_LATENCY(END_LATENCY), | ||
.rst_n(rst_n), | ||
.clk(clk), | ||
.troughput_real(troughput_real), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misspelling: 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
wait(troughput_real>=0); | ||
$display("\\\\BANDWIDTH\\\\"); | ||
$display("IDEAL APPLICATION PEAK BANDWIDTH (KERNEL DEPENDENT): %f bit per cycle",troughput_theo); | ||
$display("REAL APPLICATION BANDWITH: %f bit per cycle",troughput_real); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Two misspellings: 'BANDWITH' should be 'BANDWIDTH' and 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
end | ||
endtask | ||
|
||
task calculate_theoretical_throughput(output real troughput_theo); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misspelling: 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
end | ||
|
||
tot_data = ((N_TRANSACTION_LOG * DATA_WIDTH) * (N_MASTER_REAL - N_HWPE_REAL) + (N_TRANSACTION_HWPE * HWPE_WIDTH * DATA_WIDTH) * N_HWPE_REAL); // bit | ||
troughput_theo = tot_data/tot_time; // bit per cycle |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misspelling: 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
troughput_theo = tot_data/tot_time; // bit per cycle | ||
band_memory_limit = real'(N_BANKS * DATA_WIDTH); | ||
if (troughput_theo >= band_memory_limit) begin | ||
troughput_theo = band_memory_limit; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misspelling: 'troughput' should be 'throughput'
Copilot uses AI. Check for mistakes.
print("ERROR: Incorrect number of parameters in --sim_and_hardware_params") | ||
print("Expected: 11 parameters") | ||
print("Passed: ", len(args.sim_and_hardware_params), "parameters") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The error message says '11 parameters' but the check on line 148 expects 13 parameters. This inconsistency will confuse users when the error occurs.
print("ERROR: Incorrect number of parameters in --sim_and_hardware_params") | |
print("Expected: 11 parameters") | |
print("Passed: ", len(args.sim_and_hardware_params), "parameters") | |
print("ERROR: Incorrect number of parameters in --sim_and_hardware_params") | |
print("Expected: 13 parameters") | |
print("Passed: ", len(args.sim_and_hardware_params), "parameters") |
Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
initial commit
multi-hwpe extension
adjustment in write check
corrected few errors
push test
QoS: bandwidth
adjusted an error in read check
few tests
handled the scenario with 0 hwpe, core, ext, or dma
waveform to check
few modifies
debug waveform
correct the previous commit: debug this waveform
PATH: corrected list of forbidden addresses, assign correct data during read transaction, create path if does't exist
modified the makefile to automatically generate the stimuli
corrected a small error in the python code
small error in the upper bound (address generation)
parametric number of HWPE_WIDTH
added latency
TEST
QoS arbitration multi-hwpe: debug
photo of waveforms for arbitration problem
Enriched the makefile: setup targets
updated python documentation
corrected an error in tb_top: PRIORITY_CHECK and RANDOM_REQ macros
adjusted QoS metrics
example config
modified hci_arbiter, added mode 1
cleaned the code
eliminated task check_hwpe_read_task: redundant
cleaned the code
changed the description of the arbiter
added another mode for the hci_arbiter
changed description of the hci_arbiter
removed unnecessary from tb_top.sv
modified a name in the makefile
removed nested generate in the arbiter
propagate arbiter mode through the hci
added TEST_RATIO: ratio between the number of transactions in the two branches
debug
corrected small error in tb_top
Improved the makefile and changed the python script accordingly
Eliminate few targets from makefile
Eliminated the following targets: setup_bandwidth, setup_data_integ, setup_arbiter_stall, setup_arbiter_no_stall. Replaced with test_1.mk, test_2.mk, test_3.mk, test_4.mk in config folder
forgot to add makefile to the staging area in the previous commit
Clean makefile
Fix MACRO_TB in the Makefile
Eliminate unnecessary in tb_top.sv
Change few messages in tb_top.sv
Change name N_TEST in config files to N_TRANSACTION and add EXACT_OR_MAX_OFFSET
Adapt python script to support EXACT_OR_MAX_OFFSET parameter
Implement hci_inteconnect_wrap.sv and fix small error in hci_arbiter.sv
Set default value for memory access pattern
Eliminate WIDTH_OF_MEMORY and improve readability of sim_time metric
Fix few comments
Add module queue_stimuli.sv
Add modules: queues_out and queues_rdata
Add comments to write transaction checker
Create verificaion_hci_package
Define parameters, structs and tasks in the package
Add arbiter_checker module
Add macro in hci_package.sv and set ecc to 0
Add progress bar
Modularize logic to compute QoS metrics
Add end_simulation, progress_bar modules and fix bugs in hci_wrapper
Add assignment modules between masters and hci
Eliminate data_for_read_transaction method from python class stimuli_generator
Fix output warning
Add comments to tb_top for clarity
Fix error in previous commit
[Update] python documentation
[Update] process_txt.py and class_stimuli_generator.py documentation
[Clean] verification_hci_package.sv
[Clean] the code
[Clean]
[FIX] small error in stimuli generation
[Documentation] Update
[FIX] README.md
[Documentation] Update
[Removed] unnecessary print