update tileable rr_graph generator to improve routability and also enable assoicated testing

This commit is contained in:
tangxifan 2019-06-27 17:52:25 -06:00
parent 15c536e9b4
commit 1332ba62e8
3 changed files with 14 additions and 6 deletions

View File

@ -150,7 +150,7 @@
<!-- ODIN II specific config ends -->
<!-- Physical descriptions begin -->
<layout auto="1.0" tileable_routing="off"/>
<layout auto="1.0" tileable_routing="on"/>
<spice_settings>
<parameters>
<options sim_temp="25" post="off" captab="off" fast="on"/>

View File

@ -1087,15 +1087,17 @@ void build_gsb_one_ipin_track2pin_map(const t_rr_graph* rr_graph,
(*track2ipin_map)[chan_side_index][track_index].push_back(ipin_index);
track_cnt += 2;
/* Stop when we have enough Fc */
/* Stop when we have enough Fc: this may lead to some tracks have zero drivers.
* So I comment it. And we just make sure its track_cnt >= actual_Fc
if (actual_Fc == track_cnt) {
break;
}
*/
}
/* Ensure the number of tracks is similar to Fc */
//printf("Fc_in=%d, track_cnt=%d\n", actual_Fc, track_cnt);
assert (actual_Fc == track_cnt);
assert (actual_Fc <= track_cnt);
}
return;
@ -1180,15 +1182,17 @@ void build_gsb_one_opin_pin2track_map(const t_rr_graph* rr_graph,
(*opin2track_map)[opin_side_index][opin_node_id].push_back(track_rr_node_index);
/* update track counter */
track_cnt++;
/* Stop when we have enough Fc */
/* Stop when we have enough Fc: this may lead to some tracks have zero drivers.
* So I comment it. And we just make sure its track_cnt >= actual_Fc
if (actual_Fc == track_cnt) {
break;
}
*/
}
/* Ensure the number of tracks is similar to Fc */
//printf("Fc_out=%lu, scaled_Fc_out=%d, track_cnt=%d, actual_track_cnt=%lu/%lu\n", Fc, actual_Fc, track_cnt, actual_track_list.size(), chan_width);
assert (actual_Fc == track_cnt);
assert (actual_Fc <= track_cnt);
}
return;
@ -1330,6 +1334,10 @@ t_pin2track_map build_gsb_opin_to_track_map(t_rr_graph* rr_graph,
/* update offset: aim to rotate starting tracks by 1*/
offset[side_manager.to_size_t()] += 1;
}
/* Check:
* 1. We want to ensure that each OPIN will drive at least one track
* 2. We want to ensure that each track will be driven by at least 1 OPIN */
}
return opin2track_map;

View File

@ -33,7 +33,7 @@ perl rewrite_path_in_file.pl -i $arch_xml_file -k $arch_ff_keyword $new_ff_path
cd -
# Run VPR
./vpr $arch_xml_file $blif_file --full_stats --nodisp --activity_file $act_file --fpga_verilog --fpga_verilog_dir $verilog_output_dirpath/$verilog_output_dirname --fpga_x2p_rename_illegal_port --fpga_bitstream_generator --fpga_verilog_print_top_testbench --fpga_verilog_print_input_blif_testbench --fpga_verilog_include_timing --fpga_verilog_include_signal_init --fpga_verilog_print_formal_verification_top_netlist --fpga_verilog_print_autocheck_top_testbench $verilog_reference --fpga_verilog_print_user_defined_template --route_chan_width $vpr_route_chan_width --fpga_verilog_include_icarus_simulator --fpga_verilog_print_report_timing_tcl --power --tech_properties $tech_file --fpga_verilog_print_sdc_pnr --fpga_verilog_print_sdc_analysis #--fpga_x2p_compact_routing_hierarchy
./vpr $arch_xml_file $blif_file --full_stats --nodisp --activity_file $act_file --fpga_verilog --fpga_verilog_dir $verilog_output_dirpath/$verilog_output_dirname --fpga_x2p_rename_illegal_port --fpga_bitstream_generator --fpga_verilog_print_top_testbench --fpga_verilog_print_input_blif_testbench --fpga_verilog_include_timing --fpga_verilog_include_signal_init --fpga_verilog_print_formal_verification_top_netlist --fpga_verilog_print_autocheck_top_testbench $verilog_reference --fpga_verilog_print_user_defined_template --route_chan_width $vpr_route_chan_width --fpga_verilog_include_icarus_simulator --fpga_verilog_print_report_timing_tcl --power --tech_properties $tech_file --fpga_verilog_print_sdc_pnr --fpga_verilog_print_sdc_analysis --fpga_x2p_compact_routing_hierarchy
cd $fpga_flow_scripts
perl rewrite_path_in_file.pl -i $ff_path -o $new_ff_path -k $ff_keyword $ff_include_path