{"id":14407,"date":"2020-07-13T10:16:38","date_gmt":"2020-07-13T17:16:38","guid":{"rendered":"https:\/\/blogs.mentor.com\/verificationhorizons\/?p=14407"},"modified":"2026-03-27T08:48:37","modified_gmt":"2026-03-27T12:48:37","slug":"the-many-flavors-of-equivalence-checking-part-5-summary-of-the-most-popular-lec-and-slec-use-cases","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/07\/13\/the-many-flavors-of-equivalence-checking-part-5-summary-of-the-most-popular-lec-and-slec-use-cases\/","title":{"rendered":"The Many Flavors of Equivalence Checking: Part 5, Summary of the Most Popular LEC and SLEC Use Cases"},"content":{"rendered":"<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2020\/07\/apple-VHDL-Verilog-IMG_3562e.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14406 alignright\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2020\/07\/apple-VHDL-Verilog-IMG_3562e-520x261.jpg\" alt=\"\" width=\"378\" height=\"190\"><\/a>As I noted at the beginning of this series, the term \u201clogic equivalence checking\u201d (LEC) applies to a number of very different tools that cover a wide variety of high-value verification tasks. Even experienced engineers can get tripped up in mapping equivalency checking requirements to the corresponding tool and work flow, hence the below summary drawn from this series for you to quickly reference when these need(s) arise. The common thread in all these flows: the employment of an automated, exhaustive formal analysis \u2013 without having to learn formal itself \u2013 so you can focus on the bigger picture.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> RTL synthesis validation &#8212; exhaustively prove that the gate-level netlist <u>exactly<\/u> mimics the HDL circuit\u2019s behavior<\/p>\n<p><strong>Tool(s):<\/strong>&nbsp;<a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/formalpro-equivalence-checking\/\" target=\"_blank\" rel=\"noopener\">Mentor&#8217;s FormalPro Logic Equivalence Checking (LEC) tool<\/a><\/p>\n<p><strong>Detailed Post:<\/strong> <a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2019\/07\/11\/the-many-flavors-of-equivalence-checking-part-1-synthesis-validation-with-lec-and-slec-a-k-a-the-most-popular-formal-apps-ever\/\">Part 1 of this series: Synthesis Validation with LEC and SLEC (a\/k\/a the Most Popular Formal Apps Ever)<\/a>,<\/p>\n<p><strong>Reminder<\/strong>: The critical criterion for a successful LEC run is that the two designs\u2019 behaviors are perfectly the same at the outputs \u2013 i.e. measured at the perimeters they have exactly the same number of states and signaling behaviors.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> High-level synthesis validation &#8212; exhaustively prove the equivalence of the RTL generated by high-level synthesis tool to the original C\/C++\/SystemC code<\/p>\n<p><strong>Tool(s):<\/strong> <a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/catapult-high-level-synthesis\/hls-verification\" target=\"_blank\" rel=\"noopener\">Mentor SLEC-HLS<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:&nbsp;<\/strong><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2019\/07\/11\/the-many-flavors-of-equivalence-checking-part-1-synthesis-validation-with-lec-and-slec-a-k-a-the-most-popular-formal-apps-ever\/\">Part 1: Synthesis Validation with LEC and SLEC<\/a>, <a href=\"https:\/\/www.mentor.com\/hls-lp\/success\/google-inc\" target=\"_blank\" rel=\"noopener\">Google case study<\/a>, <a href=\"https:\/\/resources.sw.siemens.com\/en-US\/white-paper-working-smarter-not-harder-nvidia-closes-design-complexity-gap-with-hls\" target=\"_blank\" rel=\"noopener\">NVIDIA case study<\/a><\/p>\n<p><strong>Reminder<\/strong>: The twist in this use case is that a C\/C++ Specification does not have any explicit clocks at all; and SystemC Specification code is often timed or clocked in a very basic manner separating threads\/registers\/states, with possibly no intra-circuit timing. Hence, it is impossible to expect the more concrete RTL Implementation code created by the HLS tool to have exactly the same number of states as the Specification given the HLS algorithms will inevitably have to insert registers (i.e. extra states) to preserve data to meet clocking constraints imposed by the physical world. Consequently, the <u>Sequential<\/u> Logic Equivalence Checking (SLEC) analysis allows for the number of states to differ between the two as long as the ultimate output data\/signals are the same in the RTL as they were at the C-level.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> RTL ECO and bug fix verification<\/p>\n<p><strong>Tool(s):<\/strong> <a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/questa\/formal-verification\/slec\/\" target=\"_blank\" rel=\"noopener\">Questa SLEC<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:<\/strong>&nbsp;<a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2019\/08\/20\/the-many-flavors-of-equivalence-checking-part-2-how-slec-brings-automated-exhaustive-formal-analysis-to-eco-bug-fix-verification\/\">Part 2: How SLEC Brings Automated, Exhaustive Formal Analysis to ECO\/Bug Fix Verification<\/a><\/p>\n<p><strong>Reminder<\/strong>: The automated, exhaustive formal algorithms will find behavioral differences appearing at the outputs of the \u201cunfixed\u201d vs. the \u201cfixed\u201d designs. Unless your change is really small, a best practice here is to insert enabling logic ahead of the ECO where you run the analysis with the ECO disabled so you can check that backward compatibility between the old and new DUT is maintained \u2013 implicitly confirming you didn\u2019t break anything when you slotted in the ECO\/bug fix. Of course, there are also cases where an ECO is actually NOT supposed to change the DUT behavior at all \u2013 more aggressive clock gating, etc.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> Verifying low power clock gating logic (e.g. verifying your \u201cchicken bits\u201d work)<\/p>\n<p><strong>Tool(s): <\/strong><a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/questa\/formal-verification\/slec\/\" target=\"_blank\" rel=\"noopener\">Questa SLEC<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:<\/strong> <a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/03\/23\/the-many-flavors-of-equivalence-checking-part-3-how-slec-brings-automated-exhaustive-formal-analysis-to-low-power-clock-gating-verification\/\">Part 3: How SLEC Brings Automated, Exhaustive Formal Analysis to Low Power Clock Gating Verification<\/a>,&nbsp;<a href=\"https:\/\/www.amazon.com\/Formal-Verification-Essential-Toolkit-Modern\/dp\/0128007273\/\" target=\"_blank\" rel=\"noopener\">Erik Seligman, Tom Schubert, M V Achutha Kiran Kumar, <em>Formal Verification, An Essential Toolkit for Modern VLSI Design<\/em>. \u00a9 2015 Elsevier \u2013 MK, pp. 236-237<\/a><\/p>\n<p><strong>Reminder:<\/strong> A DUT without any chicken bit logic should perform identically to a DUT WITH chicken bit logic that is not activated. Hence, as with the logic synthesis validation flow, by definition any differences detected between the \u201cSpecification\u201d and \u201cImplementation\u201d code are clearly a bad thing and need to be fixed ASAP.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> Safety mechanism verification<\/p>\n<p><strong>Tool(s): <\/strong><a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/questa\/formal-verification\/slec\/\" target=\"_blank\" rel=\"noopener\">Questa SLEC<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:<\/strong>&nbsp;<a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/05\/19\/the-many-flavors-of-equivalence-checking-part-4-how-slec-brings-automated-exhaustive-formal-analysis-to-safety-mechanism-fault-analysis\/\">Part 4: How SLEC Brings Automated, Exhaustive Formal Analysis to Safety Mechanism Verification<\/a><\/p>\n<p><strong>Reminder:<\/strong> If any difference in behavior is detected between the regular DUT and the safety mechanism logic with NO faults, and that same IP but WITH faults added, it means there is a flaw in the safety mechanism logic to mitigate the injected fault(s). The good news is that this analysis runs significantly faster than other approaches AND you don\u2019t have to spend any time writing a testbench!<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> Verification of the recoding of VHDL design into to Verilog (or vice-versa)<\/p>\n<p><strong>Tool(s):<\/strong> <a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/formalpro-equivalence-checking\/\" target=\"_blank\" rel=\"noopener\">Mentor&#8217;s FormalPro Logic Equivalence Checking (LEC) tool<\/a>&nbsp;or <a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/questa\/formal-verification\/slec\/\" target=\"_blank\" rel=\"noopener\">Questa SLEC<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:<\/strong> <a href=\"https:\/\/verificationacademy.com\/verification-horizons\/march-2020-volume-16-issue-1\/using-questa-slec-to-speed-up-verification-of-multiple-hdl-outputs\" target=\"_blank\" rel=\"noopener\">Verification Horizons: \u201c<em>Using Questa\u00ae SLEC to Speed Up Verification of Multiple HDL Outputs<\/em>\u201d<\/a><\/p>\n<p><strong>Reminder<\/strong>: If the translated IP needs to strictly mimic the original IP in every way, use the LEC flow. But if it is OK for the timing of the output signals to be a little different in the \u201cnew\u201d IP, the SLEC flow can be used.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Task:<\/strong> Design Optimization \u2013 e.g. recoding a DUT for less latency, or reducing logic to save area<\/p>\n<p><strong>Tool(s):<\/strong> <a href=\"https:\/\/eda.sw.siemens.com\/en-US\/ic\/questa\/formal-verification\/slec\/\" target=\"_blank\" rel=\"noopener\">Questa SLEC<\/a><\/p>\n<p><strong>Detailed Post &amp; Links:<\/strong> <a href=\"https:\/\/verificationacademy.com\/sessions\/slec-for-design-optimization\" target=\"_blank\" rel=\"noopener\">Verification Academy, SLEC for Design Optimization<\/a><\/p>\n<p><strong>Reminder<\/strong>: Truly this is a use case where a formal-based approach with SLEC really shines \u2013 you could spend weeks re-simulating the optimized design and get all the tests to pass, but you still might not find an unintended corner case introduced by the optimizations. SLEC will find all discrepancies right away.<\/p>\n<p>&#8212;&#8212;&#8212;-<\/p>\n<p><strong>Summary<\/strong><\/p>\n<p>I trust this series of posts have helped you understand the many ways this automated, exhaustive technology can be applied to high-value verification challenges you have today; and has inspired you to invent your own flows!<\/p>\n<p>Until next time, may your power consumption be low, and your throughput be high!<\/p>\n<p>Joe Hupcey III,<br \/>\nfor the Questa Formal team<\/p>\n<p><strong>Reference Links:<\/strong><\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2019\/07\/11\/the-many-flavors-of-equivalence-checking-part-1-synthesis-validation-with-lec-and-slec-a-k-a-the-most-popular-formal-apps-ever\/\">Part 1 of this series: <strong>Synthesis Validation with LEC and SLEC<\/strong> (a\/k\/a the Most Popular Formal Apps Ever)<\/a><\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2019\/08\/20\/the-many-flavors-of-equivalence-checking-part-2-how-slec-brings-automated-exhaustive-formal-analysis-to-eco-bug-fix-verification\/\">Part 2: How SLEC Brings Automated, Exhaustive Formal Analysis to <strong>ECO\/Bug Fix Verification<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/03\/23\/the-many-flavors-of-equivalence-checking-part-3-how-slec-brings-automated-exhaustive-formal-analysis-to-low-power-clock-gating-verification\/\">Part 3: How SLEC Brings Automated, Exhaustive Formal Analysis to <strong>Low Power Clock Gating Verification<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/05\/19\/the-many-flavors-of-equivalence-checking-part-4-how-slec-brings-automated-exhaustive-formal-analysis-to-safety-mechanism-fault-analysis\/\">Part 4: How SLEC Brings Automated, Exhaustive Formal Analysis to <strong>Safety Mechanism Verification<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I noted at the beginning of this series, the term \u201clogic equivalence checking\u201d (LEC) applies to a number of&#8230;<\/p>\n","protected":false},"author":71594,"featured_media":15373,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1001,1,10],"tags":[465,486,488,495,574,670,710,720],"industry":[],"product":[],"coauthors":[931],"class_list":["post-14407","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-equivalence-checking","category-news","category-tips-tricks","tag-equivalence-checking","tag-formal","tag-formal-apps","tag-formalpro","tag-lec","tag-questa-slec","tag-sequential-logic-equivalency-checking","tag-slec"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2020\/07\/apples-to-apples.jpg","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/users\/71594"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=14407"}],"version-history":[{"count":5,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14407\/revisions"}],"predecessor-version":[{"id":16937,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14407\/revisions\/16937"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media\/15373"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=14407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=14407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=14407"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=14407"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=14407"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=14407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}