{"id":916,"date":"2020-01-17T14:55:03","date_gmt":"2020-01-17T14:55:03","guid":{"rendered":"http:\/\/panda.dei.polimi.it\/?page_id=916"},"modified":"2023-06-12T09:46:03","modified_gmt":"2023-06-12T09:46:03","slug":"bambu-options","status":"publish","type":"page","link":"https:\/\/panda.deib.polimi.it\/?page_id=916","title":{"rendered":"Bambu: options"},"content":{"rendered":"<pre>********************************************************************************\r\n                    ____                  _\r\n                   | __ )  __ _ _ __ ___ | |_   _   _\r\n                   |  _ \\ \/ _` | '_ ` _ \\| '_ \\| | | |\r\n                   | |_) | (_| | | | | | | |_) | |_| |\r\n                   |____\/ \\__,_|_| |_| |_|_.__\/ \\__,_|\r\n\r\n********************************************************************************\r\n                         High-Level Synthesis Tool\r\n\r\n                         Politecnico di Milano - DEIB\r\n                          System Architectures Group\r\n********************************************************************************\r\n                Copyright (C) 2004-2023 Politecnico di Milano\r\nVersion: PandA 2023.2 - Revision f85c88253197170bbe1811b06a51692a9b10f60c-dev\/panda\r\n\r\nUsage:\r\n       bambu [Options] &lt;source_file&gt; [&lt;constraints_file&gt;] [&lt;technology_file&gt;]\r\n\r\nOptions:\r\n\r\n  General options:\r\n\r\n    --help, -h\r\n        Display this usage information.\r\n\r\n    --version, -V\r\n        Display the version of the program.\r\n\r\n    --seed=&lt;number&gt;\r\n        Set the seed of the random number generator (default=0).\r\n\r\n    --read-parameters-XML=&lt;xml_file_name&gt;\r\n        Read command line options from a XML file.\r\n\r\n    --write-parameters-XML=&lt;xml_file_name&gt;\r\n        Dump the parsed command line options into a XML file.\r\n\r\n\r\n  Output options:\r\n\r\n    --verbosity, -v &lt;level&gt;\r\n        Set the output verbosity level\r\n        Possible values for &lt;level&gt;:\r\n            0 - NONE\r\n            1 - MINIMUM\r\n            2 - VERBOSE\r\n            3 - PEDANTIC\r\n            4 - VERY PEDANTIC\r\n        (default = 1)\r\n\r\n    --debug, -d &lt;level&gt;\r\n        Set the verbosity level of debugging information\r\n        Possible values for &lt;level&gt;:\r\n            0 - NONE\r\n            1 - MINIMUM\r\n            2 - VERBOSE\r\n            3 - PEDANTIC\r\n            4 - VERY PEDANTIC\r\n        (default = 1).\r\n\r\n    --debug-classes=&lt;classes_list&gt;\r\n        Set maximum debug level for classes in &lt;classes_list&gt;\r\n\r\n    --max-transformations=&lt;number&gt;\r\n        Set a maximum number of transformations.\r\n\r\n        To reduce the disk usage two PandA parameter could be used:\r\n          --panda-parameter=print-tree-manager=1\r\n          --panda-parameter=print-dot-FF=1\r\n\r\n    --find-max-transformations\r\n        Find the maximum number of transformations raising an exception.\r\n\r\n    --no-clean\r\n        Do not remove temporary files.\r\n\r\n    --benchmark-name=&lt;name&gt;\r\n        Set the name of the current benchmark for data collection.\r\n        Mainly useful for data collection from extensive regression tests.\r\n\r\n    --configuration-name=&lt;name&gt;\r\n        Set the name of the current tool configuration for data collection.\r\n        Mainly useful for data collection from extensive regression tests.\r\n\r\n    --benchmark-fake-parameters\r\n        Set the parameters string for data collection. The parameters in the\r\n        string are not actually used, but they are used for data collection in\r\n        extensive regression tests.\r\n\r\n    --output-temporary-directory=&lt;path&gt;\r\n        Set the directory where temporary files are saved.\r\n        Default is 'panda-temp'\r\n\r\n    --print-dot\r\n        Dump to file several different graphs used in the IR of the tool.\r\n        The graphs are saved in .dot files, in graphviz format\r\n\r\n    --error-on-warning\r\n        Convert all runtime warnings to errors.\r\n\r\n    --pretty-print=&lt;file&gt;\r\n        C-based pretty print of the internal IRx\r\n\r\n    --writer,-w&lt;language&gt;\r\n        Output RTL language:\r\n            V - Verilog (default)\r\n            H - VHDL\r\n\r\n    --no-mixed-design\r\n        Avoid mixed output RTL language designs.\r\n\r\n    --generate-tb=&lt;file&gt;\r\n        Generate testbench for the input values defined in the specified XML\r\n        file.\r\n\r\n    --top-fname=&lt;fun_name&gt;\r\n        Define the top function to be synthesized. (default=main)\r\n\r\n    --top-rtldesign-name=&lt;top_name&gt;\r\n        Define the top module name for the RTL backend.\r\n\r\n    --inline-fname=&lt;fun_name&gt;[,&lt;fun_name&gt;]*\r\n        Define functions to be always inlined.\r\n        Automatic inlining is always performed using internal metrics.\r\n        Maximum cost to allow function inlining is defined through\r\n        --panda-parameter=inline-max-cost=&lt;value&gt;. (default=60)\r\n\r\n    --file-input-data=&lt;file_list&gt;\r\n        A comma-separated list of input files used by the C specification.\r\n\r\n    --C-no-parse=&lt;file&gt;\r\n        Specify a comma-separated list of C files used only during the\r\n        co-simulation phase.\r\n\r\n\r\n  GCC\/CLANG front-end compiler options:\r\n\r\n    --compiler=&lt;compiler_version&gt;\r\n        Specify which compiler is used.\r\n        Possible values for &lt;compiler_version&gt; are:\r\n            I386_GCC47\r\n            I386_GCC48\r\n            I386_GCC49\r\n            I386_GCC5\r\n            I386_GCC6\r\n            I386_GCC8\r\n            I386_CLANG4\r\n            I386_CLANG6\r\n            I386_CLANG7\r\n            I386_CLANG8\r\n            I386_CLANG11\r\n            I386_CLANG12\r\n            I386_CLANG13\r\n\r\n    -O&lt;level&gt;\r\n        Enable a specific optimization level. Possible values are the usual\r\n        optimization flags accepted by compilers, plus some others:\r\n        -O0,-O1,-O2,-O3,-Os,-O4,-O5.\r\n\r\n    -f&lt;option&gt;\r\n        Enable or disable a GCC\/CLANG optimization option. All the -f or -fno options\r\n        are supported. In particular, -ftree-vectorize option triggers the\r\n        high-level synthesis of vectorized operations.\r\n\r\n    -I&lt;path&gt;\r\n        Specify a path where headers are searched for.\r\n\r\n    -W&lt;warning&gt;\r\n        Specify a warning option passed to GCC\/CLANG. All the -W options available in\r\n        GCC\/CLANG are supported.\r\n\r\n    -E\r\n        Enable preprocessing mode of GCC\/CLANG.\r\n\r\n    --std=&lt;standard&gt;\r\n        Assume that the input sources are for &lt;standard&gt;. All\r\n        the --std options available in GCC\/CLANG are supported.\r\n        The default value is gnu90\/gnu11 for C and gnu++98\/gnu++14 for C++ \r\n        depending on the selected frontend compiler support.\r\n\r\n    -D&lt;name&gt;\r\n        Predefine name as a macro, with definition 1.\r\n\r\n    -D&lt;name=definition&gt;\r\n        Tokenize &lt;definition&gt; and process as if it appeared as a #define directive.\r\n\r\n    -U&lt;name&gt;\r\n        Remove existing definition for macro &lt;name&gt;.\r\n\r\n    --param &lt;name&gt;=&lt;value&gt;\r\n        Set the amount &lt;value&gt; for the GCC\/CLANG parameter &lt;name&gt; that could be used for\r\n        some optimizations.\r\n\r\n    -l&lt;library&gt;\r\n        Search the library named &lt;library&gt; when linking.\r\n\r\n    -L&lt;dir&gt;\r\n        Add directory &lt;dir&gt; to the list of directories to be searched for -l.\r\n\r\n    --use-raw\r\n        Specify that input file is already a raw file and not a source file.\r\n\r\n    -m&lt;machine-option&gt;\r\n        Specify machine dependend options (currently not used).\r\n\r\n    --read-GCC-XML=&lt;xml_file_name&gt;\r\n        Read GCC options from a XML file.\r\n\r\n    --write-GCC-XML=&lt;xml_file_name&gt;\r\n        Dump the parsed GCC\/CLANG compiler options into a XML file.\r\n\r\n    --Include-sysdir\r\n        Return the system include directory used by the wrapped GCC\/CLANG compiler.\r\n\r\n    --gcc-config\r\n        Return the GCC\/CLANG configuration.\r\n\r\n    --compute-sizeof\r\n        Replace sizeof with the computed valued for the considered target\r\n        architecture.\r\n\r\n    --extra-gcc-options\r\n        Specify custom extra options to the compiler.\r\n\r\n\r\n  Target:\r\n\r\n    --target-file=file, -b&lt;file&gt;\r\n        Specify an XML description of the target device.\r\n\r\n    --generate-interface=&lt;type&gt;\r\n        Wrap the top level module with an external interface.\r\n        Possible values for &lt;type&gt; and related interfaces:\r\n            MINIMAL  -  minimal interface (default)\r\n            INFER    -  top function is built with an hardware interface inferred from\r\n                        the pragmas or from the top function signature\r\n            WB4      -  WishBone 4 interface\r\n\r\n    --interface-xml-filename=&lt;filename&gt;\r\n        User defined interface file.\r\n\r\n\r\n  Scheduling:\r\n\r\n    --parametric-list-based[=&lt;type&gt;]\r\n        Perform priority list-based scheduling. This is the default scheduling algorithm\r\n        in bambu. The optional &lt;type&gt; argument can be used to set options for\r\n        list-based scheduling as follows:\r\n            0 - Dynamic mobility (default)\r\n            1 - Static mobility\r\n            2 - Priority-fixed mobility\r\n\r\n    --post-rescheduling\r\n        Perform post rescheduling to better distribute resources.\r\n\r\n    --speculative-sdc-scheduling,-s\r\n        Perform scheduling by using speculative SDC.\r\n        The speculative SDC is more conservative, in case \r\n        --panda-parameter=enable-conservative-sdc=1 is passed.\r\n\r\n    --pipelining,-p\r\n        Perform functional pipelining starting from the top function.\r\n\r\n    --pipelining,-p=&lt;func_name&gt;[=&lt;init_interval&gt;][,&lt;func_name&gt;[=&lt;init_interval&gt;]]*\r\n        Perform pipelining of comma separated list of specified functions with optional \r\n        initiation interval (default II=1).\r\n        To pipeline softfloat operators it is possible to specify the __float_&lt;op_name&gt; prefix \r\n        or simply __float to pipeline all softfloat library.\r\n\r\n    --fixed-scheduling=&lt;file&gt;\r\n        Provide scheduling as an XML file.\r\n\r\n    --no-chaining\r\n        Disable chaining optimization.\r\n\r\n\r\n  Binding:\r\n\r\n    --register-allocation=&lt;type&gt;\r\n        Set the algorithm used for register allocation. Possible values for the\r\n        &lt;type&gt; argument are the following:\r\n            WEIGHTED_TS         - use weighted clique covering algorithm by\r\n                                  exploiting the Tseng&Siewiorek heuristics\r\n                                  (default)\r\n            COLORING            - use simple coloring algorithm\r\n            WEIGHTED_COLORING   - use weighted coloring algorithm\r\n            CHORDAL_COLORING    - use chordal coloring algorithm\r\n            BIPARTITE_MATCHING  - use bipartite matching algorithm\r\n            TTT_CLIQUE_COVERING - use a weighted clique covering algorithm\r\n            UNIQUE_BINDING      - unique binding algorithm\r\n\r\n    --module-binding=&lt;type&gt;\r\n        Set the algorithm used for module binding. Possible values for the\r\n        &lt;type&gt; argument are one the following:\r\n            WEIGHTED_TS        - solve the weighted clique covering problem by\r\n                                 exploiting the Tseng&Siewiorek heuristics\r\n                                 (default)\r\n            WEIGHTED_COLORING  - solve the weighted clique covering problem\r\n                                 performing a coloring on the conflict graph\r\n            COLORING           - solve the unweighted clique covering problem\r\n                                 performing a coloring on the conflict graph\r\n            TTT_FAST           - use Tomita, A. Tanaka, H. Takahashi maxima\r\n                                 weighted cliques heuristic to solve the clique\r\n                                 covering problem\r\n            TTT_FAST2          - use Tomita, A. Tanaka, H. Takahashi maximal\r\n                                 weighted cliques heuristic to incrementally\r\n                                 solve the clique covering problem\r\n            TTT_FULL           - use Tomita, A. Tanaka, H. Takahashi maximal\r\n                                 weighted cliques algorithm to solve the clique\r\n                                 covering problem\r\n            TTT_FULL2          - use Tomita, A. Tanaka, H. Takahashi maximal\r\n                                 weighted cliques algorithm to incrementally\r\n                                 solve the clique covering problem\r\n            TS                 - solve the unweighted clique covering problem\r\n                                 by exploiting the Tseng&Siewiorek heuristic\r\n            BIPARTITE_MATCHING - solve the weighted clique covering problem\r\n                                 exploiting the bipartite matching approach\r\n            UNIQUE             - use a 1-to-1 binding algorithm\r\n\r\n\r\n    --shared-input-registers\r\n        The module bindings and the register binding try to share more resources by \r\n        sharing the input registers\r\n\r\n\r\n  Memory allocation:\r\n\r\n    --xml-memory-allocation=&lt;xml_file_name&gt;\r\n        Specify the file where the XML configuration has been defined.\r\n\r\n    --memory-allocation-policy=&lt;type&gt;\r\n        Set the policy for memory allocation. Possible values for the &lt;type&gt;\r\n        argument are the following:\r\n            ALL_BRAM           - all objects that need to be stored in memory\r\n                                 are allocated on BRAMs (default)\r\n            LSS                - all local variables, static variables and\r\n                                 strings are allocated on BRAMs\r\n            GSS                - all global variables, static variables and\r\n                                 strings are allocated on BRAMs\r\n            NO_BRAM            - all objects that need to be stored in memory\r\n                                 are allocated on an external memory\r\n            EXT_PIPELINED_BRAM - all objects that need to be stored in memory\r\n                                 are allocated on an external pipelined memory\r\n\r\n   --base-address=address\r\n        Define the starting address for objects allocated externally to the top\r\n        module.\r\n\r\n   --initial-internal-address=address\r\n        Define the starting address for the objects allocated internally to the\r\n        top module.\r\n\r\n   --channels-type=&lt;type&gt;\r\n        Set the type of memory connections.\r\n        Possible values for &lt;type&gt; are:\r\n            MEM_ACC_11 - the accesses to the memory have a single direct\r\n                         connection or a single indirect connection (default)\r\n            MEM_ACC_N1 - the accesses to the memory have n parallel direct\r\n                         connections or a single indirect connection\r\n            MEM_ACC_NN - the accesses to the memory have n parallel direct\r\n                         connections or n parallel indirect connections\r\n\r\n   --channels-number=&lt;n&gt;\r\n        Define the number of parallel direct or indirect accesses.\r\n\r\n   --memory-ctrl-type=type\r\n        Define which type of memory controller is used. Possible values for the\r\n        &lt;type&gt; argument are the following:\r\n            D00 - no extra delay (default)\r\n            D10 - 1 clock cycle extra-delay for LOAD, 0 for STORE\r\n            D11 - 1 clock cycle extra-delay for LOAD, 1 for STORE\r\n            D21 - 2 clock cycle extra-delay for LOAD, 1 for STORE\r\n\r\n    --memory-banks-number=&lt;n&gt;\r\n        Define the number of memory banks.\r\n\r\n    --sparse-memory[=on\/off]\r\n        Control how the memory allocation happens.\r\n            on - allocate the data in addresses which reduce the decoding logic (default)\r\n           off - allocate the data in a contiguous addresses.\r\n\r\n    --do-not-use-asynchronous-memories\r\n        Do not add asynchronous memories to the possible set of memories used\r\n        by bambu during the memory allocation step.\r\n\r\n    --distram-threshold=value\r\n        Define the threshold in bitsize used to infer DISTRIBUTED\/ASYNCHRONOUS RAMs (default 256).\r\n\r\n    --serialize-memory-accesses\r\n        Serialize the memory accesses using the GCC virtual use-def chains\r\n        without taking into account any alias analysis information.\r\n\r\n    --unaligned-access\r\n        Use only memories supporting unaligned accesses.\r\n\r\n    --aligned-access\r\n        Assume that all accesses are aligned and so only memories supporting aligned\r\n\r\n        accesses are used.\r\n\r\n    --do-not-chain-memories\r\n        When enabled LOADs and STOREs will not be chained with other\r\n        operations.\r\n\r\n    --rom-duplication\r\n        Assume that read-only memories can be duplicated in case timing requires.\r\n\r\n    --bram-high-latency=[3,4]\r\n        Assume a 'high latency bram'-'faster clock frequency' block RAM memory\r\n        based architectures:\r\n        3 =&gt; LOAD(II=1,L=3) STORE(1).\r\n        4 =&gt; LOAD(II=1,L=4) STORE(II=1,L=2).\r\n\r\n    --mem-delay-read=value\r\n        Define the external memory latency when LOAD are performed (default 2).\r\n\r\n    --mem-delay-write=value\r\n        Define the external memory latency when STORE are performed (default 1).\r\n\r\n    --expose-globals\r\n        All global variables can be accessed from outside the accelerator.\r\n\r\n    --data-bus-bitsize=&lt;bitsize&gt;\r\n        Set the bitsize of the external data bus.\r\n\r\n    --addr-bus-bitsize=&lt;bitsize&gt;\r\n        Set the bitsize of the external address bus.\r\n\r\n\r\n  Evaluation of HLS results:\r\n\r\n    --simulate\r\n        Simulate the RTL implementation.\r\n\r\n    --simulator=&lt;type&gt;\r\n        Specify the simulator used in generated simulation scripts:\r\n            MODELSIM - Mentor Modelsim\r\n            XSIM - Xilinx XSim\r\n            ISIM - Xilinx iSim\r\n            ICARUS - Verilog Icarus simulator\r\n            VERILATOR - Verilator simulator\r\n\r\n    --verilator-parallel\r\n        Enable multi-threaded simulation when using verilator\r\n\r\n    --max-sim-cycles=&lt;cycles&gt;\r\n        Specify the maximum number of cycles a HDL simulation may run.\r\n        (default 20000000).\r\n\r\n    --accept-nonzero-return\r\n        Do not assume that application main must return 0.\r\n\r\n    --generate-vcd\r\n        Enable .vcd output file generation for waveform visualization (requires\r\n        testbench generation).\r\n\r\n    --evaluation[=type]\r\n        Perform evaluation of the results.\r\n        The value of 'type' selects the objectives to be evaluated\r\n        If nothing is specified all the following are evaluated\r\n        The 'type' argument can be a string containing any of the following\r\n        strings, separated with commas, without spaces:\r\n            AREA            - Area usage\r\n            AREAxTIME       - Area x Latency product\r\n            TIME            - Latency for the average computation\r\n            TOTAL_TIME      - Latency for the whole computation\r\n            CYCLES          - n. of cycles for the average computation\r\n            TOTAL_CYCLES    - n. of cycles for the whole computation\r\n            BRAMS           - number of BRAMs\r\n            CLOCK_SLACK     - Slack between actual and required clock period\r\n            DSPS            - number of DSPs\r\n            FREQUENCY       - Maximum target frequency\r\n            PERIOD          - Actual clock period\r\n            REGISTERS       - number of registers\r\n\r\n\r\n  RTL synthesis:\r\n\r\n    --clock-name=id\r\n        Specify the clock signal name of the top interface (default = clock).\r\n\r\n    --reset-name=id\r\n        Specify the reset signal name of the top interface (default = reset).\r\n\r\n    --start-name=id\r\n        Specify the start signal name of the top interface (default = start_port).\r\n\r\n    --done-name=id\r\n        Specify the done signal name of the top interface (default = done_port).\r\n\r\n    --clock-period=value\r\n        Specify the period of the clock signal (default = 10ns).\r\n\r\n    --backend-script-extensions=file\r\n        Specify a file that will be included in the backend specific synthesis\r\n        scripts.\r\n\r\n    --backend-sdc-extensions=file\r\n        Specify a file that will be included in the Synopsys Design Constraints\r\n        file (SDC).\r\n\r\n   --parallel-backend\r\n        when possible enable a parallel synthesis backend\r\n    --VHDL-library=libraryname\r\n        Specify the library in which the VHDL generated files are compiled.\r\n\r\n    --device-name=value\r\n        Specify the name of the device. Three different cases are foreseen:\r\n            - Xilinx:  a comma separated string specifying device, speed grade\r\n                       and package (e.g.,: \"xc7z020,-1,clg484,VVD\")\r\n            - Altera:  a string defining the device string (e.g. EP2C70F896C6)\r\n            - Lattice: a string defining the device string (e.g.\r\n                       LFE5U85F8BG756C)\r\n            - NanoXplore: a string defining the device string (e.g. nx2h540tsc))\r\n\r\n    --power-optimization\r\n        Enable Xilinx power based optimization (default no).\r\n\r\n    --connect-iob\r\n        Connect primary input and output ports to IOBs.\r\n\r\n    --soft-float (default)\r\n        Enable the soft-based implementation of floating-point operations.\r\n        Bambu uses as default a faithfully rounded version of softfloat with rounding mode\r\n        equal to round to nearest even. Subnormal numbers are disabled by default.\r\n        Default FP formats are e8m23b-127nih and e11m52b-1023nih for single and double \r\n        precision floating-point types respectively.\r\n\r\n    --flopoco\r\n        Enable the flopoco-based implementation of floating-point operations.\r\n\r\n    --libm-std-rounding\r\n        Enable the use of classical libm. This library combines a customized version of \r\n        glibc, newlib and musl libm implementations into a single libm library synthetizable\r\n        with bambu.\r\n        Without this option, Bambu uses as default a faithfully rounded version of libm.\r\n\r\n    --soft-fp\r\n        Enable the use of soft_fp GCC library instead of bambu customized version of softfloat library.\r\n\r\n    --max-ulp\r\n        Define the maximal ULP (Unit in the last place, i.e., is the spacing\r\n        between floating-point numbers) accepted.\r\n\r\n    --fp-subnormal\r\n        Enable the soft-based implementation of floating-point operations with\r\n        subnormals support.\r\n\r\n    --fp-exception-mode=&lt;ieee|saturation|overflow&gt;\r\n        Set the soft-based exception handling mode:\r\n              ieee    - IEEE754 standard exceptions (default)\r\n           saturation - Inf is replaced with max value, Nan becomes undefined behaviour\r\n            overflow  - Inf and Nan results in undefined behaviour\r\n\r\n    --fp-rounding-mode=&lt;nearest_even|truncate&gt;\r\n        Set the soft-based rounding handling mode:\r\n           nearest_even - IEEE754 standard rounding mode (default)\r\n              truncate  - No rounding is applied\r\n\r\n    --fp-format=&lt;func_name&gt;*e&lt;exp_bits&gt;m&lt;frac_bits&gt;b&lt;exp_bias&gt;&lt;rnd_mode&gt;&lt;exc_mode&gt;&lt;?spec&gt;&lt;?sign&gt;\r\n        Define arbitrary precision floating-point format by function (use comma separated\r\n        list for multiple definitions). (i.e.: e8m27b-127nihs represent IEEE754 single precision FP)\r\n           func_name - Set arbitrary floating-point format for a specific function (using\r\n                       @ symbol here will resolve to the top function)\r\n                       (Arbitrary floating-point format will apply to specified function\r\n                       only, use --propagate-fp-format to extend it to called functions)\r\n            exp_bits - Number of bits used by the exponent\r\n           frac_bits - Number of bits used by the fractional value\r\n            exp_bias - Bias applied to the unsigned value represented by the exponent bits\r\n            rnd_mode - Rounding mode (exclusive option):\r\n                          n - nearest_even: IEEE754 standard rounding mode\r\n                          t - truncate    : no rounding is applied\r\n            exc_mode - Exception mode (exclusive option):\r\n                          i - ieee      : IEEE754 standard exceptions\r\n                          a - saturation: Inf is replaced with max value, Nan becomes undefined behaviour\r\n                          o - overflow  : Inf and Nan results in undefined behaviour\r\n              spec   - Floating-point specialization string (multiple choice):\r\n                          h - hidden one: IEEE754 standard representation with hidden one\r\n                          s - subnormals: IEEE754 subnormal numbers\r\n              sign   - Static sign representation (exclusive option):\r\n                            - IEEE754 dynamic sign is used if omitted\r\n                          1 - all values are considered as negative numbers\r\n                          0 - all values are considered as positive numbers\r\n\r\n    --fp-format=inline-math\r\n        The \"inline-math\" flag may be added to fp-format option to force floating-point\r\n        arithmetic operators always inline policy\r\n\r\n    --fp-format=inline-conversion\r\n        The \"inline-conversion\" flag may be added to fp-format option to force floating-point\r\n        conversion operators always inline policy\r\n\r\n    --fp-format-interface\r\n        User-defined floating-point format is applied to top interface signature if required\r\n        (default modifies top function body only)\r\n\r\n    --fp-format-propagate\r\n        Propagate user-defined floating-point format to called function when possible\r\n\r\n    --hls-div=&lt;method&gt;\r\n        Perform the high-level synthesis of integer division and modulo\r\n        operations starting from a C library based implementation or a HDL component:\r\n             none  - use a HDL based pipelined restoring division\r\n             nr1   - use a C-based non-restoring division with unrolling factor equal to 1 (default)\r\n             nr2   - use a C-based non-restoring division with unrolling factor equal to 2\r\n             NR    - use a C-based Newton-Raphson division\r\n             as    - use a C-based align divisor shift dividend method\r\n\r\n    --hls-fpdiv=&lt;method&gt;\r\n        Perform the high-level synthesis of floating point division \r\n        operations starting from a C library based implementation:\r\n             SRT4 - use a C-based Sweeney, Robertson, Tocher floating point division with radix 4 (default)\r\n             G    - use a C-based Goldschmidt floating point division.\r\n             SF   - use a C-based floating point division as describe in soft-fp library\r\n                    (it requires --soft-fp).\r\n    --skip-pipe-parameter=&lt;value&gt;\r\n        Used during the allocation of pipelined units. &lt;value&gt; specifies how\r\n        many pipelined units, compliant with the clock period, will be skipped.\r\n        (default=0).\r\n\r\n    --reset-type=value\r\n        Specify the type of reset:\r\n             no    - use registers without reset (default)\r\n             async - use registers with asynchronous reset\r\n             sync  - use registers with synchronous reset\r\n\r\n    --reset-level=value\r\n        Specify if the reset is active high or low:\r\n             low   - use registers with active low reset (default)\r\n             high  - use registers with active high reset\r\n\r\n    --disable-reg-init-value\r\n        Used to remove the INIT value from registers (useful for ASIC designs)\r\n\r\n    --registered-inputs=value\r\n        Specify if inputs are registered or not:\r\n             auto  - inputs are registered only for proxy functions (default)\r\n             top   - inputs and return are registered only for top and proxy functions\r\n             yes   - all inputs are registered\r\n             no    - none of the inputs is registered\r\n\r\n    --fsm-encoding=value\r\n             auto    - it depends on the target technology. VVD prefers one encoding\r\n                       while the other are fine with the standard binary encoding. (default)\r\n             one-hot - one hot encoding\r\n             binary  - binary encoding\r\n\r\n    --cprf=value\r\n        Clock Period Resource Fraction (default = 1.0).\r\n\r\n    --DSP-allocation-coefficient=value\r\n        During the allocation step the timing of the DSP-based modules is\r\n        multiplied by value (default = 1.0).\r\n\r\n    --DSP-margin-combinational=value\r\n        Timing of combinational DSP-based modules is multiplied by value.\r\n        (default = 1.0).\r\n\r\n    --DSP-margin-pipelined=value\r\n        Timing of pipelined DSP-based modules is multiplied by value.\r\n        (default = 1.0).\r\n\r\n    --mux-margins=n\r\n        Scheduling reserves a margin corresponding to the delay of n 32 bit\r\n        multiplexers.\r\n\r\n    --timing-model=value\r\n        Specify the timing model used by HLS:\r\n             EC     - estimate timing overhead of glue logics and connections\r\n                      between resources (default)\r\n             SIMPLE - just consider the resource delay\r\n\r\n    --experimental-setup=&lt;setup&gt;\r\n        Specify the experimental setup. This is a shorthand to set multiple\r\n        options with a single command.\r\n        Available values for &lt;setup&gt; are the following:\r\n             BAMBU-AREA           - this setup implies:\r\n                                    -Os  -D'printf(fmt, ...)='\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    --DSP-allocation-coefficient=1.75\r\n                                    --distram-threshold=256\r\n             BAMBU-AREA-MP        - this setup implies:\r\n                                    -Os  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_NN\r\n                                    --channels-number=2\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    --DSP-allocation-coefficient=1.75\r\n                                    --distram-threshold=256\r\n             BAMBU-BALANCED       - this setup implies:\r\n                                    -O2  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_11\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    -fgcse-after-reload  -fipa-cp-clone\r\n                                    -ftree-partial-pre  -funswitch-loops\r\n                                    -finline-functions  -fdisable-tree-bswap\r\n                                    --param max-inline-insns-auto=25\r\n                                    -fno-tree-loop-ivcanon\r\n                                    --distram-threshold=256\r\n             BAMBU-BALANCED-MP    - (default) this setup implies:\r\n                                    -O2  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_NN\r\n                                    --channels-number=2\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    -fgcse-after-reload  -fipa-cp-clone\r\n                                    -ftree-partial-pre  -funswitch-loops\r\n                                    -finline-functions  -fdisable-tree-bswap\r\n                                    --param max-inline-insns-auto=25\r\n                                    -fno-tree-loop-ivcanon\r\n                                    --distram-threshold=256\r\n             BAMBU-TASTE          - this setup concatenate the input files and\r\n                                    passes these options to the compiler:\r\n                                    -O2  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_NN\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    -fgcse-after-reload  -fipa-cp-clone\r\n                                    -ftree-partial-pre  -funswitch-loops\r\n                                    -finline-functions  -fdisable-tree-bswap\r\n                                    --param max-inline-insns-auto=25\r\n                                    -fno-tree-loop-ivcanon\r\n                                    --distram-threshold=256\r\n             BAMBU-PERFORMANCE    - this setup implies:\r\n                                    -O3  -D'printf(fmt, ...)='\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    --distram-threshold=512\r\n                                    --disable-function-proxy\r\n             BAMBU-PERFORMANCE-MP - this setup implies:\r\n                                    -O3  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_NN\r\n                                    --channels-number=2\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    --distram-threshold=512\r\n                                    --disable-function-proxy\r\n             BAMBU                - this setup implies:\r\n                                    -O0 --channels-type=MEM_ACC_11\r\n                                    --memory-allocation-policy=LSS\r\n                                    --distram-threshold=256\r\n             BAMBU092             - this setup implies:\r\n                                    -O3  -D'printf(fmt, ...)='\r\n                                    --timing-model=SIMPLE\r\n                                    --DSP-margin-combinational=1.3\r\n                                    --cprf=0.9  -skip-pipe-parameter=1\r\n                                    --channels-type=MEM_ACC_11\r\n                                    --memory-allocation-policy=LSS\r\n                                    --distram-threshold=256\r\n             VVD                  - this setup implies:\r\n                                    -O3  -D'printf(fmt, ...)='\r\n                                    --channels-type=MEM_ACC_NN\r\n                                    --memory-allocation-policy=ALL_BRAM\r\n                                    --distram-threshold=256\r\n                                    --DSP-allocation-coefficient=1.75\r\n                                    --cprf=0.875\r\n\r\n\r\n  Other options:\r\n\r\n    --pragma-parse\r\n        Perform source code parsing to extract information about pragmas.\r\n        (default=no).\r\n\r\n    --num-accelerators\r\n        Set the number of physical accelerator instantiated in parallel sections. It must\r\n        be a power of two (default=4).\r\n\r\n    --time, -t &lt;time&gt;\r\n        Set maximum execution time (in seconds) for ILP solvers. (infinite).\r\n\r\n    --host-profiling\r\n        Perform host-profiling.\r\n\r\n    --disable-bitvalue-ipa\r\n        Disable inter-procedural bitvalue analysis.\r\n    --disable-function-proxy\r\n        Disable function proxy. May increase FSMD parallelism.\r\n\r\n\r\n  Debug options:\r\n\r\n    --discrepancy\r\n           Performs automated discrepancy analysis between the execution\r\n           of the original source code and the generated HDL (currently\r\n           supports only Verilog). If a mismatch is detected reports\r\n           useful information to the user.\r\n           Uninitialized variables in C are legal, but if they are used\r\n           before initialization in HDL it is possible to obtain X values\r\n           in simulation. This is not necessarily wrong, so these errors\r\n           are not reported by default to avoid reporting false positives.\r\n           If you can guarantee that in your C code there are no\r\n           uninitialized variables and you want the X values in HDL to be\r\n           reported use the option --discrepancy-force-uninitialized.\r\n           Note that the discrepancy of pointers relies on ASAN to properly\r\n           allocate objects in memory. Unfortunately, there is a well-known\r\n           bug on ASAN (https:\/\/github.com\/google\/sanitizers\/issues\/914)\r\n           when -fsanitize=address is passed to GCC or CLANG.\r\n           On some compiler versions this issues has been fixed but since the\r\n           fix has not been upstreamed the bambu option --discrepancy may not\r\n           work. To circumvent the issue, the user may perform the discrepancy\r\n           by adding these two options: --discrepancy --discrepancy-permissive-ptrs.\r\n\r\n    --discrepancy-force-uninitialized\r\n           Reports errors due to uninitialized values in HDL.\r\n           See the option --discrepancy for details\r\n\r\n    --discrepancy-no-load-pointers\r\n           Assume that the data loaded from memories in HDL are never used\r\n           to represent addresses, unless they are explicitly assigned to\r\n           pointer variables.\r\n           The discrepancy analysis is able to compare pointers in software\r\n           execution and addresses in hardware. By default all the values\r\n           loaded from memory are treated as if they could contain addresses,\r\n           even if they are integer variables. This is due to the fact that\r\n           C code doing this tricks is valid and actually used in embedded\r\n           systems, but it can lead to imprecise bug reports, because only\r\n           pointers pointing to actual data are checked by the discrepancy\r\n           analysis.\r\n           If you can guarantee that your code always manipulates addresses\r\n           using pointers and never using plain int, then you can use this\r\n           option to get more precise bug reports.\r\n\r\n    --discrepancy-only=comma,separated,list,of,function,names\r\n           Restricts the discrepancy analysis only to the functions whose\r\n           name is in the list passed as argument.\r\n\r\n    --discrepancy-permissive-ptrs\r\n           Do not trigger hard errors on pointer variables.\r\n\r\n    --discrepancy-hw\r\n           Hardware Discrepancy Analysis.\r\n\r\n    --assert-debug\r\n        Enable assertion debugging performed by Modelsim.\r\n        (Mentor Modelsim should be selected to use this option)\r\n\r\n\r\n  Backend configuration:\r\n\r\n    --mentor-visualizer\r\n        Simulate the RTL implementation and then open Mentor Visualizer.\r\n        (Mentor root has to be correctly set, see --mentor-root)\r\n\r\n    --mentor-optimizer=&lt;0|1&gt;\r\n        Enable or disable mentor optimizer. (default=enabled)\r\n\r\n    --nanoxplore-bypass=&lt;name&gt;\r\n        Define NanoXplore bypass when using NanoXplore. User may set NANOXPLORE_BYPASS\r\n        variable otherwise.\r\n\r\n    --altera-root=&lt;path&gt;\r\n        Define Altera tools path. Given path is searched for Quartus.\r\n        (default=\/opt\/altera:\/opt\/intelFPGA)\r\n\r\n    --lattice-root=&lt;path&gt;\r\n        Define Lattice tools path. Given path is searched for Diamond.\r\n        (default=\/opt\/diamond:\/usr\/local\/diamond)\r\n\r\n    --mentor-root=&lt;path&gt;\r\n        Define Mentor tools path. Given directory is searched for Modelsim and Visualizer\r\n        (default=\/opt\/mentor)\r\n\r\n    --nanoxplore-root=&lt;path&gt;\r\n        Define NanoXplore tools path. Given directory is searched for NXMap.\r\n        (default=\/opt\/NanoXplore\/NXMap3)\r\n\r\n    --xilinx-root=&lt;path&gt;\r\n        Define Xilinx tools path. Given directory is searched for both ISE and Vivado\r\n        (default=\/opt\/Xilinx)<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>******************************************************************************** ____ _ | __ ) __ _ _ __ ___ | |_ _ _ | _ \\ \/ _` | &#8216;_ ` _ \\| &#8216;_ \\| | | | | |_) | (_| | | | | | | |_) | |_| | |____\/ \\__,_|_| |_| |_|_.__\/ \\__,_| ******************************************************************************** High-Level Synthesis Tool Politecnico di &hellip; <a href=\"https:\/\/panda.deib.polimi.it\/?page_id=916\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Bambu: options<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":31,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-916","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bambu: options - panda.deib.polimi.it<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/panda.deib.polimi.it\/?page_id=916\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bambu: options - panda.deib.polimi.it\" \/>\n<meta property=\"og:description\" content=\"******************************************************************************** ____ _ | __ ) __ _ _ __ ___ | |_ _ _ | _  \/ _` | &#039;_ ` _ | &#039;_ | | | | | |_) | (_| | | | | | | |_) | |_| | |____\/ __,_|_| |_| |_|_.__\/ __,_| ******************************************************************************** High-Level Synthesis Tool Politecnico di &hellip; Continue reading Bambu: options &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/panda.deib.polimi.it\/?page_id=916\" \/>\n<meta property=\"og:site_name\" content=\"panda.deib.polimi.it\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-12T09:46:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@PandA4Design\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=916\",\"url\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=916\",\"name\":\"Bambu: options - panda.deib.polimi.it\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/panda.deib.polimi.it\\\/#website\"},\"datePublished\":\"2020-01-17T14:55:03+00:00\",\"dateModified\":\"2023-06-12T09:46:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=916#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=916\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=916#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/panda.deib.polimi.it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bambu\",\"item\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?page_id=31\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bambu: options\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/panda.deib.polimi.it\\\/#website\",\"url\":\"https:\\\/\\\/panda.deib.polimi.it\\\/\",\"name\":\"panda.deib.polimi.it\",\"description\":\"A framework for Hardware-Software Co-Design of Embedded Systems\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/panda.deib.polimi.it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bambu: options - panda.deib.polimi.it","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/panda.deib.polimi.it\/?page_id=916","og_locale":"en_US","og_type":"article","og_title":"Bambu: options - panda.deib.polimi.it","og_description":"******************************************************************************** ____ _ | __ ) __ _ _ __ ___ | |_ _ _ | _  \/ _` | '_ ` _ | '_ | | | | | |_) | (_| | | | | | | |_) | |_| | |____\/ __,_|_| |_| |_|_.__\/ __,_| ******************************************************************************** High-Level Synthesis Tool Politecnico di &hellip; Continue reading Bambu: options &rarr;","og_url":"https:\/\/panda.deib.polimi.it\/?page_id=916","og_site_name":"panda.deib.polimi.it","article_modified_time":"2023-06-12T09:46:03+00:00","twitter_card":"summary_large_image","twitter_site":"@PandA4Design","twitter_misc":{"Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/panda.deib.polimi.it\/?page_id=916","url":"https:\/\/panda.deib.polimi.it\/?page_id=916","name":"Bambu: options - panda.deib.polimi.it","isPartOf":{"@id":"https:\/\/panda.deib.polimi.it\/#website"},"datePublished":"2020-01-17T14:55:03+00:00","dateModified":"2023-06-12T09:46:03+00:00","breadcrumb":{"@id":"https:\/\/panda.deib.polimi.it\/?page_id=916#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/panda.deib.polimi.it\/?page_id=916"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/panda.deib.polimi.it\/?page_id=916#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/panda.deib.polimi.it\/"},{"@type":"ListItem","position":2,"name":"Bambu","item":"https:\/\/panda.deib.polimi.it\/?page_id=31"},{"@type":"ListItem","position":3,"name":"Bambu: options"}]},{"@type":"WebSite","@id":"https:\/\/panda.deib.polimi.it\/#website","url":"https:\/\/panda.deib.polimi.it\/","name":"panda.deib.polimi.it","description":"A framework for Hardware-Software Co-Design of Embedded Systems","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/panda.deib.polimi.it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/pages\/916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=916"}],"version-history":[{"count":5,"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/pages\/916\/revisions"}],"predecessor-version":[{"id":1077,"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/pages\/916\/revisions\/1077"}],"up":[{"embeddable":true,"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=\/wp\/v2\/pages\/31"}],"wp:attachment":[{"href":"https:\/\/panda.deib.polimi.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}