Skip to content

Commit

Permalink
Support adding random bubbbles to MU input
Browse files Browse the repository at this point in the history
  • Loading branch information
mcoduoza committed Feb 16, 2025
1 parent 4f871c9 commit d054dce
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 23 deletions.
31 changes: 10 additions & 21 deletions tests/test_app/lib/map.c
Original file line number Diff line number Diff line change
Expand Up @@ -341,27 +341,6 @@ int get_exchange_64_config() {
return exchange_64_mode;
}

int get_MU_datawidth() {
int mu_datawidth = 0;
const char *mu_datawidth_env_var = "MU_DATAWIDTH";
char *mu_datawidth_value = getenv(mu_datawidth_env_var);
if (mu_datawidth_value != NULL) {
mu_datawidth = atoi(mu_datawidth_value);
}
return mu_datawidth;
}

int get_MU_OC0() {
int mu_OC0 = 0;
const char *mu_OC0_env_var = "MU_DATAWIDTH";
char *mu_OC0_value = getenv(mu_OC0_env_var);
if (mu_OC0_value != NULL) {
mu_OC0 = atoi(mu_OC0_value);
}
return mu_OC0;
}


int HW_supports_E64() {
int hw_suports_E64 = 0;
const char *HW_supports_E64_env_var = "INCLUDE_E64_HW";
Expand All @@ -372,6 +351,16 @@ int HW_supports_E64() {
return hw_suports_E64;
}

int get_MU_input_bubble_mode() {
int add_mu_input_bubbles = 0;
const char *add_mu_input_bubbles_env_var = "ADD_MU_INPUT_BUBBLES";
char *add_mu_input_bubbles_value = getenv(add_mu_input_bubbles_env_var);
if (add_mu_input_bubbles_value != NULL && strcmp(add_mu_input_bubbles_value, "1") == 0) {
add_mu_input_bubbles = 1;
}
return add_mu_input_bubbles;
}

int update_io_tile_configuration(struct IOTileInfo *io_tile_info, struct ConfigInfo *config_info, struct KernelInfo *kernel_info) {
int tile = io_tile_info->tile;
int start_addr = io_tile_info->start_addr;
Expand Down
24 changes: 22 additions & 2 deletions tests/test_app/tb/proc_driver.sv
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ initial proc_lock = new(1);

semaphore mu_ifc_lock;
initial mu_ifc_lock = new(1);
import "DPI-C" function int get_MU_datawidth();
import "DPI-C" function int get_MU_OC_0();
import "DPI-C" function int get_MU_input_bubble_mode();


bit [GLB_ADDR_WIDTH-1:0] start_addr;
Expand All @@ -18,6 +17,18 @@ bit [BANK_DATA_WIDTH-1:0] ProcDriver_write_wdata;

bit [MU_DATAWIDTH-1:0] mu2cgra_wdata [OC_0-1:0];

// For adding random bubbles to matrix unit input
integer RANDOM_DELAY;
integer ADD_MU_INPUT_BUBBLES;
integer mask;
integer RANDOM_SHIFT;

// For adding random bubbles to matrix unit input
initial begin
RANDOM_SHIFT = 2;
ADD_MU_INPUT_BUBBLES = get_MU_input_bubble_mode();
mask = 32'd3 << RANDOM_SHIFT;
end


task ProcDriver_write_bs();
Expand Down Expand Up @@ -88,6 +99,15 @@ endtask

task MU_driver_write();
mu_ifc.mu2cgra = mu2cgra_wdata;

mu_ifc.mu2cgra_valid = 0;
RANDOM_DELAY = $urandom & mask;
RANDOM_DELAY = RANDOM_DELAY >> RANDOM_SHIFT;
while (RANDOM_DELAY > 0 & ADD_MU_INPUT_BUBBLES) begin
@(posedge mu_ifc.clk);
RANDOM_DELAY--;
end

mu_ifc.mu2cgra_valid = 1;
@(posedge mu_ifc.clk);
endtask
Expand Down

0 comments on commit d054dce

Please sign in to comment.