Cadence HLS Stratus: ecoFlow

Make it to the Right and Larger Audience


Cadence HLS Stratus: ecoFlow

Cadence Stratus IDE comes with an ecoFLOW example project. “This example contains a simple demonstration of the ECO flow supported by Stratus. It demonstrates how easy it is to manage ECOs from within the Stratus IDE. This example assumes that you have already performed high level synthesis (HLS) on the design and an ECO is about to be attempted.”

Here is the source SystemC code of the DUT. Note it contains both original code and the eco code. The ECO is managed by making a code change in the input SystemC source. This change is then guarded by a conditional preprocessor macro using the same name as the HLS configuration (ECO).


In project.tcl, the original or the baseline HLS configuration is named ORIG and has two simulation configurations (ORIG_B and ORIG_V) that have been simulated and verified. Additionally, a similar scheme is utilized in the test bench to accommodate the functional change. The change in the test bench is also guarded using the name of the system module configuration (ECO_TB).

define_hls_config DUT ORIG
define_hls_config DUT ECO –eco_baseline=ORIG


We first select “ORIG” and click “RUN” green button to do HLS of original code. Then select “ECO” and click “RUN” green button to do HLS of the ECO code


During HLS of ECO code, Stratus compares the CDFG in the current implementation with the CDFG from the baseline implementation. The graph matcher compares the two CDFG graphs on a block by block and node by node basis. The matcher tries to map the nodes in the baseline graph as much as possible and the resulting matching percentage of the graphs is reported in the stratus_hls.log file and to STDOUT.

A side by side comparison report is also generated for this match, named

There are four columns in this match report – Op, ID, Type and Location. Op refers to the individual nodes in matching. These nodes can be either a basic block node, a data flow graph (DFG) node or even an arc in the CDFG. The type of node is reflected in the type column for each node. In case of DFG nodes, detailed node type is provided. ID refers to the node’s ID in the graph. This information is mainly helpful for debugging purposes and Location refers to the line number and source file of the Ops. In the ECO mode, Stratus will write out the scheduling success results to the log file. This represents how successful Stratus was at recreating the schedule in the ECO configuration to match the baseline configuration.



In the above example, from a total of 46 ops found in the design, Stratus scheduled all 46 ops to exactly match the baseline schedule. In some examples, Stratus will not be able to schedule the ops like the baseline and when this happens, Stratus will report a message for each op that could not be scheduled to match the baseline schedule along with the reason for the failed schedule attempt. For the purposes of this example, we will just directly run logic synthesis on both the base line configuration (RC1) and the ECO change configuration (RC2).

Note if you HLS synthesize ECO code before original code, HLS will report an error asking to synthesize original code first:


If the baseline configuration hasn’t been synthesized yet, it will first do the high level synthesis step using Stratus and then it will automatically invoke RC to do logic synthesis on the generated RTL model. In addition, at the end of logic synthesis of the ECO change configuration (RC2), the example has been pre-configured to automatically call Encounter Conformal ECO to compare the netlist models produced during the logic synthesis of configurations RC1 and RC2. Note that this step requires a Conformal ECO XL or GXL license (as well as the setting of the path to the Conformal executable in the top level Makefile). The Encounter Conformal ECO Designer offers functional ECO analysis, optimization, and generation capability. It combines proven equivalence checking and functional checks, and uses formal techniques to analyze and implement the functional ECO. Calling Conformal ECO on these two netlist models, will result in the smallest possible patch file. A change cell summary will also be available at the following location and this provides a high level view of the patch size and characteristics:





Author brief is empty


Contact Us

Thanks for helping us better serve the community. You can make a suggestion, report a bug, a misconduct, or any other issue. We'll get back to you using your private message ASAP.



Forgot your details?