add option reduce error to warning

This commit is contained in:
Lin 2024-10-31 10:47:26 +08:00
parent f4b087a3a7
commit 539e37118a
5 changed files with 23 additions and 13 deletions

View File

@ -461,6 +461,10 @@ pcf2place
Do not print time stamp in output files
.. option:: --reduce_error_to_warning
Reduce error to warning while reading commands in pcf file
.. option:: --verbose
Show verbose log

View File

@ -27,7 +27,8 @@ constexpr const char COMMENT = '#';
* Return 1 if there are serious errors when parsing data
* Return 2 if fail when opening files
*******************************************************************/
int read_pcf(const char* fname, PcfData& pcf_data) {
int read_pcf(const char* fname, PcfData& pcf_data,
bool reduce_error_to_warning = false) {
vtr::ScopedStartFinishTimer timer("Read " + std::string(fname));
/* Create a file handler */
@ -57,17 +58,16 @@ int read_pcf(const char* fname, PcfData& pcf_data) {
pcf_data.set_io_pin(io_id, pin_name);
} else if (word[0] == COMMENT) { // if it's a comment
break; // or ignore the full line comment and move on
} else if (word.find("set_clk") == 0 || word.find("set_reset") == 0) {
/* set_clk and set_rest are known commands for Arkangel, disable the
* error message for these two commands when call read_pcf function
*/
break;
} else {
/* Reach unknown command for OpenFpga, error out */
VTR_LOG_ERROR("Unknown command '%s'!\n", word.c_str());
num_err++;
break; // and move onto next line. without this, it will accept
// more following values on this line
if (reduce_error_to_warning) {
break;
} else {
/* Reach unknown command for OpenFpga, error out */
VTR_LOG_ERROR("Unknown command '%s'!\n", word.c_str());
num_err++;
break; // and move onto next line. without this, it will accept
// more following values on this line
}
}
}
}

View File

@ -16,7 +16,7 @@ namespace openfpga {
/* Parse a .pcf file through a stream, return an object which contains all the
* data */
int read_pcf(const char* fname, PcfData& pcf_data);
int read_pcf(const char* fname, PcfData& pcf_data, bool reduce_error_to_warning = false);
} /* End namespace openfpga*/

View File

@ -35,6 +35,8 @@ int pcf2place_wrapper_template(const Command& cmd,
CommandOptionId opt_no_time_stamp = cmd.option("no_time_stamp");
CommandOptionId opt_pin_table_dir_convention =
cmd.option("pin_table_direction_convention");
CommandOptionId opt_reduce_error_to_warning =
cmd.option("reduce_error_to_warning");
CommandOptionId opt_verbose = cmd.option("verbose");
std::string pcf_fname = cmd_context.option_value(cmd, opt_pcf);
@ -71,7 +73,7 @@ int pcf2place_wrapper_template(const Command& cmd,
/* Parse the input files */
openfpga::PcfData pcf_data;
openfpga::read_pcf(pcf_fname.c_str(), pcf_data);
openfpga::read_pcf(pcf_fname.c_str(), pcf_data,cmd_context.option_enable(cmd, opt_reduce_error_to_warning));
VTR_LOG("Read the design constraints from a pcf file: %s.\n",
pcf_fname.c_str());

View File

@ -599,6 +599,10 @@ ShellCommandId add_pcf2place_command_template(
shell_cmd.add_option("no_time_stamp", false,
"Do not print time stamp in output files");
/* Add an option '--reduce_error_to_warning' */
shell_cmd.add_option("reduce_error_to_warning", false,
"reduce error to warning while reading commands in pcf file");
/* Add an option '--verbose' */
shell_cmd.add_option("verbose", false, "Enable verbose output");