[test] add fully connected feedback connections to directlist

This commit is contained in:
tangxifan 2024-05-20 17:02:20 -07:00
parent 52ae484a7c
commit a9a5fbee34
3 changed files with 132 additions and 9 deletions

View File

@ -172,10 +172,73 @@
<segment name="L4" circuit_model_name="chan_segment"/>
</routing_segment>
<direct_connection>
<direct name="clb_feedback0_to_0" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_0" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_0" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_0" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I00" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I00" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I00" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I00" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I01" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I01" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I01" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I01" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I02" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I02" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I02" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I02" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I03" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I03" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I03" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I03" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I10" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I10" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I10" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I10" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I11" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I11" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I11" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I11" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I12" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I12" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I12" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I12" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I13" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I13" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I13" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I13" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I20" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I20" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I20" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I20" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I21" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I21" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I21" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I21" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I22" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I22" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I22" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I22" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I23" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I23" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I23" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I23" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I30" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I30" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I30" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I30" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I31" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I31" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I31" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I31" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I32" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I32" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I32" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I32" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback0_to_I33" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback1_to_I33" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback2_to_I33" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
<direct name="clb_feedback3_to_I33" circuit_model_name="mux_tree_tapbuf" type="part_of_cb"/>
</direct_connection>
<pb_type_annotations>
<!-- physical pb_type binding in complex block IO -->

View File

@ -22,7 +22,7 @@ openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulatio
openfpga_vpr_device_layout=2x2
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_ecb_tileable_TileOrgzTl_40nm.xml
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_ecb_tileable_TileOrgzTr_40nm.xml
[BENCHMARKS]
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.blif

View File

@ -155,10 +155,70 @@
</segment>
</segmentlist>
<directlist>
<direct name="clb_feedback0_to_0" from_pin="clb.O[0:0]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_0" from_pin="clb.O[1:1]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_0" from_pin="clb.O[2:2]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_0" from_pin="clb.O[3:3]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I00" from_pin="clb.O[0:0]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I00" from_pin="clb.O[1:1]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I00" from_pin="clb.O[2:2]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I00" from_pin="clb.O[3:3]" to_pin="clb.I0[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I01" from_pin="clb.O[0:0]" to_pin="clb.I0[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I01" from_pin="clb.O[1:1]" to_pin="clb.I0[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I01" from_pin="clb.O[2:2]" to_pin="clb.I0[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I01" from_pin="clb.O[3:3]" to_pin="clb.I0[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I02" from_pin="clb.O[0:0]" to_pin="clb.I0[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I02" from_pin="clb.O[1:1]" to_pin="clb.I0[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I02" from_pin="clb.O[2:2]" to_pin="clb.I0[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I02" from_pin="clb.O[3:3]" to_pin="clb.I0[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I03" from_pin="clb.O[0:0]" to_pin="clb.I0[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I03" from_pin="clb.O[1:1]" to_pin="clb.I0[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I03" from_pin="clb.O[2:2]" to_pin="clb.I0[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I03" from_pin="clb.O[3:3]" to_pin="clb.I0[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I10" from_pin="clb.O[0:0]" to_pin="clb.I1[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I10" from_pin="clb.O[1:1]" to_pin="clb.I1[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I10" from_pin="clb.O[2:2]" to_pin="clb.I1[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I10" from_pin="clb.O[3:3]" to_pin="clb.I1[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I11" from_pin="clb.O[0:0]" to_pin="clb.I1[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I11" from_pin="clb.O[1:1]" to_pin="clb.I1[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I11" from_pin="clb.O[2:2]" to_pin="clb.I1[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I11" from_pin="clb.O[3:3]" to_pin="clb.I1[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I12" from_pin="clb.O[0:0]" to_pin="clb.I1[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I12" from_pin="clb.O[1:1]" to_pin="clb.I1[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I12" from_pin="clb.O[2:2]" to_pin="clb.I1[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I12" from_pin="clb.O[3:3]" to_pin="clb.I1[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I13" from_pin="clb.O[0:0]" to_pin="clb.I1[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I13" from_pin="clb.O[1:1]" to_pin="clb.I1[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I13" from_pin="clb.O[2:2]" to_pin="clb.I1[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I13" from_pin="clb.O[3:3]" to_pin="clb.I1[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I20" from_pin="clb.O[0:0]" to_pin="clb.I2[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I20" from_pin="clb.O[1:1]" to_pin="clb.I2[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I20" from_pin="clb.O[2:2]" to_pin="clb.I2[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I20" from_pin="clb.O[3:3]" to_pin="clb.I2[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I21" from_pin="clb.O[0:0]" to_pin="clb.I2[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I21" from_pin="clb.O[1:1]" to_pin="clb.I2[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I21" from_pin="clb.O[2:2]" to_pin="clb.I2[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I21" from_pin="clb.O[3:3]" to_pin="clb.I2[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I22" from_pin="clb.O[0:0]" to_pin="clb.I2[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I22" from_pin="clb.O[1:1]" to_pin="clb.I2[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I22" from_pin="clb.O[2:2]" to_pin="clb.I2[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I22" from_pin="clb.O[3:3]" to_pin="clb.I2[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I23" from_pin="clb.O[0:0]" to_pin="clb.I2[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I23" from_pin="clb.O[1:1]" to_pin="clb.I2[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I23" from_pin="clb.O[2:2]" to_pin="clb.I2[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I23" from_pin="clb.O[3:3]" to_pin="clb.I2[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I30" from_pin="clb.O[0:0]" to_pin="clb.I3[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I30" from_pin="clb.O[1:1]" to_pin="clb.I3[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I30" from_pin="clb.O[2:2]" to_pin="clb.I3[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I30" from_pin="clb.O[3:3]" to_pin="clb.I3[0:0]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I31" from_pin="clb.O[0:0]" to_pin="clb.I3[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I31" from_pin="clb.O[1:1]" to_pin="clb.I3[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I31" from_pin="clb.O[2:2]" to_pin="clb.I3[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I31" from_pin="clb.O[3:3]" to_pin="clb.I3[1:1]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I32" from_pin="clb.O[0:0]" to_pin="clb.I3[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I32" from_pin="clb.O[1:1]" to_pin="clb.I3[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I32" from_pin="clb.O[2:2]" to_pin="clb.I3[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I32" from_pin="clb.O[3:3]" to_pin="clb.I3[2:2]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback0_to_I33" from_pin="clb.O[0:0]" to_pin="clb.I3[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback1_to_I33" from_pin="clb.O[1:1]" to_pin="clb.I3[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback2_to_I33" from_pin="clb.O[2:2]" to_pin="clb.I3[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
<direct name="clb_feedback3_to_I33" from_pin="clb.O[3:3]" to_pin="clb.I3[3:3]" x_offset="0" y_offset="0" z_offset="0" switch_name="ipin_cblock"/>
</directlist>
<complexblocklist>
<!-- Define I/O pads begin -->