Skip to content

Conversation

FrancescoConti
Copy link
Member

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

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
Copy link

@Copilot Copilot AI left a 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;
Copy link
Preview

Copilot AI Aug 28, 2025

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),
Copy link
Preview

Copilot AI Aug 28, 2025

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);
Copy link
Preview

Copilot AI Aug 28, 2025

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);
Copy link
Preview

Copilot AI Aug 28, 2025

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
Copy link
Preview

Copilot AI Aug 28, 2025

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;
Copy link
Preview

Copilot AI Aug 28, 2025

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.

Comment on lines +149 to +151
print("ERROR: Incorrect number of parameters in --sim_and_hardware_params")
print("Expected: 11 parameters")
print("Passed: ", len(args.sim_and_hardware_params), "parameters")
Copy link
Preview

Copilot AI Aug 28, 2025

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.

Suggested change
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant