[test] added a new test to validate explicit port direction in pin table support

This commit is contained in:
tangxifan 2022-10-17 15:25:19 -07:00
parent b82ebf2f23
commit 609e096b1a
10 changed files with 116 additions and 33 deletions

View File

@ -1,5 +1,5 @@
# Convert .pcf to a .place file that VPR can accept
pcf2place --pcf ${OPENFPGA_PCF} --blif ${VPR_TESTBENCH_BLIF} --pin_table ${OPENFPGA_PIN_TABLE} --fpga_io_map ${OPENFPGA_IO_MAP_FILE} --fpga_fix_pins ${OPENFPGA_VPR_FIX_PINS_FILE}
pcf2place --pcf ${OPENFPGA_PCF} --blif ${VPR_TESTBENCH_BLIF} --pin_table ${OPENFPGA_PIN_TABLE} --fpga_io_map ${OPENFPGA_IO_MAP_FILE} --fpga_fix_pins ${OPENFPGA_VPR_FIX_PINS_FILE} --pin_table_direction_convention ${OPENFPGA_PIN_TABLE_DIRECTION_CONVENTION}
# Run VPR for the 'and' design
#--write_rr_graph example_rr_graph.xml

View File

@ -188,6 +188,7 @@ echo -e "Testing fix pins features";
run-task basic_tests/io_constraints/fix_pins $@
run-task basic_tests/io_constraints/example_pcf $@
run-task basic_tests/io_constraints/empty_pcf $@
run-task basic_tests/io_constraints/pcf_ql_style $@
echo -e "Testing project templates";
run-task template_tasks/vpr_blif_template $@

View File

@ -1,17 +1,17 @@
orientation,row,col,pin_num_in_cell,port_name,mapped_pin,GPIO_type,Associated Clock,Clock Edge
TOP,,,,gfpga_pad_IO_A2F[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_F2A[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_A2F[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_F2A[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_A2F[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_F2A[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_A2F[3],pad_fpga_io[3],,,
TOP,,,,gfpga_pad_IO_F2A[3],pad_fpga_io[3],,,
RIGHT,,,,gfpga_pad_IO_A2F[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_F2A[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_A2F[4],pad_fpga_io[5],,,
RIGHT,,,,gfpga_pad_IO_F2A[4],pad_fpga_io[5],,,
BOTTOM,,,,gfpga_pad_IO_A2F[6],pad_fpga_io[6],,,
BOTTOM,,,,gfpga_pad_IO_F2A[6],pad_fpga_io[6],,,
LEFT,,,,gfpga_pad_IO_F2A[7],pad_fpga_io[7],,,
LEFT,,,,gfpga_pad_IO_A2F[7],pad_fpga_io[7],,,
TOP,,,,gfpga_pad_IO_A2F[0],pad_fpga_io[0],in,,
TOP,,,,gfpga_pad_IO_F2A[0],pad_fpga_io[0],out,,
TOP,,,,gfpga_pad_IO_A2F[2],pad_fpga_io[1],in,,
TOP,,,,gfpga_pad_IO_F2A[2],pad_fpga_io[1],out,,
TOP,,,,gfpga_pad_IO_A2F[1],pad_fpga_io[2],in,,
TOP,,,,gfpga_pad_IO_F2A[1],pad_fpga_io[2],out,,
TOP,,,,gfpga_pad_IO_A2F[3],pad_fpga_io[3],in,,
TOP,,,,gfpga_pad_IO_F2A[3],pad_fpga_io[3],out,,
RIGHT,,,,gfpga_pad_IO_A2F[5],pad_fpga_io[4],in,,
RIGHT,,,,gfpga_pad_IO_F2A[5],pad_fpga_io[4],out,,
RIGHT,,,,gfpga_pad_IO_A2F[4],pad_fpga_io[5],in,,
RIGHT,,,,gfpga_pad_IO_F2A[4],pad_fpga_io[5],out,,
BOTTOM,,,,gfpga_pad_IO_A2F[6],pad_fpga_io[6],in,,
BOTTOM,,,,gfpga_pad_IO_F2A[6],pad_fpga_io[6],out,,
LEFT,,,,gfpga_pad_IO_F2A[7],pad_fpga_io[7],in,,
LEFT,,,,gfpga_pad_IO_A2F[7],pad_fpga_io[7],out,,

1 orientation row col pin_num_in_cell port_name mapped_pin GPIO_type Associated Clock Clock Edge
2 TOP gfpga_pad_IO_A2F[0] pad_fpga_io[0] in
3 TOP gfpga_pad_IO_F2A[0] pad_fpga_io[0] out
4 TOP gfpga_pad_IO_A2F[2] pad_fpga_io[1] in
5 TOP gfpga_pad_IO_F2A[2] pad_fpga_io[1] out
6 TOP gfpga_pad_IO_A2F[1] pad_fpga_io[2] in
7 TOP gfpga_pad_IO_F2A[1] pad_fpga_io[2] out
8 TOP gfpga_pad_IO_A2F[3] pad_fpga_io[3] in
9 TOP gfpga_pad_IO_F2A[3] pad_fpga_io[3] out
10 RIGHT gfpga_pad_IO_A2F[5] pad_fpga_io[4] in
11 RIGHT gfpga_pad_IO_F2A[5] pad_fpga_io[4] out
12 RIGHT gfpga_pad_IO_A2F[4] pad_fpga_io[5] in
13 RIGHT gfpga_pad_IO_F2A[4] pad_fpga_io[5] out
14 BOTTOM gfpga_pad_IO_A2F[6] pad_fpga_io[6] in
15 BOTTOM gfpga_pad_IO_F2A[6] pad_fpga_io[6] out
16 LEFT gfpga_pad_IO_F2A[7] pad_fpga_io[7] in
17 LEFT gfpga_pad_IO_A2F[7] pad_fpga_io[7] out

View File

@ -25,6 +25,7 @@ openfpga_pcf=${PATH:TASK_DIR}/config/and2.pcf
openfpga_io_map_file=${PATH:TASK_DIR}/config/fpga_io_location.xml
openfpga_pin_table=${PATH:TASK_DIR}/config/pinmap_k4_N4_tileable_40nm.csv
openfpga_vpr_fix_pins_file=and2_fix_pins.place
openfpga_pin_table_direction_convention=explicit
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_tileable_40nm.xml

View File

@ -1,17 +1,17 @@
orientation,row,col,pin_num_in_cell,port_name,mapped_pin,GPIO_type,Associated Clock,Clock Edge
TOP,,,,gfpga_pad_IO_A2F[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_F2A[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_A2F[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_F2A[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_A2F[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_F2A[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_A2F[3],pad_fpga_io[3],,,
TOP,,,,gfpga_pad_IO_F2A[3],pad_fpga_io[3],,,
RIGHT,,,,gfpga_pad_IO_A2F[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_F2A[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_A2F[4],pad_fpga_io[5],,,
RIGHT,,,,gfpga_pad_IO_F2A[4],pad_fpga_io[5],,,
BOTTOM,,,,gfpga_pad_IO_A2F[6],pad_fpga_io[6],,,
BOTTOM,,,,gfpga_pad_IO_F2A[6],pad_fpga_io[6],,,
LEFT,,,,gfpga_pad_IO_F2A[7],pad_fpga_io[7],,,
LEFT,,,,gfpga_pad_IO_A2F[7],pad_fpga_io[7],,,
TOP,,,,gfpga_pad_IO_A2F[0],pad_fpga_io[0],in,,
TOP,,,,gfpga_pad_IO_F2A[0],pad_fpga_io[0],out,,
TOP,,,,gfpga_pad_IO_A2F[2],pad_fpga_io[1],in,,
TOP,,,,gfpga_pad_IO_F2A[2],pad_fpga_io[1],out,,
TOP,,,,gfpga_pad_IO_A2F[1],pad_fpga_io[2],in,,
TOP,,,,gfpga_pad_IO_F2A[1],pad_fpga_io[2],out,,
TOP,,,,gfpga_pad_IO_A2F[3],pad_fpga_io[3],in,,
TOP,,,,gfpga_pad_IO_F2A[3],pad_fpga_io[3],out,,
RIGHT,,,,gfpga_pad_IO_A2F[5],pad_fpga_io[4],in,,
RIGHT,,,,gfpga_pad_IO_F2A[5],pad_fpga_io[4],out,,
RIGHT,,,,gfpga_pad_IO_A2F[4],pad_fpga_io[5],in,,
RIGHT,,,,gfpga_pad_IO_F2A[4],pad_fpga_io[5],out,,
BOTTOM,,,,gfpga_pad_IO_A2F[6],pad_fpga_io[6],in,,
BOTTOM,,,,gfpga_pad_IO_F2A[6],pad_fpga_io[6],out,,
LEFT,,,,gfpga_pad_IO_F2A[7],pad_fpga_io[7],in,,
LEFT,,,,gfpga_pad_IO_A2F[7],pad_fpga_io[7],out,,

1 orientation row col pin_num_in_cell port_name mapped_pin GPIO_type Associated Clock Clock Edge
2 TOP gfpga_pad_IO_A2F[0] pad_fpga_io[0] in
3 TOP gfpga_pad_IO_F2A[0] pad_fpga_io[0] out
4 TOP gfpga_pad_IO_A2F[2] pad_fpga_io[1] in
5 TOP gfpga_pad_IO_F2A[2] pad_fpga_io[1] out
6 TOP gfpga_pad_IO_A2F[1] pad_fpga_io[2] in
7 TOP gfpga_pad_IO_F2A[1] pad_fpga_io[2] out
8 TOP gfpga_pad_IO_A2F[3] pad_fpga_io[3] in
9 TOP gfpga_pad_IO_F2A[3] pad_fpga_io[3] out
10 RIGHT gfpga_pad_IO_A2F[5] pad_fpga_io[4] in
11 RIGHT gfpga_pad_IO_F2A[5] pad_fpga_io[4] out
12 RIGHT gfpga_pad_IO_A2F[4] pad_fpga_io[5] in
13 RIGHT gfpga_pad_IO_F2A[4] pad_fpga_io[5] out
14 BOTTOM gfpga_pad_IO_A2F[6] pad_fpga_io[6] in
15 BOTTOM gfpga_pad_IO_F2A[6] pad_fpga_io[6] out
16 LEFT gfpga_pad_IO_F2A[7] pad_fpga_io[7] in
17 LEFT gfpga_pad_IO_A2F[7] pad_fpga_io[7] out

View File

@ -25,6 +25,7 @@ openfpga_pcf=${PATH:TASK_DIR}/config/and2.pcf
openfpga_io_map_file=${PATH:TASK_DIR}/config/fpga_io_location.xml
openfpga_pin_table=${PATH:TASK_DIR}/config/pinmap_k4_N4_tileable_40nm.csv
openfpga_vpr_fix_pins_file=and2_fix_pins.place
openfpga_pin_table_direction_convention=explicit
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_tileable_40nm.xml

View File

@ -0,0 +1,3 @@
set_io a pad_fpga_io[0]
set_io b pad_fpga_io[4]
set_io c pad_fpga_io[6]

View File

@ -0,0 +1,18 @@
<io_coordinates>
<io pad="gfpga_pad_IO_A2F[0]" x="1" y="0" z="0"/>
<io pad="gfpga_pad_IO_F2A[0]" x="1" y="0" z="1"/>
<io pad="gfpga_pad_IO_A2F[1]" x="1" y="0" z="2"/>
<io pad="gfpga_pad_IO_F2A[1]" x="1" y="0" z="3"/>
<io pad="gfpga_pad_IO_A2F[2]" x="1" y="0" z="4"/>
<io pad="gfpga_pad_IO_F2A[2]" x="1" y="0" z="5"/>
<io pad="gfpga_pad_IO_A2F[3]" x="1" y="0" z="6"/>
<io pad="gfpga_pad_IO_F2A[3]" x="1" y="0" z="7"/>
<io pad="gfpga_pad_IO_A2F[4]" x="2" y="0" z="0"/>
<io pad="gfpga_pad_IO_F2A[4]" x="2" y="0" z="1"/>
<io pad="gfpga_pad_IO_A2F[5]" x="2" y="0" z="2"/>
<io pad="gfpga_pad_IO_F2A[5]" x="2" y="0" z="3"/>
<io pad="gfpga_pad_IO_A2F[6]" x="2" y="0" z="4"/>
<io pad="gfpga_pad_IO_F2A[6]" x="2" y="0" z="5"/>
<io pad="gfpga_pad_IO_A2F[7]" x="2" y="0" z="6"/>
<io pad="gfpga_pad_IO_F2A[7]" x="2" y="0" z="7"/>
</io_coordinates>

View File

@ -0,0 +1,17 @@
orientation,row,col,pin_num_in_cell,port_name,mapped_pin,GPIO_type,Associated Clock,Clock Edge
TOP,,,,gfpga_pad_IO_A2F[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_F2A[0],pad_fpga_io[0],,,
TOP,,,,gfpga_pad_IO_A2F[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_F2A[2],pad_fpga_io[1],,,
TOP,,,,gfpga_pad_IO_A2F[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_F2A[1],pad_fpga_io[2],,,
TOP,,,,gfpga_pad_IO_A2F[3],pad_fpga_io[3],,,
TOP,,,,gfpga_pad_IO_F2A[3],pad_fpga_io[3],,,
RIGHT,,,,gfpga_pad_IO_A2F[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_F2A[5],pad_fpga_io[4],,,
RIGHT,,,,gfpga_pad_IO_A2F[4],pad_fpga_io[5],,,
RIGHT,,,,gfpga_pad_IO_F2A[4],pad_fpga_io[5],,,
BOTTOM,,,,gfpga_pad_IO_A2F[6],pad_fpga_io[6],,,
BOTTOM,,,,gfpga_pad_IO_F2A[6],pad_fpga_io[6],,,
LEFT,,,,gfpga_pad_IO_F2A[7],pad_fpga_io[7],,,
LEFT,,,,gfpga_pad_IO_A2F[7],pad_fpga_io[7],,,
1 orientation row col pin_num_in_cell port_name mapped_pin GPIO_type Associated Clock Clock Edge
2 TOP gfpga_pad_IO_A2F[0] pad_fpga_io[0]
3 TOP gfpga_pad_IO_F2A[0] pad_fpga_io[0]
4 TOP gfpga_pad_IO_A2F[2] pad_fpga_io[1]
5 TOP gfpga_pad_IO_F2A[2] pad_fpga_io[1]
6 TOP gfpga_pad_IO_A2F[1] pad_fpga_io[2]
7 TOP gfpga_pad_IO_F2A[1] pad_fpga_io[2]
8 TOP gfpga_pad_IO_A2F[3] pad_fpga_io[3]
9 TOP gfpga_pad_IO_F2A[3] pad_fpga_io[3]
10 RIGHT gfpga_pad_IO_A2F[5] pad_fpga_io[4]
11 RIGHT gfpga_pad_IO_F2A[5] pad_fpga_io[4]
12 RIGHT gfpga_pad_IO_A2F[4] pad_fpga_io[5]
13 RIGHT gfpga_pad_IO_F2A[4] pad_fpga_io[5]
14 BOTTOM gfpga_pad_IO_A2F[6] pad_fpga_io[6]
15 BOTTOM gfpga_pad_IO_F2A[6] pad_fpga_io[6]
16 LEFT gfpga_pad_IO_F2A[7] pad_fpga_io[7]
17 LEFT gfpga_pad_IO_A2F[7] pad_fpga_io[7]

View File

@ -0,0 +1,42 @@
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
# 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=yosys_vpr
[OpenFPGA_SHELL]
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_shell_scripts/pin_constrain_example_script.openfpga
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k4_N4_40nm_cc_openfpga.xml
openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml
openfpga_vpr_device_layout=4x4
openfpga_vpr_route_chan_width=20
openfpga_pcf=${PATH:TASK_DIR}/config/and2.pcf
openfpga_io_map_file=${PATH:TASK_DIR}/config/fpga_io_location.xml
openfpga_pin_table=${PATH:TASK_DIR}/config/pinmap_k4_N4_tileable_40nm.csv
openfpga_vpr_fix_pins_file=and2_fix_pins.place
openfpga_pin_table_direction_convention=quicklogic
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k4_N4_tileable_40nm.xml
[BENCHMARKS]
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/and2/and2.v
[SYNTHESIS_PARAM]
bench_read_verilog_options_common = -nolatches
bench0_top = and2
[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH]
end_flow_with_test=
vpr_fpga_verilog_formal_verification_top_netlist=