| //===========================================================================// |
| // Purpose: PCCTS grammar for the options store file. |
| // |
| //===========================================================================// |
| |
| //---------------------------------------------------------------------------// |
| // Copyright (C) 2012-2013 Jeff Rudolph, Texas Instruments (jrudolph@ti.com) // |
| // // |
| // Permission is hereby granted, free of charge, to any person obtaining a // |
| // copy of this software and associated documentation files (the "Software"),// |
| // to deal in the Software without restriction, including without limitation // |
| // the rights to use, copy, modify, merge, publish, distribute, sublicense, // |
| // and/or sell copies of the Software, and to permit persons to whom the // |
| // Software is furnished to do so, subject to the following conditions: // |
| // // |
| // The above copyright notice and this permission notice shall be included // |
| // in all copies or substantial portions of the Software. // |
| // // |
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // |
| // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // |
| // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // |
| // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // |
| // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // |
| // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // |
| // USE OR OTHER DEALINGS IN THE SOFTWARE. // |
| //---------------------------------------------------------------------------// |
| |
| //===========================================================================// |
| #header |
| |
| << |
| #include <cstdio> |
| using namespace std; |
| |
| #include "stdpccts.h" |
| #include "GenericTokenBuffer.h" |
| |
| #include "TIO_PrintHandler.h" |
| |
| #include "TOS_OptionsStore.h" |
| |
| #include "TOP_OptionsFile.h" |
| #include "TOP_OptionsScanner_c.h" |
| >> |
| |
| //===========================================================================// |
| #lexclass QUOTED_VALUE |
| |
| #token CLOSE_QUOTE "\"" << mode( START ); >> |
| #token STRING "~[\"\n]+" |
| #token UNCLOSED_STRING "[\n]" |
| |
| //===========================================================================// |
| #lexclass START |
| |
| #token "[\ \t]+" << skip( ); >> |
| #token CPP_COMMENT "//~[\n]*[\n]" << skip( ); newline( ); >> |
| #token BLOCK_COMMENT "#~[\n]*[\n]" << skip( ); newline( ); >> |
| #token NEW_LINE "[\n]" << skip( ); newline( ); >> |
| #token END_OF_FILE "@" |
| #token OPEN_QUOTE "\"" << mode( QUOTED_VALUE ); >> |
| #token OPEN_BRACE "\{" |
| #token CLOSE_BRACE "\}" |
| #token EQUAL "=" |
| |
| #token INPUT_FILE_XML "[Ii][Nn][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Xx][Mm][Ll]" |
| #token INPUT_FILE_BLIF "[Ii][Nn][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Bb][Ll][Ii][Ff]" |
| #token INPUT_FILE_ARCH "[Ii][Nn][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Aa][Rr][Cc][Hh]{[Ii][Tt][Ee][Cc][Tt][Uu][Rr][Ee]}{[_][Dd][Ee][Ss][Cc][Rr][Ii][Pp][Tt][Ii][Oo][Nn]}{[_][Ff][Ii][Ll][Ee]}" |
| #token INPUT_FILE_FABRIC "[Ii][Nn][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Ff][Aa][Bb][Rr][Ii][Cc]" |
| #token INPUT_FILE_CIRCUIT "[Ii][Nn][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Cc][Ii][Rr][Cc][Uu][Ii][Tt]{[_][Dd][Ee][Ss][Cc][Rr][Ii][Pp][Tt][Ii][Oo][Nn]}{[_][Ff][Ii][Ll][Ee]}" |
| #token INPUT_ENABLE_XML "[Ii][Nn][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Xx][Mm][Ll]" |
| #token INPUT_ENABLE_BLIF "[Ii][Nn][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Bb][Ll][Ii][Ff]" |
| #token INPUT_ENABLE_ARCH "[Ii][Nn][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Aa][Rr][Cc][Hh]{[Ii][Tt][Ee][Cc][Tt][Uu][Rr][Ee]}{[_][Dd][Ee][Ss][Cc][Rr][Ii][Pp][Tt][Ii][Oo][Nn]}{[_][Ff][Ii][Ll][Ee]}" |
| #token INPUT_ENABLE_FABRIC "[Ii][Nn][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Ff][Aa][Bb][Rr][Ii][Cc]" |
| #token INPUT_ENABLE_CIRCUIT "[Ii][Nn][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Cc][Ii][Rr][Cc][Uu][Ii][Tt]" |
| |
| #token OUTPUT_FILE_LOG "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Ll][Oo][Gg]" |
| #token OUTPUT_FILE_OPTIONS "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Oo][Pp][Tt]{[Ii][Oo][Nn]}[Ss]" |
| #token OUTPUT_FILE_XML "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Xx][Mm][Ll]" |
| #token OUTPUT_FILE_BLIF "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Bb][Ll][Ii][Ff]" |
| #token OUTPUT_FILE_ARCH "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Aa][Rr][Cc][Hh]{[Ii][Tt][Ee][Cc][Tt][Uu][Rr][Ee]}{[_][Dd][Ee][Ss][Cc][Rr][Ii][Pp][Tt][Ii][Oo][Nn]}{[_][Ff][Ii][Ll][Ee]}" |
| #token OUTPUT_FILE_FABRIC "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Ff][Aa][Bb][Rr][Ii][Cc]" |
| #token OUTPUT_FILE_CIRCUIT "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Cc][Ii][Rr][Cc][Uu][Ii][Tt]" |
| #token OUTPUT_FILE_RC_DELAYS "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy][Ss]" |
| #token OUTPUT_FILE_LAFF "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ff][Ii][Ll][Ee][_][Ll][Aa][Ff][Ff]" |
| #token OUTPUT_EMAIL_METRICS "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Mm][Aa][Ii][Ll][_]([Aa][Dd][Dd][Rr][Ee][Ss][Ss]|[Mm][Ee][Tt][Rr][Ii][Cc][Ss])" |
| #token OUTPUT_ENABLE_LOG "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Ll][Oo][Gg]" |
| #token OUTPUT_ENABLE_OPTIONS "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Oo][Pp][Tt]{[Ii][Oo][Nn]}[Ss]" |
| #token OUTPUT_ENABLE_XML "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Xx][Mm][Ll]" |
| #token OUTPUT_ENABLE_BLIF "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Bb][Ll][Ii][Ff]" |
| #token OUTPUT_ENABLE_ARCH "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Aa][Rr][Cc][Hh]{[Ii][Tt][Ee][Cc][Tt][Uu][Rr][Ee]}{[_][Dd][Ee][Ss][Cc][Rr][Ii][Pp][Tt][Ii][Oo][Nn]}{[_][Ff][Ii][Ll][Ee]}" |
| #token OUTPUT_ENABLE_FABRIC "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Ff][Aa][Bb][Rr][Ii][Cc]" |
| #token OUTPUT_ENABLE_CIRCUIT "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Cc][Ii][Rr][Cc][Uu][Ii][Tt]" |
| #token OUTPUT_ENABLE_RC_DELAYS "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy][Ss]" |
| #token OUTPUT_ENABLE_LAFF "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ee][Nn][Aa][Bb][Ll][Ee][_][Ll][Aa][Ff][Ff]" |
| #token OUTPUT_LAFF_MODE "[Oo][Uu][Tt][Pp][Uu][Tt][_][Ll][Aa][Ff][Ff][_][Mm][Oo][Dd][Ee]" |
| #token OUTPUT_RC_DELAYS_MODE "[Oo][Uu][Tt][Pp][Uu][Tt][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}[_][Mm][Oo][Dd][Ee]" |
| #token OUTPUT_RC_DELAYS_SORT "[Oo][Uu][Tt][Pp][Uu][Tt][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}[_][Ss][Oo][Rr][Tt]" |
| #token OUTPUT_RC_DELAYS_NETS "[Oo][Uu][Tt][Pp][Uu][Tt][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}[_][Nn][Ee][Tt]{[Ss]}" |
| #token OUTPUT_RC_DELAYS_BLOCKS "[Oo][Uu][Tt][Pp][Uu][Tt][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}[_]([Bb][Ll][Oo][Cc][Kk]|[Cc][Ll][Bb]){[Ss]}" |
| #token OUTPUT_RC_DELAYS_LENGTH "[Oo][Uu][Tt][Pp][Uu][Tt][_]{[Rr][Cc][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}[_][Mm][Aa][Xx][_]{[Ww][Ii][Rr][Ee][_]}[Ll][Ee][Nn]{[Gg][Tt][Hh]}" |
| |
| #token FORMAT_MIN_GRID "[Ff][Oo][Rr][Mm][Aa][Tt][_][Mm][Ii][Nn][_][Gg][Rr][Ii][Dd]" |
| #token FORMAT_TIME_STAMPS "[Ff][Oo][Rr][Mm][Aa][Tt][_][Tt][Ii][Mm][Ee][_][Ss][Tt][Aa][Mm][Pp][Ss]" |
| #token FORMAT_FILE_LINES "[Ff][Oo][Rr][Mm][Aa][Tt][_][Ff][Ii][Ll][Ee][_][Ll][Ii][Nn][Ee]{[Ss]}" |
| #token DISPLAY_INFO_ACCEPT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ii][Nn][Ff][Oo]{[_][Aa][Cc][Cc][Ee][Pp][Tt]}" |
| #token DISPLAY_INFO_REJECT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ii][Nn][Ff][Oo][_][Rr][Ee][Jj][Ee][Cc][Tt]" |
| #token DISPLAY_WARNING_ACCEPT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ww][Aa][Rr][Nn][Ii][Nn][Gg]{[Ss]}{[_][Aa][Cc][Cc][Ee][Pp][Tt]}" |
| #token DISPLAY_WARNING_REJECT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ww][Aa][Rr][Nn][Ii][Nn][Gg]{[Ss]}[_][Rr][Ee][Jj][Ee][Cc][Tt]" |
| #token DISPLAY_ERROR_ACCEPT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ee][Rr][Rr][Oo][Rr]{[Ss]}{[_][Aa][Cc][Cc][Ee][Pp][Tt]}" |
| #token DISPLAY_ERROR_REJECT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Ee][Rr][Rr][Oo][Rr]{[Ss]}[_][Rr][Ee][Jj][Ee][Cc][Tt]" |
| #token DISPLAY_TRACE_ACCEPT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Tt][Rr][Aa][Cc][Ee]{[_][Aa][Cc][Cc][Ee][Pp][Tt]}" |
| #token DISPLAY_TRACE_REJECT "{[Dd][Ii][Ss][Pp][Ll][Aa][Yy][_]}[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Jj][Ee][Cc][Tt]" |
| |
| #token TRACE_READ_OPTIONS "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Oo][Pp][Tt]{[Ii][Oo][Nn]}[Ss]" |
| #token TRACE_READ_XML "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Xx][Mm][Ll]" |
| #token TRACE_READ_BLIF "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Bb][Ll][Ii][Ff]" |
| #token TRACE_READ_ARCH "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Aa][Rr][Cc][Hh]{[Ii][Tt][Ee][Cc][Tt][Uu][Rr][Ee]}" |
| #token TRACE_READ_FABRIC "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Ff][Aa][Bb][Rr][Ii][Cc]" |
| #token TRACE_READ_CIRCUIT "[Tt][Rr][Aa][Cc][Ee][_][Rr][Ee][Aa][Dd][_][Cc][Ii][Rr][Cc][Uu][Ii][Tt]" |
| |
| #token TRACE_VPR_SHOW_SETUP "[Tt][Rr][Aa][Cc][Ee][_][Vv][Pp][Rr][_][Ss][Hh][Oo][Ww][_][Ss][Ee][Tt][Uu][Pp]" |
| #token TRACE_VPR_ECHO_FILE "[Tt][Rr][Aa][Cc][Ee][_][Vv][Pp][Rr][_][Ee][Cc][Hh][Oo][_][Ff][Ii][Ll][Ee]{[Ss]}" |
| |
| #token HALT_MAX_WARNINGS "[Hh][Aa][Ll][Tt][_][Mm][Aa][Xx][_][Ww][Aa][Rr][Nn][Ii][Nn][Gg]{[Ss]}" |
| #token HALT_MAX_ERRORS "[Hh][Aa][Ll][Tt][_][Mm][Aa][Xx][_][Ee][Rr][Rr][Oo][Rr]{[Ss]}" |
| #token EXECUTE_MODE "[Ee][Xx][Ee][Cc][Uu][Tt][Ee]{[_][Mm][Oo][Dd][Ee]{[Ss]}}" |
| #token CLAY_RESYNC_VPR_NETS "[Cc][Ll][Aa][Yy][_][Rr][Ee][Ss][Yy][Nn][Cc][_]{[Vv][Pp][Rr][_]}[Nn][Ee][Tt]{[Ss]}" |
| #token CLAY_FREE_VPR_NETS "[Cc][Ll][Aa][Yy][_][Ff][Rr][Ee][Ee][_]{[Vv][Pp][Rr][_]}[Nn][Ee][Tt]{[Ss]}" |
| |
| #token FABRIC_BLOCK_ENABLE "[Ff][Aa][Bb][Rr][Ii][Cc][_]([Bb][Ll][Oo][Cc][Kk]|[Cc][Ll][Bb]){[Ss]}[_]{[Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee][_]}[Ee][Nn][Aa][Bb][Ll][Ee]" |
| #token FABRIC_CHANNEL_ENABLE "[Ff][Aa][Bb][Rr][Ii][Cc][_][Cc][Hh][Aa][Nn][Nn][Ee][Ll]{[Ss]}[_]{[Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee][_]}[Ee][Nn][Aa][Bb][Ll][Ee]" |
| #token FABRIC_SWITCHBOX_ENABLE "[Ff][Aa][Bb][Rr][Ii][Cc][_][Ss]{[Ww][Ii][Tt][Cc][Hh]}[Bb]{[Oo][Xx]{[Ee][Ss]}}[_]{[Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee][_]}[Ee][Nn][Aa][Bb][Ll][Ee]" |
| #token FABRIC_CONNECTIONBLOCK_ENABLE |
| "[Ff][Aa][Bb][Rr][Ii][Cc][_][Cc]{[Oo][Nn][Nn][Ee][Cc][Tt]{[Ii][Oo][Nn]}}[Bb]{[Ll][Oo][Cc][Kk]}{[Ss]}[_]{[Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee][_]}[Ee][Nn][Aa][Bb][Ll][Ee]" |
| |
| #token PACK_ALGORITHM "[Pp][Aa][Cc][Kk][_][Aa][Ll][Gg][Oo][Rr][Ii][Tt][Hh][Mm]" |
| #token PACK_CLUSTER_NETS "[Pp][Aa][Cc][Kk][_]{[Aa][Aa][Pp][Aa][Cc][Kk][_]}[Cc][Ll][Uu][Ss][Tt][Ee][Rr][_][Nn][Ee][Tt][Ss]" |
| #token PACK_AREA_WEIGHT "[Pp][Aa][Cc][Kk][_]{[Aa][Aa][Pp][Aa][Cc][Kk][_]}([Aa][Rr][Ee][Aa]|[Aa][Ll][Pp][Hh][Aa])[_][Ww][Ee][Ii][Gg][Hh][Tt]" |
| #token PACK_NETS_WEIGHT "[Pp][Aa][Cc][Kk][_]{[Aa][Aa][Pp][Aa][Cc][Kk][_]}([Nn][Ee][Tt][Ss]|[Bb][Ee][Tt][Aa])[_][Ww][Ee][Ii][Gg][Hh][Tt]" |
| #token PACK_AFFINITY_MODE "[Pp][Aa][Cc][Kk][_]{[Aa][Aa][Pp][Aa][Cc][Kk][_]}[Aa][Ff][Ff][Ii][Nn][Ii][Tt][Yy]" |
| #token PACK_BLOCK_SIZE "[Pp][Aa][Cc][Kk][_](([Bb][Ll][Oo][Cc][Kk]|[Cc][Ll][Bb])[_][Ss][Ii][Zz][Ee]|[N])" |
| #token PACK_LUT_SIZE "[Pp][Aa][Cc][Kk][_]([Ll][Uu][Tt][_][Ss][Ii][Zz][Ee]|[K])" |
| #token PACK_COST_MODE "[Pp][Aa][Cc][Kk][_][Cc][Oo][Ss][Tt][_][Mm][Oo][Dd][Ee]" |
| |
| #token PACK_POWER_ENABLE "[Pp][Aa][Cc][Kk][_][Pp][Oo][Ww][Ee][Rr][_][Ee][Nn][Aa][Bb][Ll][Ee]" |
| |
| #token PLACE_ALGORITHM "[Pp][Ll][Aa][Cc][Ee][_][Aa][Ll][Gg][Oo][Rr][Ii][Tt][Hh][Mm]" |
| #token PLACE_CHANNEL_WIDTH "[Pp][Ll][Aa][Cc][Ee][_][Cc][Hh][Aa][Nn][Nn][Ee][Ll][_][Ww][Ii][Dd][Tt][Hh]" |
| #token PLACE_RANDOM_SEED "[Pp][Ll][Aa][Cc][Ee][_][Rr][Aa][Nn][Dd][Oo][MM][_][Ss][Ee][Ee][Dd]" |
| #token PLACE_TEMP_INIT "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ii][Nn][Ii][Tt]" |
| #token PLACE_TEMP_INIT_FACTOR "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ii][Nn][Ii][Tt][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token PLACE_TEMP_INIT_EPSILON "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ii][Nn][Ii][Tt][_][Ee][Pp][Ss][Ii][Ll][Oo][Nn]" |
| #token PLACE_TEMP_EXIT "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ee][Xx][Ii][Tt]" |
| #token PLACE_TEMP_EXIT_FACTOR "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ee][Xx][Ii][Tt][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token PLACE_TEMP_EXIT_EPSILON "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Ee][Xx][Ii][Tt][_][Ee][Pp][Ss][Ii][Ll][Oo][Nn]" |
| #token PLACE_TEMP_REDUCE "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Rr][Ee][Dd][Uu][Cc][Ee]" |
| #token PLACE_TEMP_REDUCE_FACTOR "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_][Rr][Ee][Dd][Uu][Cc][Ee][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token PLACE_TEMP_INNER_NUM "[Pp][Ll][Aa][Cc][Ee][_]{[Tt][Ee][Mm][Pp]{[Ee][Rr][Aa][Tt][Uu][Rr][Ee]}[_]}[Ii][Nn][Nn][Ee][Rr][_][Nn][Uu][Mm]" |
| #token PLACE_SEARCH_LIMIT "[Pp][Ll][Aa][Cc][Ee][_][Ss][Ee][Aa][Rr][Cc][Hh][_][Ll][Ii][Mm][Ii][Tt]{[_][Aa][Ll][Pp][Hh][Aa]}" |
| #token PLACE_COST_MODE "[Pp][Ll][Aa][Cc][Ee][_][Cc][Oo][Ss][Tt][_][Mm][Oo][Dd][Ee]" |
| #token PLACE_TIMING_COST_FACTOR "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ii][Mm][Ii][Nn][Gg][_][Cc][Oo][Ss][Tt][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token PLACE_TIMING_UPDATE_INT "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ii][Mm][Ii][Nn][Gg][_][Uu][Pp][Dd][Aa][Tt][Ee][_][Ii][Nn][Tt]{[Ee][Rr][Vv][Aa][Ll]}" |
| #token PLACE_TIMING_UPDATE_COUNT "[Pp][Ll][Aa][Cc][Ee][_][Tt][Ii][Mm][Ii][Nn][Gg][_][Uu][Pp][Dd][Aa][Tt][Ee][_][Cc][Oo][Uu][Nn][Tt]" |
| #token PLACE_SLACK_INIT_WEIGHT "[Pp][Ll][Aa][Cc][Ee][_]{[Tt][Ii][Mm][Ii][Nn][Gg][_]}[Ss][Ll][Aa][Cc][Kk][_][Ii][Nn][Ii][Tt][_][Ww][Ee][Ii][Gg][Hh][Tt]" |
| #token PLACE_SLACK_FINAL_WEIGHT "[Pp][Ll][Aa][Cc][Ee][_]{[Tt][Ii][Mm][Ii][Nn][Gg][_]}[Ss][Ll][Aa][Cc][Kk][_][Ff][Ii][Nn][Aa][Ll][_][Ww][Ee][Ii][Gg][Hh][Tt]" |
| |
| #token PLACE_REGION_ENABLE "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Gg][Ii][Oo][Nn]{[Ss]}_[Ee][Nn][Aa][Bb][Ll][Ee]" |
| |
| #token PLACE_RELATIVE_ENABLE "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][_][Ee][Nn][Aa][Bb][Ll][Ee]" |
| #token PLACE_RELATIVE_ROTATE "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][_][Rr][Oo][Tt][Aa][Tt][Ee]{[_][Ee][Nn][Aa][Bb][Ll][Ee]}" |
| #token PLACE_RELATIVE_CARRY "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][_][Cc][Aa][Rr][Rr][Yy]{[_]}[Cc][Hh][Aa][Ii][Nn]{[Ss]}{[_][Ee][Nn][Aa][Bb][Ll][Ee]}" |
| #token PLACE_RELATIVE_INIT_PLACE "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][_][Ii][Nn][Ii][Tt]{[Ii][Aa][Ll]}[_][Pp][Ll][Aa][Cc][Ee]{[_][Rr][Ee][Tt][Rr][Yy]}" |
| #token PLACE_RELATIVE_INIT_MACRO "[Pp][Ll][Aa][Cc][Ee][_][Rr][Ee][Ll][Aa][Tt][Ii][Vv][Ee][_][Ii][Nn][Ii][Tt]{[Ii][Aa][Ll]}[_][Mm][Aa][Cc][Rr][Oo]{[_][Rr][Ee][Tt][Rr][Yy]}" |
| |
| #token PLACE_PREPLACED_ENABLE "[Pp][Ll][Aa][Cc][Ee][_][Pp][Rr][Ee]{[_]}[Pp][Ll][Aa][Cc][Ee]{[Dd]|[Ss]}[_][Ee][Nn][Aa][Bb][Ll][Ee]" |
| |
| #token ROUTE_ALGORITHM "[Rr][Oo][Uu][Tt][Ee][_][Aa][Ll][Gg][Oo][Rr][Ii][Tt][Hh][Mm]" |
| #token ROUTE_TYPE "[Rr][Oo][Uu][Tt][Ee][_][Tt][Yy][Pp][Ee]" |
| #token ROUTE_WINDOW_SIZE "[Rr][Oo][Uu][Tt][Ee][_][Ww][Ii][Nn][Dd][Oo][Ww][_][Ss][Ii][Zz][Ee]" |
| #token ROUTE_CHANNEL_WIDTH "[Rr][Oo][Uu][Tt][Ee][_][Cc][Hh][Aa][Nn][Nn][Ee][Ll][_][Ww][Ii][Dd][Tt][Hh]" |
| #token ROUTE_MAX_ITERATIONS "[Rr][Oo][Uu][Tt][Ee][_][Mm][Aa][Xx][_][Ii][Tt][Ee][Rr][Aa][Tt][Ii][Oo][Nn][Ss]" |
| #token ROUTE_CONG_HIST_FACTOR "[Rr][Oo][Uu][Tt][Ee][_][Cc][Oo][Nn][Gg]{[Ee][Ss][Tt][Ii][Oo][Nn]}[_][Hh][Ii][Ss][Tt]{[Oo][Rr][Ii][Cc][Aa][Ll]}[_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token ROUTE_CONG_INIT_FACTOR "[Rr][Oo][Uu][Tt][Ee][_][Cc][Oo][Nn][Gg]{[Ee][Ss][Tt][Ii][Oo][Nn]}[_][Ii][Nn][Ii][Tt][_][Ff][Aa][Cc][Tt][Oo][Rr]{[Ss]}" |
| #token ROUTE_CONG_PRESENT_FACTOR "[Rr][Oo][Uu][Tt][Ee][_][Cc][Oo][Nn][Gg]{[Ee][Ss][Tt][Ii][Oo][Nn]}[_][Pp][Rr][Ee][Ss][Ee][Nn][Tt][_]{[Gg][Rr][Oo][Ww][Tt][Hh][_]}[Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token ROUTE_BEND_COST_FACTOR "[Rr][Oo][Uu][Tt][Ee][_][Bb][Ee][Nn][Dd][_][Cc][Oo][Ss][Tt][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token ROUTE_RESOURCE_MODE "[Rr][Oo][Uu][Tt][Ee][_][Rr][Ee][Ss][Oo][Uu][Rr][Cc][Ee][_]{[Cc][Oo][Ss][Tt][_]}[Mm][Oo][Dd][Ee]" |
| #token ROUTE_COST_MODE "[Rr][Oo][Uu][Tt][Ee][_][Cc][Oo][Ss][Tt][_][Mm][Oo][Dd][Ee]" |
| #token ROUTE_TIMING_ASTAR_FACTOR "[Rr][Oo][Uu][Tt][Ee][_][Tt][Ii][Mm][Ii][Nn][Gg][_][Aa][Ss][Tt][Aa][Rr][_][Ff][Aa][Cc][Tt][Oo][Rr]" |
| #token ROUTE_TIMING_MAX_CRIT "[Rr][Oo][Uu][Tt][Ee][_][Tt][Ii][Mm][Ii][Nn][Gg][_][Mm][Aa][Xx][_][Cc][Rr][Ii][Tt]{[Ii][Cc][Aa][Ll][Ii][Tt][Yy]}" |
| #token ROUTE_TIMING_SLACK_CRIT "[Rr][Oo][Uu][Tt][Ee][_]{[Tt][Ii][Mm][Ii][Nn][Gg][_]}[Ss][Ll][Aa][Cc][Kk][_][Cc][Rr][Ii][Tt]{[Ii][Cc][Aa][Ll][Ii][Tt][Yy]}" |
| |
| #token ROUTE_TRIM_EMPTY_CHANNELS "[Rr][Oo][Uu][Tt][Ee][_][Tt][Rr][Ii][Mm][_][Ee][Mm][Pp][Tt][Yy][_][Cc][Hh][Aa][Nn][Nn][Ee][Ll]{[Ss]}" |
| #token ROUTE_TRIM_OBS_CHANNELS "[Rr][Oo][Uu][Tt][Ee][_][Tt][Rr][Ii][Mm][_][Oo][Bb][Ss][_][Cc][Hh][Aa][Nn][Nn][Ee][Ll]{[Ss]}" |
| #token ROUTE_PREROUTED_ENABLE "[Rr][Oo][Uu][Tt][Ee][_][Pp][Rr][Ee]{[_]}[Rr][Oo][Uu][Tt][Ee]{[Dd]|[Ss]}[_][Ee][Nn][Aa][Bb][Ll][Ee]" |
| #token ROUTE_PREROUTED_ORDER "[Rr][Oo][Uu][Tt][Ee][_][Pp][Rr][Ee]{[_]}[Rr][Oo][Uu][Tt][Ee]{[Dd]|[Ss]}[_][Oo][Rr][Dd][Ee][Rr]" |
| |
| #token NONE "[Nn][Oo][Nn][Ee]" |
| #token ANY "[Aa][Nn][Yy]" |
| #token ALL "[Aa][Ll][Ll]" |
| |
| #token FABRIC_VIEW "[Ff][Aa][Bb][Rr][Ii][Cc][_][Vv][Ii][Ee][Ww]" |
| #token BOUNDING_BOX "{[Bb][Oo][Uu][Nn][Dd][Ii][Nn][Gg][_]}[Bb][Oo][Xx]" |
| #token INTERNAL_GRID "{[Ii][Nn][Tt][Ee][Rr][Nn][Aa][Ll][_]}[Gg][Rr][Ii][Dd]" |
| |
| #token BLOCKS "[Bb][Ll][Oo][Cc][Kk]{[Ss]}" |
| #token IOS "[Ii][Oo]{[Ss]}" |
| |
| #token PACK "[Pp][Aa][Cc][Kk]" |
| #token PLACE "[Pp][Ll][Aa][Cc][Ee]" |
| #token ROUTE "[Rr][Oo][Uu][Tt][Ee]" |
| |
| #token ELMORE "[Ee][Ll][Mm][Oo][Rr][Ee]" |
| #token D2M "[Dd][2][Mm]" |
| |
| #token BY_NETS "{[Bb][Yy][_]}[Nn][Ee][Tt]{[Ss]}" |
| #token BY_DELAYS "{[Bb][Yy][_]}[Dd][Ee][Ll][Aa][Yy]{[Ss]}" |
| |
| #token AAPACK "[Aa][Aa][Pp][Aa][Cc][Kk]" |
| #token ANNEALING "{[Ss][Ii][Mm][Uu][Ll][Aa][Tt][Ee][Dd][_]}[Aa][Nn][Nn][Ee][Aa][Ll][Ii][Nn][Gg]" |
| #token PATHFINDER "[Pp][Aa][Tt][Hh][Ff][Ii][Nn][Dd][Ee][Rr]" |
| |
| #token GLOBAL "[Gg][Ll][Oo][Bb][Aa][Ll]" |
| #token DETAILED "[Dd][Ee][Tt][Aa][Ii][Ll][Ee][Dd]" |
| |
| #token MAX_INPUTS "[Mm][Aa][Xx][_][Ii][Nn][Pp][Uu][Tt][Ss]" |
| #token MIN_CONNECTIONS "[Mm][Ii][Nn][_][Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii][Oo][Nn][Ss]" |
| #token MAX_CONNECTIONS "[Mm][Aa][Xx][_][Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii][Oo][Nn][Ss]" |
| |
| #token ROUTABILITY_DRIVEN "[Rr][Oo][Uu][Tt][Aa][Bb][Ii][Ll][Ii][Tt][Yy]{[_][Dd][Rr][Ii][Vv][Ee][Nn]}" |
| #token TIMING_DRIVEN "[Tt][Ii][Mm][Ii][Nn][Gg]{[_][Dd][Rr][Ii][Vv][Ee][Nn]}" |
| #token PATH_TIMING_DRIVEN "[Pp][Aa][Tt][Hh][_][Tt][Ii][Mm][Ii][Nn][Gg]{[_][Dd][Rr][Ii][Vv][Ee][Nn]}" |
| #token NET_TIMING_DRIVEN "[Nn][Ee][Tt][_][Tt][Ii][Mm][Ii][Nn][Gg]{[_][Dd][Rr][Ii][Vv][Ee][Nn]}" |
| #token BREADTH_FIRST "[Bb][Rr][Ee][Aa][Dd][Tt][Hh][_][Ff][Ii][Rr][Ss][Tt]" |
| #token DEMAND_ONLY "[Dd][Ee][Mm][Aa][Nn][Dd][_][Oo][Nn][Ll][Yy]" |
| #token DELAY_NORMALIZED "[Dd][Ee][Ll][Aa][Yy][_][Nn][Oo][Rr][Mm][Aa][Ll][Ii][Zz][Ee][Dd]" |
| |
| #token FIRST "[Ff][Ii][Rr][Ss][Tt]" |
| #token AUTO "[Aa][Uu][Tt][Oo]" |
| |
| #token BOOL_TRUE "[Tt][Rr][Uu][Ee]" |
| #token BOOL_FALSE "[Ff][Aa][Ll][Ss][Ee]" |
| #token BOOL_YES "[Yy][Ee][Ss]" |
| #token BOOL_NO "[Nn][Oo]" |
| #token BOOL_ON "[Oo][Nn]" |
| #token BOOL_OFF "[Oo][Ff][Ff]" |
| |
| #token NEG_INT "[\-][0-9]+" |
| #token POS_INT "[0-9]+" |
| #token FLOAT "{\-}{[0-9]+}.[0-9]+" |
| #token CHAR "[a-zA-Z0-9_/\\\|\*\+\-]" |
| #token STRING "[a-zA-Z_/\|][a-zA-Z0-9_/\|\(\)\[\]\.\+\~]*" |
| |
| #tokclass OUTPUT_LAFF_VAL { NONE FABRIC_VIEW BOUNDING_BOX INTERNAL_GRID ANY ALL } |
| #tokclass EXECUTE_TOOL_VAL { NONE PACK PLACE ROUTE ANY ALL } |
| |
| #tokclass BOOL { BOOL_TRUE BOOL_FALSE BOOL_YES BOOL_NO BOOL_ON BOOL_OFF } |
| |
| //===========================================================================// |
| // Purpose : Class declaration |
| // Author : Jeff Rudolph |
| //---------------------------------------------------------------------------// |
| // Version history |
| // 05/01/12 jeffr : Original |
| //===========================================================================// |
| |
| class TOP_OptionsParser_c |
| { |
| << |
| public: |
| |
| void syn( ANTLRAbstractToken* /* pToken */, |
| ANTLRChar* pszGroup, |
| SetWordType* /* pWordType */, |
| ANTLRTokenType tokenType, |
| int /* k */ ); |
| |
| void SetScanner( TOP_OptionsScanner_c* pscanner ); |
| void SetFileName( const char* pszFileName ); |
| void SetOptionsFile( TOP_OptionsFile_c* poptionsFile ); |
| void SetOptionsStore( TOS_OptionsStore_c* poptionsStore ); |
| >> |
| << |
| private: |
| |
| int FindOutputLaffMask_( ANTLRTokenType tokenType ); |
| int FindExecuteToolMask_( ANTLRTokenType tokenType ); |
| |
| bool FindBool_( ANTLRTokenType tokenType ); |
| >> |
| << |
| private: |
| |
| TOP_OptionsScanner_c* pscanner_; |
| string srFileName_; |
| TOP_OptionsFile_c* poptionsFile_; |
| |
| TOS_InputOptions_c* pinputOptions_; |
| TOS_OutputOptions_c* poutputOptions_; |
| TOS_MessageOptions_c* pmessageOptions_; |
| TOS_ExecuteOptions_c* pexecuteOptions_; |
| TOS_FabricOptions_c* pfabricOptions_; |
| TOS_PackOptions_c* ppackOptions_; |
| TOS_PlaceOptions_c* pplaceOptions_; |
| TOS_RouteOptions_c* prouteOptions_; |
| |
| string srActiveCmd_; |
| >> |
| |
| //===========================================================================// |
| start |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| ( inputOptions |
| | outputOptions |
| | messageOptions |
| | executeOptions |
| | fabricOptions |
| | packOptions |
| | placeOptions |
| | routeOptions |
| )* END_OF_FILE |
| ; |
| |
| //===========================================================================// |
| inputOptions |
| : |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| INPUT_FILE_XML { EQUAL } stringText[ &pinputOptions_->srXmlFileName ] |
| << |
| pinputOptions_->xmlFileEnable = true; |
| >> |
| | INPUT_FILE_BLIF { EQUAL } stringText[ &pinputOptions_->srBlifFileName ] |
| << |
| pinputOptions_->blifFileEnable = true; |
| >> |
| | INPUT_FILE_ARCH { EQUAL } stringText[ &pinputOptions_->srArchitectureFileName ] |
| << |
| pinputOptions_->architectureFileEnable = true; |
| >> |
| | INPUT_FILE_FABRIC { EQUAL } stringText[ &pinputOptions_->srFabricFileName ] |
| << |
| pinputOptions_->fabricFileEnable = true; |
| >> |
| | INPUT_FILE_CIRCUIT { EQUAL } stringText[ &pinputOptions_->srCircuitFileName ] |
| << |
| pinputOptions_->circuitFileEnable = true; |
| >> |
| |
| | INPUT_ENABLE_XML { EQUAL } boolType[ &pinputOptions_->xmlFileEnable ] |
| | INPUT_ENABLE_BLIF { EQUAL } boolType[ &pinputOptions_->blifFileEnable ] |
| | INPUT_ENABLE_ARCH { EQUAL } boolType[ &pinputOptions_->architectureFileEnable ] |
| | INPUT_ENABLE_FABRIC { EQUAL } boolType[ &pinputOptions_->fabricFileEnable ] |
| | INPUT_ENABLE_CIRCUIT { EQUAL } boolType[ &pinputOptions_->circuitFileEnable ] |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| ; |
| |
| //===========================================================================// |
| outputOptions |
| : |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| OUTPUT_FILE_LOG { EQUAL } stringText[ &poutputOptions_->srLogFileName ] |
| | OUTPUT_FILE_OPTIONS { EQUAL } stringText[ &poutputOptions_->srOptionsFileName ] |
| | OUTPUT_FILE_XML { EQUAL } stringText[ &poutputOptions_->srXmlFileName ] |
| | OUTPUT_FILE_BLIF { EQUAL } stringText[ &poutputOptions_->srBlifFileName ] |
| | OUTPUT_FILE_ARCH { EQUAL } stringText[ &poutputOptions_->srArchitectureFileName ] |
| | OUTPUT_FILE_FABRIC { EQUAL } stringText[ &poutputOptions_->srFabricFileName ] |
| | OUTPUT_FILE_CIRCUIT { EQUAL } stringText[ &poutputOptions_->srCircuitFileName ] |
| | OUTPUT_FILE_RC_DELAYS { EQUAL } stringText[ &poutputOptions_->srRcDelaysFileName ] |
| | OUTPUT_FILE_LAFF { EQUAL } stringText[ &poutputOptions_->srLaffFileName ] |
| |
| | OUTPUT_EMAIL_METRICS { EQUAL } stringText[ &poutputOptions_->srMetricsEmailAddress ] |
| |
| | OUTPUT_ENABLE_LOG { EQUAL } boolType[ &poutputOptions_->logFileEnable ] |
| | OUTPUT_ENABLE_OPTIONS { EQUAL } boolType[ &poutputOptions_->optionsFileEnable ] |
| | OUTPUT_ENABLE_XML { EQUAL } boolType[ &poutputOptions_->xmlFileEnable ] |
| | OUTPUT_ENABLE_BLIF { EQUAL } boolType[ &poutputOptions_->blifFileEnable ] |
| | OUTPUT_ENABLE_ARCH { EQUAL } boolType[ &poutputOptions_->architectureFileEnable ] |
| | OUTPUT_ENABLE_FABRIC { EQUAL } boolType[ &poutputOptions_->fabricFileEnable ] |
| | OUTPUT_ENABLE_CIRCUIT { EQUAL } boolType[ &poutputOptions_->circuitFileEnable ] |
| | OUTPUT_ENABLE_RC_DELAYS { EQUAL } boolType[ &poutputOptions_->rcDelaysFileEnable ] |
| | OUTPUT_ENABLE_LAFF { EQUAL } boolType[ &poutputOptions_->laffFileEnable ] |
| |
| | OUTPUT_LAFF_MODE { EQUAL } outputLaffMask[ &poutputOptions_->laffMask ] |
| |
| | OUTPUT_RC_DELAYS_MODE { EQUAL } rcDelaysExtractMode[ &poutputOptions_->rcDelaysExtractMode ] |
| | OUTPUT_RC_DELAYS_SORT { EQUAL } rcDelaysSortMode[ &poutputOptions_->rcDelaysSortMode ] |
| | OUTPUT_RC_DELAYS_NETS { EQUAL } rcDelaysNameList[ &poutputOptions_->rcDelaysNetNameList ] |
| | OUTPUT_RC_DELAYS_BLOCKS { EQUAL } rcDelaysNameList[ &poutputOptions_->rcDelaysBlockNameList ] |
| | OUTPUT_RC_DELAYS_LENGTH { EQUAL } floatNum[ &poutputOptions_->rcDelaysMaxWireLength ] |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| ; |
| |
| //===========================================================================// |
| messageOptions |
| : |
| << |
| string srEchoName; |
| string srFileName; |
| |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| FORMAT_MIN_GRID { EQUAL } floatNum[ &pmessageOptions_->minGridPrecision ] |
| | FORMAT_TIME_STAMPS { EQUAL } boolType[ &pmessageOptions_->timeStampsEnable ] |
| | FORMAT_FILE_LINES { EQUAL } boolType[ &pmessageOptions_->fileLinesEnable ] |
| |
| | DISPLAY_INFO_ACCEPT { EQUAL } displayNameList[ &pmessageOptions_->info.acceptList ] |
| | DISPLAY_INFO_REJECT { EQUAL } displayNameList[ &pmessageOptions_->info.rejectList ] |
| | DISPLAY_WARNING_ACCEPT { EQUAL } displayNameList[ &pmessageOptions_->warning.acceptList ] |
| | DISPLAY_WARNING_REJECT { EQUAL } displayNameList[ &pmessageOptions_->warning.rejectList ] |
| | DISPLAY_ERROR_ACCEPT { EQUAL } displayNameList[ &pmessageOptions_->error.acceptList ] |
| | DISPLAY_ERROR_REJECT { EQUAL } displayNameList[ &pmessageOptions_->error.rejectList ] |
| | DISPLAY_TRACE_ACCEPT { EQUAL } displayNameList[ &pmessageOptions_->trace.acceptList ] |
| | DISPLAY_TRACE_REJECT { EQUAL } displayNameList[ &pmessageOptions_->trace.rejectList ] |
| |
| | TRACE_READ_OPTIONS { EQUAL } boolType[ &pmessageOptions_->trace.read.options ] |
| | TRACE_READ_XML { EQUAL } boolType[ &pmessageOptions_->trace.read.xml ] |
| | TRACE_READ_BLIF { EQUAL } boolType[ &pmessageOptions_->trace.read.blif ] |
| | TRACE_READ_ARCH { EQUAL } boolType[ &pmessageOptions_->trace.read.architecture ] |
| | TRACE_READ_FABRIC { EQUAL } boolType[ &pmessageOptions_->trace.read.fabric ] |
| | TRACE_READ_CIRCUIT { EQUAL } boolType[ &pmessageOptions_->trace.read.circuit ] |
| |
| | TRACE_VPR_SHOW_SETUP { EQUAL } boolType[ &pmessageOptions_->trace.vpr.showSetup ] |
| | TRACE_VPR_ECHO_FILE { EQUAL } |
| ( boolType[ &pmessageOptions_->trace.vpr.echoFile ] |
| | stringText[ &srEchoName ] { stringText[ &srFileName ] } |
| << |
| TC_NameFile_c echoFileName( srEchoName, srFileName ); |
| pmessageOptions_->trace.vpr.echoFileNameList.Add( echoFileName ); |
| >> |
| ) |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| ; |
| |
| //===========================================================================// |
| executeOptions |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| HALT_MAX_WARNINGS { EQUAL } ulongNum[ &pexecuteOptions_->maxWarningCount ] |
| | HALT_MAX_ERRORS { EQUAL } ulongNum[ &pexecuteOptions_->maxErrorCount ] |
| |
| | EXECUTE_MODE { EQUAL } executeToolMask[ &pexecuteOptions_->toolMask ] |
| | CLAY_RESYNC_VPR_NETS { EQUAL } boolType[ &pexecuteOptions_->tiClay.resyncNets ] |
| | CLAY_FREE_VPR_NETS { EQUAL } boolType[ &pexecuteOptions_->tiClay.freeNets ] |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| ; |
| |
| //===========================================================================// |
| fabricOptions |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| FABRIC_BLOCK_ENABLE { EQUAL } boolType[ &pfabricOptions_->blocks.override ] |
| | FABRIC_SWITCHBOX_ENABLE { EQUAL } boolType[ &pfabricOptions_->switchBoxes.override ] |
| | FABRIC_CONNECTIONBLOCK_ENABLE { EQUAL } boolType[ &pfabricOptions_->connectionBlocks.override ] |
| | FABRIC_CHANNEL_ENABLE { EQUAL } boolType[ &pfabricOptions_->channels.override ] |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| ; |
| |
| //===========================================================================// |
| packOptions |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| PACK_ALGORITHM { EQUAL } packAlgorithmMode[ &ppackOptions_->algorithmMode ] |
| |
| | PACK_CLUSTER_NETS { EQUAL } packClusterNetsMode[ &ppackOptions_->clusterNetsMode ] |
| | PACK_AREA_WEIGHT { EQUAL } floatNum[ &ppackOptions_->areaWeight ] |
| | PACK_NETS_WEIGHT { EQUAL } floatNum[ &ppackOptions_->netsWeight ] |
| | PACK_AFFINITY_MODE { EQUAL } packAffinityMode[ &ppackOptions_->affinityMode ] |
| | PACK_BLOCK_SIZE { EQUAL } uintNum[ &ppackOptions_->blockSize ] |
| | PACK_LUT_SIZE { EQUAL } uintNum[ &ppackOptions_->lutSize ] |
| |
| | PACK_COST_MODE { EQUAL } packCostMode[ &ppackOptions_->costMode ] |
| |
| | PACK_POWER_ENABLE { EQUAL } boolType[ &ppackOptions_->power.enable ] |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| ; |
| |
| //===========================================================================// |
| placeOptions |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| PLACE_ALGORITHM { EQUAL } placeAlgorithmMode[ &pplaceOptions_->algorithmMode ] |
| |
| | PLACE_CHANNEL_WIDTH { EQUAL } uintNum[ &pplaceOptions_->channelWidth ] |
| |
| | PLACE_RANDOM_SEED { EQUAL } uintNum[ &pplaceOptions_->randomSeed ] |
| | PLACE_TEMP_INIT { EQUAL } floatNum[ &pplaceOptions_->initTemp ] |
| | PLACE_TEMP_INIT_FACTOR { EQUAL } floatNum[ &pplaceOptions_->initTempFactor ] |
| | PLACE_TEMP_INIT_EPSILON { EQUAL } floatNum[ &pplaceOptions_->initTempEpsilon ] |
| | PLACE_TEMP_EXIT { EQUAL } floatNum[ &pplaceOptions_->exitTemp ] |
| | PLACE_TEMP_EXIT_FACTOR { EQUAL } floatNum[ &pplaceOptions_->exitTempFactor ] |
| | PLACE_TEMP_EXIT_EPSILON { EQUAL } floatNum[ &pplaceOptions_->exitTempEpsilon ] |
| | PLACE_TEMP_REDUCE { EQUAL } floatNum[ &pplaceOptions_->reduceTemp ] |
| | PLACE_TEMP_REDUCE_FACTOR { EQUAL } floatNum[ &pplaceOptions_->reduceTempFactor ] |
| | PLACE_TEMP_INNER_NUM { EQUAL } floatNum[ &pplaceOptions_->innerNum ] |
| | PLACE_SEARCH_LIMIT { EQUAL } floatNum[ &pplaceOptions_->searchLimit ] |
| |
| | PLACE_COST_MODE { EQUAL } placeCostMode[ &pplaceOptions_->costMode ] |
| |
| | PLACE_TIMING_COST_FACTOR { EQUAL } floatNum[ &pplaceOptions_->timingCostFactor ] |
| | PLACE_TIMING_UPDATE_INT { EQUAL } uintNum[ &pplaceOptions_->timingUpdateInt ] |
| | PLACE_TIMING_UPDATE_COUNT { EQUAL } uintNum[ &pplaceOptions_->timingUpdateCount ] |
| | PLACE_SLACK_INIT_WEIGHT { EQUAL } floatNum[ &pplaceOptions_->slackInitWeight ] |
| | PLACE_SLACK_FINAL_WEIGHT { EQUAL } floatNum[ &pplaceOptions_->slackFinalWeight ] |
| |
| | PLACE_REGION_ENABLE { EQUAL } boolType[ &pplaceOptions_->regionPlace.enable ] |
| |
| | PLACE_RELATIVE_ENABLE { EQUAL } boolType[ &pplaceOptions_->relativePlace.enable ] |
| | PLACE_RELATIVE_ROTATE { EQUAL } boolType[ &pplaceOptions_->relativePlace.rotateEnable ] |
| | PLACE_RELATIVE_CARRY { EQUAL } boolType[ &pplaceOptions_->relativePlace.carryChainEnable ] |
| | PLACE_RELATIVE_INIT_PLACE { EQUAL } uintNum[ &pplaceOptions_->relativePlace.maxPlaceRetryCt ] |
| | PLACE_RELATIVE_INIT_MACRO { EQUAL } uintNum[ &pplaceOptions_->relativePlace.maxMacroRetryCt ] |
| |
| | PLACE_PREPLACED_ENABLE { EQUAL } boolType[ &pplaceOptions_->prePlaced.enable ] |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| ; |
| |
| //===========================================================================// |
| routeOptions |
| : |
| << |
| this->srActiveCmd_ = ""; |
| >> |
| ROUTE_ALGORITHM { EQUAL } routeAlgorithmMode[ &prouteOptions_->algorithmMode ] |
| |
| | ROUTE_TYPE { EQUAL } routeAbstractMode[ &prouteOptions_->abstractMode ] |
| | ROUTE_WINDOW_SIZE { EQUAL } uintNum[ &prouteOptions_->windowSize ] |
| | ROUTE_CHANNEL_WIDTH { EQUAL } uintNum[ &prouteOptions_->channelWidth ] |
| | ROUTE_MAX_ITERATIONS { EQUAL } uintNum[ &prouteOptions_->maxIterations ] |
| |
| | ROUTE_CONG_HIST_FACTOR { EQUAL } floatNum[ &prouteOptions_->histCongestionFactor ] |
| | ROUTE_CONG_INIT_FACTOR { EQUAL } floatNum[ &prouteOptions_->initCongestionFactor ] |
| | ROUTE_CONG_PRESENT_FACTOR { EQUAL } floatNum[ &prouteOptions_->presentCongestionFactor ] |
| | ROUTE_BEND_COST_FACTOR { EQUAL } floatNum[ &prouteOptions_->bendCostFactor ] |
| |
| | ROUTE_RESOURCE_MODE { EQUAL } routeResourceMode[ &prouteOptions_->resourceMode ] |
| | ROUTE_COST_MODE { EQUAL } routeCostMode[ &prouteOptions_->costMode ] |
| |
| | ROUTE_TIMING_ASTAR_FACTOR { EQUAL } floatNum[ &prouteOptions_->timingAStarFactor ] |
| | ROUTE_TIMING_MAX_CRIT { EQUAL } floatNum[ &prouteOptions_->timingMaxCriticality ] |
| | ROUTE_TIMING_SLACK_CRIT { EQUAL } floatNum[ &prouteOptions_->slackCriticality ] |
| |
| | ROUTE_TRIM_EMPTY_CHANNELS { EQUAL } boolType[ &prouteOptions_->trimEmptyChannels ] |
| | ROUTE_TRIM_OBS_CHANNELS { EQUAL } boolType[ &prouteOptions_->trimObsChannels ] |
| | ROUTE_PREROUTED_ENABLE { EQUAL } boolType[ &prouteOptions_->preRouted.enable ] |
| | ROUTE_PREROUTED_ORDER { EQUAL } routeOrderMode[ &prouteOptions_->preRouted.orderMode ] |
| << |
| this->srActiveCmd_ = ( LT( 1 ) ? LT( 1 )->getText( ) : "" ); |
| >> |
| ; |
| |
| //===========================================================================// |
| outputLaffMask[ int* pmask ] |
| : |
| << |
| *pmask = TOS_OUTPUT_LAFF_NONE; |
| >> |
| OPEN_BRACE |
| ( maskListVal:OUTPUT_LAFF_VAL |
| << |
| *pmask |= this->FindOutputLaffMask_( maskListVal->getType( )); |
| >> |
| )+ |
| CLOSE_BRACE |
| | maskVal:OUTPUT_LAFF_VAL |
| << |
| *pmask = this->FindOutputLaffMask_( maskVal->getType( )); |
| >> |
| ; |
| |
| //===========================================================================// |
| rcDelaysExtractMode[ TOS_RcDelaysExtractMode_t* pmode ] |
| : |
| ELMORE |
| << |
| *pmode = TOS_RC_DELAYS_EXTRACT_ELMORE; |
| >> |
| | D2M |
| << |
| *pmode = TOS_RC_DELAYS_EXTRACT_D2M; |
| >> |
| ; |
| |
| //===========================================================================// |
| rcDelaysSortMode[ TOS_RcDelaysSortMode_t* pmode ] |
| : |
| BY_NETS |
| << |
| *pmode = TOS_RC_DELAYS_SORT_BY_NETS; |
| >> |
| | BY_DELAYS |
| << |
| *pmode = TOS_RC_DELAYS_SORT_BY_DELAYS; |
| >> |
| ; |
| |
| //===========================================================================// |
| rcDelaysNameList[ TOS_RcDelaysNameList_t* pnameList ] |
| : |
| << |
| string srString; |
| >> |
| OPEN_BRACE |
| ( stringText[ &srString ] |
| << |
| pnameList->Add( srString ); |
| >> |
| )* |
| CLOSE_BRACE |
| | << |
| string srString_; |
| >> |
| stringText[ &srString_ ] |
| << |
| pnameList->Add( srString_ ); |
| >> |
| ; |
| |
| //===========================================================================// |
| displayNameList[ TOS_DisplayNameList_t* pnameList ] |
| : |
| << |
| string srString; |
| >> |
| OPEN_BRACE |
| ( stringText[ &srString ] |
| << |
| TC_Name_c name( srString ); |
| pnameList->Add( name ); |
| >> |
| )* |
| CLOSE_BRACE |
| | << |
| string srString_; |
| >> |
| stringText[ &srString_ ] |
| << |
| TC_Name_c name( srString_ ); |
| pnameList->Add( name ); |
| >> |
| ; |
| |
| //===========================================================================// |
| executeToolMask[ int* pmask ] |
| : |
| << |
| *pmask = TOS_EXECUTE_TOOL_NONE; |
| >> |
| OPEN_BRACE |
| ( maskListVal:EXECUTE_TOOL_VAL |
| << |
| *pmask |= this->FindExecuteToolMask_( maskListVal->getType( )); |
| >> |
| )+ |
| CLOSE_BRACE |
| | maskVal:EXECUTE_TOOL_VAL |
| << |
| *pmask = this->FindExecuteToolMask_( maskVal->getType( )); |
| >> |
| ; |
| |
| //===========================================================================// |
| packAlgorithmMode[ TOS_PackAlgorithmMode_t* pmode ] |
| : |
| AAPACK |
| << |
| *pmode = TOS_PACK_ALGORITHM_AAPACK; |
| >> |
| ; |
| |
| //===========================================================================// |
| packClusterNetsMode[ TOS_PackClusterNetsMode_t* pmode ] |
| : |
| MIN_CONNECTIONS |
| << |
| *pmode = TOS_PACK_CLUSTER_NETS_MIN_CONNECTIONS; |
| >> |
| | MAX_CONNECTIONS |
| << |
| *pmode = TOS_PACK_CLUSTER_NETS_MAX_CONNECTIONS; |
| >> |
| ; |
| |
| //===========================================================================// |
| packAffinityMode[ TOS_PackAffinityMode_t* pmode ] |
| : |
| NONE |
| << |
| *pmode = TOS_PACK_AFFINITY_NONE; |
| >> |
| | ANY |
| << |
| *pmode = TOS_PACK_AFFINITY_ANY; |
| >> |
| ; |
| |
| //===========================================================================// |
| packCostMode[ TOS_PackCostMode_t* pmode ] |
| : |
| ROUTABILITY_DRIVEN |
| << |
| *pmode = TOS_PACK_COST_ROUTABILITY_DRIVEN; |
| >> |
| | TIMING_DRIVEN |
| << |
| *pmode = TOS_PACK_COST_TIMING_DRIVEN; |
| >> |
| ; |
| |
| //===========================================================================// |
| placeAlgorithmMode[ TOS_PlaceAlgorithmMode_t* pmode ] |
| : |
| ANNEALING |
| << |
| *pmode = TOS_PLACE_ALGORITHM_ANNEALING; |
| >> |
| ; |
| |
| //===========================================================================// |
| placeCostMode[ TOS_PlaceCostMode_t* pmode ] |
| : |
| ROUTABILITY_DRIVEN |
| << |
| *pmode = TOS_PLACE_COST_ROUTABILITY_DRIVEN; |
| >> |
| | TIMING_DRIVEN |
| << |
| *pmode = TOS_PLACE_COST_PATH_TIMING_DRIVEN; |
| >> |
| | PATH_TIMING_DRIVEN |
| << |
| *pmode = TOS_PLACE_COST_PATH_TIMING_DRIVEN; |
| >> |
| | NET_TIMING_DRIVEN |
| << |
| *pmode = TOS_PLACE_COST_NET_TIMING_DRIVEN; |
| >> |
| ; |
| |
| //===========================================================================// |
| routeAlgorithmMode[ TOS_RouteAlgorithmMode_t* pmode ] |
| : |
| PATHFINDER |
| << |
| *pmode = TOS_ROUTE_ALGORITHM_PATHFINDER; |
| >> |
| ; |
| |
| //===========================================================================// |
| routeAbstractMode[ TOS_RouteAbstractMode_t* pmode ] |
| : |
| GLOBAL |
| << |
| *pmode = TOS_ROUTE_ABSTRACT_GLOBAL; |
| >> |
| | DETAILED |
| << |
| *pmode = TOS_ROUTE_ABSTRACT_DETAILED; |
| >> |
| ; |
| |
| //===========================================================================// |
| routeResourceMode[ TOS_RouteResourceMode_t* pmode ] |
| : |
| DEMAND_ONLY |
| << |
| *pmode = TOS_ROUTE_RESOURCE_DEMAND_ONLY; |
| >> |
| | DELAY_NORMALIZED |
| << |
| *pmode = TOS_ROUTE_RESOURCE_DELAY_NORMALIZED; |
| >> |
| ; |
| |
| //===========================================================================// |
| routeCostMode[ TOS_RouteCostMode_t* pmode ] |
| : |
| BREADTH_FIRST |
| << |
| *pmode = TOS_ROUTE_COST_BREADTH_FIRST; |
| >> |
| | TIMING_DRIVEN |
| << |
| *pmode = TOS_ROUTE_COST_TIMING_DRIVEN; |
| >> |
| ; |
| |
| //===========================================================================// |
| routeOrderMode[ TOS_RouteOrderMode_t* pmode ] |
| : |
| FIRST |
| << |
| *pmode = TOS_ROUTE_ORDER_FIRST; |
| >> |
| | AUTO |
| << |
| *pmode = TOS_ROUTE_ORDER_AUTO; |
| >> |
| ; |
| |
| //===========================================================================// |
| name[ TC_Name_c& srName ] |
| : |
| << |
| srName = ""; |
| >> |
| OPEN_QUOTE |
| { qnameVal:STRING |
| << |
| srName = qnameVal->getText( ); |
| >> |
| } |
| CLOSE_QUOTE |
| | nameVal:STRING |
| << |
| srName = nameVal->getText( ); |
| >> |
| ; |
| |
| //===========================================================================// |
| stringText[ string* psrString ] |
| : |
| << |
| *psrString = ""; |
| >> |
| OPEN_QUOTE |
| { qstringVal:STRING |
| << |
| *psrString = qstringVal->getText( ); |
| >> |
| } |
| CLOSE_QUOTE |
| | stringVal:STRING |
| << |
| *psrString = stringVal->getText( ); |
| >> |
| ; |
| |
| //===========================================================================// |
| floatNum[ double* pdouble ] |
| : |
| fVal:FLOAT |
| << |
| *pdouble = atof( fVal->getText( )); |
| >> |
| | posIntVal:POS_INT |
| << |
| *pdouble = atof( posIntVal->getText( )); |
| >> |
| | negIntVal:NEG_INT |
| << |
| *pdouble = atof( negIntVal->getText( )); |
| >> |
| ; |
| |
| //===========================================================================// |
| intNum[ int* pint ] |
| : |
| posIntVal:POS_INT |
| << |
| *pint = atoi( posIntVal->getText( )); |
| >> |
| | negIntVal:NEG_INT |
| << |
| *pint = atoi( negIntVal->getText( )); |
| >> |
| ; |
| |
| //===========================================================================// |
| uintNum[ unsigned int* puint ] |
| : |
| uintVal:POS_INT |
| << |
| *puint = static_cast< unsigned int >( atol( uintVal->getText( ))); |
| >> |
| ; |
| |
| //===========================================================================// |
| ulongNum[ unsigned long* plong ] |
| : |
| ulongVal:POS_INT |
| << |
| *plong = atol( ulongVal->getText( )); |
| >> |
| | NEG_INT |
| << |
| *plong = ULONG_MAX; |
| >> |
| ; |
| |
| //===========================================================================// |
| boolType[ bool* pbool ] |
| : |
| boolVal:BOOL |
| << |
| *pbool = this->FindBool_( boolVal->getType( )); |
| >> |
| ; |
| |
| //===========================================================================// |
| |
| } |
| |
| << |
| #include "TOP_OptionsGrammar.h" |
| >> |