diff --git a/docs/source/conf.py b/docs/source/conf.py index 0553bbcbd..0b149ed69 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,7 +19,7 @@ import shlex import sphinx_rtd_theme -# Uncomment for local build +# Uncomment for local build #html_theme = "sphinx_rtd_theme" #html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] @@ -55,7 +55,8 @@ extensions = [ 'sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx.ext.graphviz', - 'sphinxcontrib.bibtex' + 'sphinxcontrib.bibtex', + 'sphinx.ext.autosectionlabel', ] # Add any paths that contain templates here, relative to this directory. @@ -89,7 +90,7 @@ pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = True -#Number figures for referencing +# Number figures for referencing numfig = True diff --git a/docs/source/run_fpga_flow.rst b/docs/source/run_fpga_flow.rst index 3a182f6d7..c73ebbdb9 100755 --- a/docs/source/run_fpga_flow.rst +++ b/docs/source/run_fpga_flow.rst @@ -114,7 +114,7 @@ General Arguments .. option:: --debug - To enable detail logs printing. + To enable detailed log printing. .. option:: --flow_config diff --git a/docs/source/run_fpga_task.rst b/docs/source/run_fpga_task.rst index c25527546..7e14c9d1f 100644 --- a/docs/source/run_fpga_task.rst +++ b/docs/source/run_fpga_task.rst @@ -4,17 +4,17 @@ OpenFPGA Task --------------- Tasks provide a framework for running the :ref:`run_fpga_flow` on -multiple benchmarks, architectures and set of OpenFPGA parameters. +multiple benchmarks, architectures, and set of OpenFPGA parameters. The structure of the framework is very similar to `VTR-Tasks `_ -implementation with additional functionality and minor file extention changes. +implementation with additional functionality and minor file extension changes. Task Directory ~~~~~~~~~~~~~~ -The tasks are store in a ``TASK_DIRECTORY``, which by default points to +The tasks are stored in a ``TASK_DIRECTORY``, which by default points to ``${OPENFPGA_PATH}/openfpga_flow/tasks``. Every directory or sub-directory in -task directory consisting of ``../config/task.conf`` file can be reffered as a +task directory consisting of ``../config/task.conf`` file can be referred to as a task. To create as task name called ``basic_flow`` following directory has to exist:: @@ -31,22 +31,55 @@ Running OpenFPGA Task: At a minimum ``open_fpga_flow.py`` requires following command-line arguments:: - open_fpga_flow.py ... + open_fpga_flow.py ... [] where: * ```` is the name of the task to run + * ```` Other command line arguments described below -Craeating A New OpenFPGA Task: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Create the folder ``${TASK_DIRECTORY}/`` and create a file called -``${TASK_DIRECTORY}//config/task.conf`` in it. +Command-line Options +~~~~~~~~~~~~~~~~~~~~ + +.. option:: --maxthreads + + This option defines the number of threads to run while executing task. + Each combination of architecture, benchmark and set of OpenFPGA Flow options + runs in a individual thread. + +.. option:: --skip_thread_logs + + Passsing this option skips printing logs from each OpenFPGA Flow script run. + +.. option:: --exit_on_fail + + Passsing this option exits the OpenFPGA task script with returncode 1, + if any threads fail to execute successfully. It is mainly used to while + performing regression test. + +.. option:: --test_run + + This option allows to debug OpenFPGA Task script + by skiping actual execution of OpenFPGA flow . + Passing this option prints the list of + commnad generated to execute using OpenFPGA flow. + +.. option:: --debug + + To enable detailed log printing. +Creating a new OpenFPGA Task +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Configuring a New Task -~~~~~~~~~~~~~~~~~~~~~~ +- Create the folder ``${TASK_DIRECTORY}/`` +- Create a file ``${TASK_DIRECTORY}//config/task.conf`` in it +- Configure the task as explained in :ref:`Configuring a new OpenFPGA Task` + + +Configuring a new OpenFPGA Task +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The task configuration file ``task.conf`` consists of ``GENERAL``, ``ARCHITECTURES``, ``BENCHMARKS``, ``SYNTHESIS_PARAM`` and @@ -54,16 +87,16 @@ The task configuration file ``task.conf`` consists of ``GENERAL``, Declaring all the above sections are mandatory. .. note:: - Configuration file supports all the OpenFPGA Variables refer - :ref:`openfpga-variables` section to know more. Variables in configuration - file is declares as ``${PATH:}`` + The configuration file supports all the OpenFPGA Variables refer + :ref:`openfpga-variables` section to know more. Variable in the configuration + file is declared as ``${PATH:}`` General Section ^^^^^^^^^^^^^^^ .. option:: fpga_flow== - Defines which OpenFPGA flow to run. By default ``yosys_vpr`` is executed. + This option defines which OpenFPGA flow to run. By default ``yosys_vpr`` is executed. .. option:: power_analysis= @@ -71,7 +104,7 @@ General Section .. option:: power_tech_file= - Declares which tech XML file to be used while perforing Power Analysis. + Declares which tech XML file to use while performing Power Analysis. .. option:: spice_output= @@ -85,14 +118,13 @@ General Section .. option:: timeout_each_job= - Specifies the the timeout for each :ref:`run_fpga_flow` execution. Default - is set to ``20 min`` + Specifies the timeout for each :ref:`run_fpga_flow` execution. Default is set to ``20 min. `` Architectures Sections ^^^^^^^^^^^^^^^^^^^^^^ - User can define the list of architecure files in this section. + User can define the list of architecture files in this section. .. option:: arch= @@ -102,7 +134,7 @@ Architectures Sections .. note:: - In final OpenFPGA Task result the architecture will be referred by its + In the final OpenFPGA Task result, the architecture will be referred by its ``arch_label``. Benchmarks Sections @@ -117,7 +149,7 @@ Benchmarks Sections architecture file For Example following code shows how to define a benchmarks, - with single file multiple files and files added from specific directory. + with a single file, multiple files and files added from a specific directory. .. code-block:: text @@ -133,17 +165,17 @@ Benchmarks Sections .. note:: ``bench_label`` is referred again in ``Synthesis_Param`` section to - provide addional information about benchmark + provide additional information about benchmark Synthesis Parameter Sections ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - User can define extra parameters for each benchmark defined in the + User can define extra parameters for each benchmark in the ``BENCHMARKS`` sections. .. option:: bench_top= - This defines the Top Level module name for ``bench_label`` benchmark. - By default, the top level module name is cosidereed as a ``top``. + This option defines the Top Level module name for ``bench_label`` benchmark. + By default, the top-level module name is considered as a ``top``. .. option:: bench_yosys_tmpl= @@ -163,13 +195,13 @@ Synthesis Parameter Sections .. option:: bench_verilog= In case of running ``blif_vpr_flow`` with verification this option provides - the source verilog design for ``bench_label`` benchmark to be used + the source Verilog design for ``bench_label`` benchmark to be used while verification. Script Parameter Sections ^^^^^^^^^^^^^^^^^^^^^^^^^ The script parameter section lists set of commnad line pararmeters to be passed to :ref:`run_fpga_flow` script. The section name is defines as ``SCRIPT_PARAM_`` where `parameter_set_label` can be any word without white spaces. -The section is referred with ``parameter_set_label`` in final result file. +The section is referred with ``parameter_set_label`` in the final result file. For example following code Specifies the two sets (``Fixed_Routing_30`` and ``Fixed_Routing_50``) of :ref:`run_fpga_flow` arguments. @@ -184,7 +216,7 @@ For example following code Specifies the two sets (``Fixed_Routing_30`` and ``Fi fix_route_chan_width=50 Example Task Configuration File -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: text [GENERAL] @@ -210,4 +242,3 @@ Example Task Configuration File [SCRIPT_PARAM_Slack_80] min_route_chan_width=1.8 - diff --git a/openfpga_flow/scripts/run_fpga_task.py b/openfpga_flow/scripts/run_fpga_task.py index 8125398b3..5b76d4208 100644 --- a/openfpga_flow/scripts/run_fpga_task.py +++ b/openfpga_flow/scripts/run_fpga_task.py @@ -55,7 +55,7 @@ parser.add_argument('--debug', action="store_true", help="Run script in debug mode") parser.add_argument('--exit_on_fail', action="store_true", help="Exit script with return code") -parser.add_argument('--skip_tread_logs', action="store_true", +parser.add_argument('--skip_thread_logs', action="store_true", help="Skips logs from running thread") args = parser.parse_args() @@ -364,7 +364,7 @@ def run_single_script(s, eachJob): stderr=subprocess.STDOUT, universal_newlines=True) for line in process.stdout: - if not args.skip_tread_logs: + if not args.skip_thread_logs: strip_child_logger_info(line[:-1]) sys.stdout.buffer.flush() output.write(line)