From 3c0faf0021a9507a2a7b13f0c1d815aa68e00f8a Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 17:27:24 -0600 Subject: [PATCH 01/11] [OpenFPGA Architecture] Add a new architecture with fully connected crossbar at CLB outputs --- ..._N4_tileable_full_output_crossbar_40nm.xml | 291 ++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml diff --git a/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml b/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml new file mode 100644 index 000000000..f1d8ac1d3 --- /dev/null +++ b/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + io.outpad io.inpad + io.outpad io.inpad + io.outpad io.inpad + io.outpad io.inpad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 1 1 1 1 + 1 1 1 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 261e-12 + 261e-12 + 261e-12 + 261e-12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 30fb99095fc557f7be1ec1e4d6b3062cd889a816 Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 17:29:15 -0600 Subject: [PATCH 02/11] [Regression Tests] Add new test case for fully connected output crossbar --- .../config/task.conf | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf diff --git a/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf b/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf new file mode 100644 index 000000000..e9e253d1d --- /dev/null +++ b/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf @@ -0,0 +1,38 @@ +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = +# Configuration file for running experiments +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = +# timeout_each_job : FPGA Task script splits fpga flow into multiple jobs +# Each job execute fpga_flow script on combination of architecture & benchmark +# timeout_each_job is timeout for each job +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = + +[GENERAL] +run_engine=openfpga_shell +power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml +power_analysis = true +spice_output=false +verilog_output=true +timeout_each_job = 20*60 +fpga_flow=vpr_blif + +[OpenFPGA_SHELL] +openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/OpenFPGAShellScripts/example_script.openfpga +openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k4_N4_frame_40nm_openfpga.xml +openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml +external_fabric_key_file= + +[ARCHITECTURES] +arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_N4_tileable_full_output_crossbar_40nm.xml + +[BENCHMARKS] +bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.blif + +[SYNTHESIS_PARAM] +bench0_top = and2 +bench0_act = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.act +bench0_verilog = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.v +bench0_chan_width = 300 + +[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH] +end_flow_with_test= +vpr_fpga_verilog_formal_verification_top_netlist= From 030d7f02f84c7275fd83c8156066ff94c7b6c0ed Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 17:30:08 -0600 Subject: [PATCH 03/11] [OpenFPGA architecture] bug fix in the fully connected output crossbar architecture --- .../vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml b/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml index f1d8ac1d3..b4be8823f 100644 --- a/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml +++ b/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml @@ -268,7 +268,7 @@ Since all our outputs LUT outputs go to a BLE output, and have a delay of 25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback to get the part that should be marked on the crossbar. --> - + From 35d47ee0e74a656d3c712a8052cf28d6b962d07e Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 17:33:54 -0600 Subject: [PATCH 04/11] [Regression tests] bug fix in the test case for fully connected output crossbar --- .../fully_connected_output_crossbar/config/task.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf b/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf index e9e253d1d..f8717b5fd 100644 --- a/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf +++ b/openfpga_flow/tasks/fpga_verilog/fully_connected_output_crossbar/config/task.conf @@ -17,12 +17,12 @@ fpga_flow=vpr_blif [OpenFPGA_SHELL] openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/OpenFPGAShellScripts/example_script.openfpga -openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k4_N4_frame_40nm_openfpga.xml +openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k4_N4_40nm_frame_openfpga.xml openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml external_fabric_key_file= [ARCHITECTURES] -arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_N4_tileable_full_output_crossbar_40nm.xml +arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_tileable_full_output_crossbar_40nm.xml [BENCHMARKS] bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.blif From 5fe039dd7cc7c8aed34e414ca9e9fb45ed2904c0 Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 17:35:49 -0600 Subject: [PATCH 05/11] [Regression Tests] Deploy the fully connected crossbar test to CI --- .travis/fpga_verilog_reg_test.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis/fpga_verilog_reg_test.sh b/.travis/fpga_verilog_reg_test.sh index 35086b65b..8956cab1e 100755 --- a/.travis/fpga_verilog_reg_test.sh +++ b/.travis/fpga_verilog_reg_test.sh @@ -90,6 +90,9 @@ python3 openfpga_flow/scripts/run_fpga_task.py fpga_verilog/power_gated_design/p echo -e "Testing Depopulated crossbar in local routing"; python3 openfpga_flow/scripts/run_fpga_task.py fpga_verilog/depopulate_crossbar --debug --show_thread_logs +echo -e "Testing Fully connected output crossbar in local routing"; +python3 openfpga_flow/scripts/run_fpga_task.py fpga_verilog/fully_connected_output_crossbar --debug --show_thread_logs + echo -e "Testing through channels in tileable routing"; python3 openfpga_flow/scripts/run_fpga_task.py fpga_verilog/thru_channel/thru_narrow_tile --debug --show_thread_logs python3 openfpga_flow/scripts/run_fpga_task.py fpga_verilog/thru_channel/thru_wide_tile --debug --show_thread_logs From f5b7ac62698ec5ca541327d8a1ad5866d0ec1bba Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 18:04:55 -0600 Subject: [PATCH 06/11] [OpenFPGA Architecture] Add a new architecture with no local routing --- ...4_no_local_routing_40nm_frame_openfpga.xml | 196 ++++++++++++ .../k4_N4_tileable_no_local_routing_40nm.xml | 286 ++++++++++++++++++ 2 files changed, 482 insertions(+) create mode 100644 openfpga_flow/openfpga_arch/k4_N4_no_local_routing_40nm_frame_openfpga.xml create mode 100644 openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml diff --git a/openfpga_flow/openfpga_arch/k4_N4_no_local_routing_40nm_frame_openfpga.xml b/openfpga_flow/openfpga_arch/k4_N4_no_local_routing_40nm_frame_openfpga.xml new file mode 100644 index 000000000..9ba39b3ce --- /dev/null +++ b/openfpga_flow/openfpga_arch/k4_N4_no_local_routing_40nm_frame_openfpga.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10e-12 + + + 10e-12 + + + + + + + + + 10e-12 + + + 10e-12 + + + + + + + + + 10e-12 + + + 10e-12 + + + + + + + + + + + + + 10e-12 5e-12 5e-12 + + + 10e-12 5e-12 5e-12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml b/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml new file mode 100644 index 000000000..4605da01e --- /dev/null +++ b/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + io.outpad io.inpad + io.outpad io.inpad + io.outpad io.inpad + io.outpad io.inpad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 1 1 1 1 + 1 1 1 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 261e-12 + 261e-12 + 261e-12 + 261e-12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c40c9f58767d29965ba35f678aa146b34b7718e0 Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 18:05:33 -0600 Subject: [PATCH 07/11] [Regression test] add test case for no local routing architecture --- .../no_local_routing/config/task.conf | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 openfpga_flow/tasks/fpga_verilog/no_local_routing/config/task.conf diff --git a/openfpga_flow/tasks/fpga_verilog/no_local_routing/config/task.conf b/openfpga_flow/tasks/fpga_verilog/no_local_routing/config/task.conf new file mode 100644 index 000000000..c076b156c --- /dev/null +++ b/openfpga_flow/tasks/fpga_verilog/no_local_routing/config/task.conf @@ -0,0 +1,38 @@ +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = +# Configuration file for running experiments +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = +# timeout_each_job : FPGA Task script splits fpga flow into multiple jobs +# Each job execute fpga_flow script on combination of architecture & benchmark +# timeout_each_job is timeout for each job +# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = + +[GENERAL] +run_engine=openfpga_shell +power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml +power_analysis = true +spice_output=false +verilog_output=true +timeout_each_job = 20*60 +fpga_flow=vpr_blif + +[OpenFPGA_SHELL] +openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/OpenFPGAShellScripts/example_script.openfpga +openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k4_N4_no_local_routing_40nm_frame_openfpga.xml +openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml +external_fabric_key_file= + +[ARCHITECTURES] +arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml + +[BENCHMARKS] +bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.blif + +[SYNTHESIS_PARAM] +bench0_top = and2 +bench0_act = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.act +bench0_verilog = ${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.v +bench0_chan_width = 300 + +[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH] +end_flow_with_test= +vpr_fpga_verilog_formal_verification_top_netlist= From c22d8e242136d4b955b65e055a2d7e5f58560420 Mon Sep 17 00:00:00 2001 From: tangxifan Date: Wed, 16 Sep 2020 18:07:52 -0600 Subject: [PATCH 08/11] [Architecture] Bug fix in no local routing architecture --- .../vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml b/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml index 4605da01e..06499b328 100644 --- a/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml +++ b/openfpga_flow/vpr_arch/k4_N4_tileable_no_local_routing_40nm.xml @@ -265,10 +265,10 @@ - - - - + + + + - +