{"id":269,"date":"2025-07-21T14:56:53","date_gmt":"2025-07-21T18:56:53","guid":{"rendered":"https:\/\/blogs.mathworks.com\/semiconductors\/?p=269"},"modified":"2025-08-12T13:10:12","modified_gmt":"2025-08-12T17:10:12","slug":"guided-workflow-for-achieving-ppa-targets-in-integrated-circuit-design","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/semiconductors\/2025\/07\/21\/guided-workflow-for-achieving-ppa-targets-in-integrated-circuit-design\/","title":{"rendered":"Guided Workflow for Achieving PPA Targets in Integrated Circuit Design"},"content":{"rendered":"<p>In the world of digital hardware design, translating high-level algorithms into efficient, synthesizable hardware is a critical step. MATLAB\u00ae is a popular platform for algorithm development, implementing these algorithms for ASIC requires conversion to hardware description languages and meeting the desired Power, Performance, and Area (PPA) constraints. This blog walks through a modern workflow for converting MATLAB code to synthesizable SystemC and demonstrates how to measure PPA to guide design decisions. SystemC is widely supported by high-level synthesis (HLS) tools, which can further generate RTL code for implementation.<\/p>\n<pre>Interested to learn more? Visit our <a href=\"https:\/\/mathworks.com\/solutions\/semiconductors.html\">Semiconductor Design and Verification<\/a> solutions site, or register to our <a href=\"https:\/\/www.mathworks.com\/company\/events\/webinars\/upcoming\/series\/semiconductor-design-verification-north-america-webinar-series-2025.html\">upcoming webinar series<\/a>.<\/pre>\n<h1>Workflow Overview<\/h1>\n<p>The process typically involves:<\/p>\n<ol>\n<li>Algorithm Development in MATLAB<\/li>\n<li>Automated Conversion of MATLAB to synthesizable SystemC using HDL Coder\u2122<\/li>\n<li>PPA Measurement and Analysis using Cadence\u00ae Stratus\u2122 HLS tool<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"423\" height=\"536\" class=\"aligncenter size-full wp-image-275\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/Workflow.jpg\" alt=\"\" \/><\/p>\n<p>Let\u2019s illustrate this workflow with an example: AES (Advanced Encryption Standard).<\/p>\n<h1>Step 1: MATLAB Algorithm Development<\/h1>\n<p>We are using AES example, one of the shipping examples in HDL Coder. Below are the MATLAB code and testbench for the AES example. AES design takes in a plaintext and cipherkey as inputs and produces encrypted output ciphertext. Testbench runs five scenarios to pass the text input and validate the encrypted output by decoding it and comparing with original input text.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-371\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/DUT_TB-1024x535.jpg\" alt=\"\" width=\"1250\" height=\"653\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>MATLAB simulation results of the design are as below.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"492\" height=\"501\" class=\"aligncenter size-full wp-image-455\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/OP3.jpg\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1>Step 2: Automated Conversion to SystemC<\/h1>\n<p>HDL Coder workflow automates the generation of synthesizable SystemC. The typical steps are:<\/p>\n<ul>\n<li>Select the MATLAB function and testbench for conversion<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"434\" height=\"408\" class=\"aligncenter size-full wp-image-386\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/INP.png\" alt=\"\" \/><\/p>\n<ul>\n<li>Configure workflow as High Level Synthesis and select HLS tool.<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"776\" height=\"202\" class=\"aligncenter size-full wp-image-392\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/WF1.png\" alt=\"\" \/><\/p>\n<ul>\n<li>Run through code generation and verification steps<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"797\" height=\"560\" class=\"aligncenter size-full wp-image-398\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/WF2.png\" alt=\"\" \/><\/p>\n<p>The result is a SystemC project folder containing:<\/p>\n<ul>\n<li>Synthesizable SystemC source files<\/li>\n<li>Interface wrappers and configuration files<\/li>\n<li>Testbenches for functional verification<\/li>\n<\/ul>\n<h1>Step 3: PPA Measurement and Analysis Using HLS Tool<\/h1>\n<p>Open the generated SystemC project in Cadence\u00ae Stratus\u2122 HLS. This tool allows you to synthesize SystemC code into RTL and simulate the design for functional correctness. By default Cadence\u00ae Stratus\u2122 generates three variants of RTL code as shown below.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"1190\" height=\"584\" class=\"aligncenter size-full wp-image-404\" src=\"http:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/PPA.png\" alt=\"\" \/><\/p>\n<p>A key advantage of this workflow is rapid PPA analysis. Cadence\u00ae Stratus\u2122 HLS tool generates detailed reports on:<\/p>\n<ul>\n<li>Area: Sequential and combinational area, register bits , and more<\/li>\n<li>Performance: Maximum clock frequency and latency<\/li>\n<li>Power: Estimated dynamic and static power consumption<\/li>\n<\/ul>\n<p>PPA figures help you determine if the design meets system requirements or needs further optimization.<\/p>\n<h1>Conclusion<\/h1>\n<p>Converting MATLAB code to synthesizable SystemC and measuring PPA closes the gap between algorithm development and hardware implementation. This workflow empowers engineers to:<\/p>\n<ul>\n<li>Prototype and verify algorithms in MATLAB<\/li>\n<li>Rapidly generate hardware-ready SystemC<\/li>\n<li>Use HLS tools for synthesis and PPA-driven optimization<\/li>\n<\/ul>\n<p>By integrating algorithm design, code generation, and PPA analysis, you can accelerate innovation and deliver efficient, high-performance hardware solutions. Refer to these <a href=\"https:\/\/www.mathworks.com\/help\/hdlcoder\/examples.html?s_tid=CRUX_topnav&amp;category=hls-code-generation-from-matlab\">examples<\/a> and <a href=\"https:\/\/www.mathworks.com\/help\/hdlcoder\/hls-code-generation-from-matlab.html?s_tid=CRUX_topnav\">documentation<\/a> to get started, and share your comments and questions below. You may be excited to try <a href=\"https:\/\/www.mathworks.com\/help\/hdlcoder\/ug\/hls-code-generation-for-lms-filter-example.html\">LMS filter<\/a> example!<\/p>\n<pre>Interested to learn more? Visit our <a href=\"https:\/\/mathworks.com\/solutions\/semiconductors.html\">Semiconductor Design and Verification<\/a> solutions site, or <a href=\"https:\/\/www.mathworks.com\/company\/events\/webinars\/upcoming\/series\/semiconductor-design-verification-north-america-webinar-series-2025.html\">register to our upcoming webinar series<\/a>.<\/pre>\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/semiconductors\/files\/2025\/07\/Workflow.jpg\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div>\n<p>In the world of digital hardware design, translating high-level algorithms into efficient, synthesizable hardware is a critical step. MATLAB\u00ae is a popular platform for algorithm development,&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/semiconductors\/2025\/07\/21\/guided-workflow-for-achieving-ppa-targets-in-integrated-circuit-design\/\">read more >><\/a><\/p>\n","protected":false},"author":227,"featured_media":275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/posts\/269"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/users\/227"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/comments?post=269"}],"version-history":[{"count":51,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/posts\/269\/revisions"}],"predecessor-version":[{"id":476,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/posts\/269\/revisions\/476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/media\/275"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/media?parent=269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/categories?post=269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/semiconductors\/wp-json\/wp\/v2\/tags?post=269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}