Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
a5b6432
Enhanced regression testing init commit
ccl1616 Mar 2, 2025
a7d3e16
add TODO in actions pipeline
ccl1616 Mar 5, 2025
a2e0b18
create software flow testing on linux on FPGA
ccl1616 Mar 5, 2025
2f0fee5
test SoC flow in an independent scipt
ccl1616 Mar 7, 2025
b444816
add soft flow in testing script
ccl1616 Mar 10, 2025
b036f64
testing run software flow. modify path reference as ESP_ROOT
ccl1616 Mar 10, 2025
99f9e87
add linux boot monitor helper that kills minicom if linux boot succes…
ccl1616 Mar 10, 2025
11d3584
remove log files during testing process
ccl1616 Mar 10, 2025
a601611
add path for logs/config. organize helper scripts.
ccl1616 Mar 31, 2025
58acc81
add ssh_fft actions skeleton. done ssh login and fft expect helper sc…
ccl1616 Apr 3, 2025
459d4aa
update ssh_fft parts
ccl1616 Apr 4, 2025
3360d23
test ssh_fft scripts
ccl1616 Apr 4, 2025
102e457
add overall print for each coherence test in multifft
ccl1616 Apr 5, 2025
8e3cd13
fix fft bugs on p2p print result and action scripts
ccl1616 Apr 5, 2025
8a233b9
update ssh and fft actions
ccl1616 Apr 9, 2025
d2a7ef6
redirect ssh fft actions messages
ccl1616 Apr 9, 2025
8af9608
fix ssh MITM problem by adding flag. change fft threshold mechanism.
ccl1616 Apr 9, 2025
7cebf63
updates in multifft. check testing by counts. log pass fail tests nam…
ccl1616 Apr 15, 2025
ad50ef2
update printing format. update soc target path format
ccl1616 Apr 16, 2025
0a17f65
wrap up ssh fft action
ccl1616 Apr 25, 2025
5a2a47d
add workflow yaml file
ccl1616 Apr 25, 2025
f4b9c5a
update workflow as running on self-host runner
ccl1616 Apr 25, 2025
02dcdab
test running workflow on SoC flow
ccl1616 Apr 25, 2025
95f2417
update esp-soft script rm command
ccl1616 Apr 25, 2025
9976da7
add make accelerators in esp-soft
ccl1616 Apr 25, 2025
81b9a93
copy default config to target soc
ccl1616 Apr 25, 2025
9aa61b2
placed fft_stratus folder into runner
ccl1616 Apr 25, 2025
1eb9a9c
add make fft into workflow
ccl1616 Apr 25, 2025
32ad09f
add source tools_env in workflow
ccl1616 Apr 25, 2025
a694ae4
edit workflow
ccl1616 Apr 25, 2025
0995d5d
test workflow without checkout
ccl1616 May 1, 2025
bd6c264
hardcoded submodule installation and add as an action in workflow
ccl1616 May 1, 2025
041ace7
workflow test
ccl1616 May 1, 2025
0a5a00f
workflow test, checkout and cp sysroot
ccl1616 May 6, 2025
ac128d2
update workflow bug
ccl1616 May 6, 2025
5569980
test checkout clean repo
ccl1616 May 6, 2025
76a07b4
workflow test, set sysroot and install submodule by workflow
ccl1616 May 6, 2025
f99130c
workflow test, debug submodule
ccl1616 May 6, 2025
e62e063
workflow test, post-submodule installation, regular testing tasks on esp
ccl1616 May 6, 2025
ac7197d
workflow test till ssh fft
ccl1616 May 14, 2025
878a523
finalize workflow, create default esp config for testing, test runnin…
ccl1616 May 14, 2025
bccc296
print workflow progress both foreground and in log file
ccl1616 May 14, 2025
98c41f8
test half workflow, test on synthesized bit
ccl1616 May 14, 2025
1d5972d
test workflow on pre-build bitstream and linux
ccl1616 May 14, 2025
a40a575
update workflow script, make sure minicom is killed, print workflow r…
ccl1616 May 14, 2025
1e9313e
trying to solve bind address bug
ccl1616 May 15, 2025
50da4f1
test workflow
ccl1616 May 16, 2025
711974f
test workflow. execute tests on prepared .bit and .bin. testing minic…
ccl1616 May 16, 2025
4e36f82
test workflow. execute prepared files. test hard kill minicom
ccl1616 May 16, 2025
c31f812
add early termination of script if SoC flow failed
ccl1616 May 16, 2025
3139f19
adding JSON feature to workflow
ccl1616 May 16, 2025
9d03301
fix helper script not found bug
ccl1616 May 16, 2025
e549e10
finalize workflow script. separate HLS and Linux image gen into sub-s…
ccl1616 May 16, 2025
bba0144
workflow script and helper scripts done
ccl1616 May 16, 2025
f5a235d
modify comments for minicom
ccl1616 May 16, 2025
989fdd0
exit if bitstream is not found
ccl1616 May 16, 2025
98af42b
add example esp configs file
ccl1616 May 17, 2025
cf79c81
fix multifft print message bug
ccl1616 May 17, 2025
cef2eb9
add readme
ccl1616 Jul 20, 2025
4a5379b
fix gen_bitsream
gabriele-tombesi Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/regression-test-pro.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Regression Test Pro

on:
push:
branches:
- regression-testing

jobs:
regression-pro:
name: Regression Test Pro Test
runs-on: self-hosted

steps:
# - name: Checkout code
# uses: actions/checkout@v4
# with:
# ref: regression-testing

# - name: Set sysroot
# run: |
# cp /opt/sysroot.tgz ./sysroot.tgz
# tar -xzf ./sysroot.tgz -C ./ariane
# rm -f ./sysroot.tgz
# working-directory: ./soft

# - name: Install submodule
# run: ./utils/scripts/submodule_init.sh

- name: Grant permissions to actions-pipeline
run: chmod +x *.sh
working-directory: ./utils/scripts/actions-pipeline

- name: Grant permissions to helper
run: chmod +x *.sh
working-directory: ./utils/scripts/actions-pipeline/helper

- name: Run workflow script
run: |
./run_workflow.sh
working-directory: ./utils/scripts/actions-pipeline
41 changes: 41 additions & 0 deletions socs/defconfig/esp_xilinx-vc707-xc7vx485t_testing
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
CPU_ARCH = ariane
NCPU_TILE = 1
CONFIG_HAS_SG = y
CONFIG_NOC_ROWS = 3
CONFIG_NOC_COLS = 2
CONFIG_COH_NOC_WIDTH = 64
CONFIG_DMA_NOC_WIDTH = 64
CONFIG_MULTICAST_NOC_EN = y
CONFIG_MAX_MCAST_DESTS = 4
CONFIG_QUEUE_SIZE = 4
CONFIG_CACHE_EN = y
CONFIG_CACHE_RTL = y
#CONFIG_CACHE_SPANDEX is not set
CONFIG_CPU_CACHES = 512 4 1024 16
CONFIG_ACC_CACHES = 512 4
CONFIG_CACHE_LINE_SIZE = 128
CONFIG_SLM_KBYTES = 256
#CONFIG_JTAG_EN is not set
CONFIG_ETH_EN = y
#CONFIG_IOLINK_EN is not set
CONFIG_IOLINK_WIDTH = 16
CONFIG_MEM_LINK_WIDTH = 64
#CONFIG_SVGA_EN is not set
CONGIG_DSU_IP = C0A80107
CONGIG_DSU_ETH = A6A7A0F8043D
CONFIG_CLK_STR = 0
CONFIG_MON_DDR = y
CONFIG_MON_MEM = y
CONFIG_MON_INJ = y
CONFIG_MON_ROUTERS = y
CONFIG_MON_ACCELERATORS = y
CONFIG_MON_L2 = y
CONFIG_MON_LLC = y
#CONFIG_MON_DVFS is not set
TILE_0_0 = 0 mem mem
TILE_0_1 = 1 cpu cpu
TILE_1_0 = 2 acc FFT_STRATUS basic_fx32_dma64 1 0 sld
TILE_1_1 = 3 misc IO
TILE_2_0 = 4 acc FFT_STRATUS basic_fx32_dma64 0 0 sld
TILE_2_1 = 5 acc FFT_STRATUS basic_fx32_dma64 0 0 sld
#CONFIG_HAS_DVFS is not set
18 changes: 9 additions & 9 deletions socs/xilinx-vc707-xc7vx485t/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,26 +44,26 @@ TOP_VLOG_SIM_SRCS +=


### Xilinx Vivado hw_server ###
FPGA_HOST ?= localhost
XIL_HW_SERVER_PORT ?= 3121
FPGA_HOST ?= espdev.cs.columbia.edu
XIL_HW_SERVER_PORT ?= 3122


### Network configuration ###

# IP address or host name of the host connected to the FPGA
UART_IP ?=
UART_PORT ?=
UART_IP ?= espdev.cs.columbia.edu
UART_PORT ?= 4322

# SSH IP address or host name of the ESP Linux instance or gateway
SSH_IP ?=
SSH_PORT ?= 22
SSH_IP ?= 128.59.22.75
SSH_PORT ?= 5502

# ESPLink IP address or gateway (DO NOT USE HOST NAME)
ESPLINK_IP ?=
ESPLINK_PORT ?= 46392
ESPLINK_IP ?= 128.59.22.75
ESPLINK_PORT ?= 46307

# MAC address for Linux if using IP address reservation (e.g. 00aabb33cc77)
# LINUX_MAC ?=
LINUX_MAC ?= 000A3502CB80


### Include global Makefile ###
Expand Down
110 changes: 91 additions & 19 deletions soft/common/apps/examples/multifft/multifft.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,14 @@ int main(int argc, char **argv)

float *gold[3];
token_t *buf[3];
int *fft_error = (int*)malloc(NACC * sizeof(int));
int fft_pass_count = 0;
int pass_test_count = 0, total_test_count = 0;
char pass_log[256];
char fail_log[256];

const float ERROR_COUNT_TH = 0.01;
const float ERROR_COUNT_TH = 0.05;
const int TESTING_COUNT_TH = 10;

int k;

Expand All @@ -102,6 +108,8 @@ int main(int argc, char **argv)
}

init_buffer(buf[0], gold[0], false);
memset(pass_log, 0, sizeof(pass_log));
memset(fail_log, 0, sizeof(fail_log));

printf("\n====== Non coherent DMA ======\n\n");
printf(" .len = %d\n", len);
Expand All @@ -117,10 +125,16 @@ int main(int argc, char **argv)

errors = validate_buffer(&buf[0][out_offset], gold[0]);

if (((float)errors / (float)len) > ERROR_COUNT_TH)
printf(" + TEST FAIL: exceeding error count threshold\n");
else
printf(" + TEST PASS: not exceeding error count threshold\n");
if (errors > TESTING_COUNT_TH) {
printf(" + OVERALL TEST RESULT: Non coherent DMA: FAIL (%d/%d)\n", errors, 2 * len);
strcpy(fail_log, "Non coherent DMA, ");
}
else {
printf(" + OVERALL TEST RESULT: Non coherent DMA: PASS (%d/%d)\n", errors, 2 * len);
pass_test_count += 1;
strcpy(pass_log, "Non coherent DMA, ");
}
total_test_count += 1;

printf("\n============\n\n");

Expand All @@ -141,10 +155,16 @@ int main(int argc, char **argv)

errors = validate_buffer(&buf[0][out_offset], gold[0]);

if (((float)errors / (float)len) > ERROR_COUNT_TH)
printf(" + TEST FAIL: exceeding error count threshold\n");
else
printf(" + TEST PASS: not exceeding error count threshold\n");
if (errors > TESTING_COUNT_TH) {
printf(" + OVERALL TEST RESULT: LLC-coherent DMA: FAIL (%d/%d)\n", errors, 2 * len);
strcat(fail_log, "LLC-coherent DMA, ");
}
else {
printf(" + OVERALL TEST RESULT: LLC-coherent DMA: PASS (%d/%d)\n", errors, 2 * len);
pass_test_count += 1;
strcat(pass_log, "LLC-coherent DMA, ");
}
total_test_count += 1;

printf("\n============\n\n");

Expand All @@ -165,10 +185,16 @@ int main(int argc, char **argv)

errors = validate_buffer(&buf[0][out_offset], gold[0]);

if (((float)errors / (float)len) > ERROR_COUNT_TH)
printf(" + TEST FAIL: exceeding error count threshold\n");
else
printf(" + TEST PASS: not exceeding error count threshold\n");
if (errors > TESTING_COUNT_TH) {
printf(" + OVERALL TEST RESULT: Fully-coherent DMA: FAIL (%d/%d)\n", errors, 2 * len);
strcat(fail_log, "Fully-coherent DMA, ");
}
else {
pass_test_count += 1;
printf(" + OVERALL TEST RESULT: Fully-coherent DMA: PASS (%d/%d)\n", errors, 2 * len);
strcat(pass_log, "Fully-coherent DMA, ");
}
total_test_count += 1;

printf("\n============\n\n");

Expand Down Expand Up @@ -196,12 +222,34 @@ int main(int argc, char **argv)

for (k = 0; k < NACC; k++) {
errors = validate_buffer(&buf[k][out_offset], gold[k]);
fft_error[k] = errors;

if (((float)errors / (float)(len * NACC)) > ERROR_COUNT_TH)
if (errors > TESTING_COUNT_TH)
printf(" + TEST FAIL fft.%d: exceeding error count threshold\n", k);
else
else {
printf(" + TEST PASS fft.%d: not exceeding error count threshold\n", k);
fft_pass_count ++;
}
}

if (fft_pass_count < NACC) {
printf(" + OVERALL TEST RESULT: Concurrent execution: FAIL (%d/%d).", NACC - fft_pass_count, NACC);
strcat(fail_log, "Concurrent execution, ");
}
else {
printf(" + OVERALL TEST RESULT: Concurrent execution: PASS.");
pass_test_count += 1;
strcat(pass_log, "Concurrent execution, ");
}
for (k = 0; k < NACC; k++) {
errors = fft_error[k];
if (errors > TESTING_COUNT_TH)
printf(" fft.%d: FAIL (%d/%d).", k, errors, 2 * len);
else
printf(" fft.%d: PASS (%d/%d).", k, errors, 2 * len);
}
total_test_count += 1;
printf("\n");

printf("\n============\n\n");

Expand All @@ -225,17 +273,41 @@ int main(int argc, char **argv)

errors = validate_buffer(&buf[0][out_offset], gold[0]);

if (((float)errors / (float)(len * NACC)) > ERROR_COUNT_TH)
printf(" + TEST FAIL: exceeding error count threshold\n");
else
printf(" + TEST PASS: not exceeding error count threshold\n");
if (errors > TESTING_COUNT_TH) {
// printf(" + TEST FAIL: exceeding error count threshold of %d\n", TESTING_COUNT_TH);
printf(" + OVERALL TEST RESULT: Point-to-point: FAIL (%d/%d)\n", errors, 2 * len);
strcat(fail_log, "Point-to-point Test, ");
}
else {
// printf(" + TEST PASS: not exceeding error count threshold of %d\n", TESTING_COUNT_TH);
printf(" + OVERALL TEST RESULT: Point-to-point: PASS (%d/%d)\n", errors, 2 * len);
pass_test_count += 1;
strcat(pass_log, "Point-to-point Test, ");
}
total_test_count += 1;

printf("\n============\n\n");

/* Overall result */
strcat(pass_log, "\0");
strcat(fail_log, "\0");

if (pass_test_count == total_test_count)
printf("[PASS] FFT OVERALL TEST RESULT: PASS ALL! \n");
else {
printf("[FAIL] FFT OVERALL TEST RESULT: FAIL! ");
// detailed result
printf("PASS %d: ", pass_test_count);
printf("%s", pass_log);
printf("FAIL %d: ", total_test_count - pass_test_count);
printf("%s\n", fail_log);
}

for (k = 0; k < NACC; k++) {
free(gold[k]);
esp_free(buf[k]);
}
free(fft_error);

return errors;
}
Loading