Loop Rerolling for Hardware Decompilation

We introduce the new problem of hardware decompilation. Analogous to software decompilation, hardware decompilation is about analyzing a low-level artifact—in this case a netlist, i.e., a graph of wires and logical gates representing a digital circuit—in order to recover higher-level programming abs...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages 2023-06, Vol.7 (PLDI), p.420-442, Article 123
Hauptverfasser: Sisco, Zachary D., Balkind, Jonathan, Sherwood, Timothy, Hardekopf, Ben
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 442
container_issue PLDI
container_start_page 420
container_title Proceedings of ACM on programming languages
container_volume 7
creator Sisco, Zachary D.
Balkind, Jonathan
Sherwood, Timothy
Hardekopf, Ben
description We introduce the new problem of hardware decompilation. Analogous to software decompilation, hardware decompilation is about analyzing a low-level artifact—in this case a netlist, i.e., a graph of wires and logical gates representing a digital circuit—in order to recover higher-level programming abstractions, and using those abstractions to generate code written in a hardware description language (HDL). The overall problem of hardware decompilation requires a number of pieces. In this paper we focus on one specific piece of the puzzle: a technique we call hardware loop rerolling. Hardware loop rerolling leverages clone detection and program synthesis techniques to identify repeated logic in netlists (such as would be synthesized from loops in the original HDL code) and reroll them into syntactic loops in the recovered HDL code. We evaluate hardware loop rerolling for hardware decompilation over a set of hardware design benchmarks written in the PyRTL HDL and industry standard SystemVerilog. Our implementation identifies and rerolls loops in 52 out of 53 of the netlists in our benchmark suite, and we show three examples of how hardware decompilation can provide concrete benefits: transpilation between HDLs, faster simulation times over netlists (with mean speedup of 6x), and artifact compaction (39% smaller on average).
doi_str_mv 10.1145/3591237
format Article
fullrecord <record><control><sourceid>acm_cross</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3591237</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>3591237</sourcerecordid><originalsourceid>FETCH-LOGICAL-a277t-babc2796636431a2f86c44477d9afc81846a7d16725c5de1841ba9641c2950243</originalsourceid><addsrcrecordid>eNpNj81LAzEUxIMoWNri3dPexMNqXvKSbI5SPyosFETPy9tsIiu7zZIUxP_eSqt4mhnmx8AwdgH8BgDVrVQWhDQnbCbQqBJQwOk_f86WOX9wzsFKrKSdses6xql48SkOQ799L0JMxZpS90nJF_fexXHqB9r1cbtgZ4GG7JdHnbO3x4fX1bqsN0_Pq7u6JGHMrmypdcJYraVGCSRCpR0iGtNZCq6CCjWZDrQRyqnO7zO0ZDWCE1ZxgXLOrg67LsWckw_NlPqR0lcDvPk52RxP7snLA0lu_IN-y2-hP0ll</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Loop Rerolling for Hardware Decompilation</title><source>Access via ACM Digital Library</source><source>EZB-FREE-00999 freely available EZB journals</source><creator>Sisco, Zachary D. ; Balkind, Jonathan ; Sherwood, Timothy ; Hardekopf, Ben</creator><creatorcontrib>Sisco, Zachary D. ; Balkind, Jonathan ; Sherwood, Timothy ; Hardekopf, Ben</creatorcontrib><description>We introduce the new problem of hardware decompilation. Analogous to software decompilation, hardware decompilation is about analyzing a low-level artifact—in this case a netlist, i.e., a graph of wires and logical gates representing a digital circuit—in order to recover higher-level programming abstractions, and using those abstractions to generate code written in a hardware description language (HDL). The overall problem of hardware decompilation requires a number of pieces. In this paper we focus on one specific piece of the puzzle: a technique we call hardware loop rerolling. Hardware loop rerolling leverages clone detection and program synthesis techniques to identify repeated logic in netlists (such as would be synthesized from loops in the original HDL code) and reroll them into syntactic loops in the recovered HDL code. We evaluate hardware loop rerolling for hardware decompilation over a set of hardware design benchmarks written in the PyRTL HDL and industry standard SystemVerilog. Our implementation identifies and rerolls loops in 52 out of 53 of the netlists in our benchmark suite, and we show three examples of how hardware decompilation can provide concrete benefits: transpilation between HDLs, faster simulation times over netlists (with mean speedup of 6x), and artifact compaction (39% smaller on average).</description><identifier>ISSN: 2475-1421</identifier><identifier>EISSN: 2475-1421</identifier><identifier>DOI: 10.1145/3591237</identifier><language>eng</language><publisher>New York, NY, USA: ACM</publisher><subject>Hardware ; Hardware description languages and compilation ; Software tools for EDA</subject><ispartof>Proceedings of ACM on programming languages, 2023-06, Vol.7 (PLDI), p.420-442, Article 123</ispartof><rights>Owner/Author</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-a277t-babc2796636431a2f86c44477d9afc81846a7d16725c5de1841ba9641c2950243</citedby><cites>FETCH-LOGICAL-a277t-babc2796636431a2f86c44477d9afc81846a7d16725c5de1841ba9641c2950243</cites><orcidid>0009-0003-8349-7701 ; 0000-0002-6550-6075 ; 0009-0008-1199-6129 ; 0000-0003-1443-1373</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://dl.acm.org/doi/pdf/10.1145/3591237$$EPDF$$P50$$Gacm$$Hfree_for_read</linktopdf><link.rule.ids>314,780,784,2282,27924,27925,40196,76228</link.rule.ids></links><search><creatorcontrib>Sisco, Zachary D.</creatorcontrib><creatorcontrib>Balkind, Jonathan</creatorcontrib><creatorcontrib>Sherwood, Timothy</creatorcontrib><creatorcontrib>Hardekopf, Ben</creatorcontrib><title>Loop Rerolling for Hardware Decompilation</title><title>Proceedings of ACM on programming languages</title><addtitle>ACM PACMPL</addtitle><description>We introduce the new problem of hardware decompilation. Analogous to software decompilation, hardware decompilation is about analyzing a low-level artifact—in this case a netlist, i.e., a graph of wires and logical gates representing a digital circuit—in order to recover higher-level programming abstractions, and using those abstractions to generate code written in a hardware description language (HDL). The overall problem of hardware decompilation requires a number of pieces. In this paper we focus on one specific piece of the puzzle: a technique we call hardware loop rerolling. Hardware loop rerolling leverages clone detection and program synthesis techniques to identify repeated logic in netlists (such as would be synthesized from loops in the original HDL code) and reroll them into syntactic loops in the recovered HDL code. We evaluate hardware loop rerolling for hardware decompilation over a set of hardware design benchmarks written in the PyRTL HDL and industry standard SystemVerilog. Our implementation identifies and rerolls loops in 52 out of 53 of the netlists in our benchmark suite, and we show three examples of how hardware decompilation can provide concrete benefits: transpilation between HDLs, faster simulation times over netlists (with mean speedup of 6x), and artifact compaction (39% smaller on average).</description><subject>Hardware</subject><subject>Hardware description languages and compilation</subject><subject>Software tools for EDA</subject><issn>2475-1421</issn><issn>2475-1421</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2023</creationdate><recordtype>article</recordtype><recordid>eNpNj81LAzEUxIMoWNri3dPexMNqXvKSbI5SPyosFETPy9tsIiu7zZIUxP_eSqt4mhnmx8AwdgH8BgDVrVQWhDQnbCbQqBJQwOk_f86WOX9wzsFKrKSdses6xql48SkOQ799L0JMxZpS90nJF_fexXHqB9r1cbtgZ4GG7JdHnbO3x4fX1bqsN0_Pq7u6JGHMrmypdcJYraVGCSRCpR0iGtNZCq6CCjWZDrQRyqnO7zO0ZDWCE1ZxgXLOrg67LsWckw_NlPqR0lcDvPk52RxP7snLA0lu_IN-y2-hP0ll</recordid><startdate>20230606</startdate><enddate>20230606</enddate><creator>Sisco, Zachary D.</creator><creator>Balkind, Jonathan</creator><creator>Sherwood, Timothy</creator><creator>Hardekopf, Ben</creator><general>ACM</general><scope>AAYXX</scope><scope>CITATION</scope><orcidid>https://orcid.org/0009-0003-8349-7701</orcidid><orcidid>https://orcid.org/0000-0002-6550-6075</orcidid><orcidid>https://orcid.org/0009-0008-1199-6129</orcidid><orcidid>https://orcid.org/0000-0003-1443-1373</orcidid></search><sort><creationdate>20230606</creationdate><title>Loop Rerolling for Hardware Decompilation</title><author>Sisco, Zachary D. ; Balkind, Jonathan ; Sherwood, Timothy ; Hardekopf, Ben</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a277t-babc2796636431a2f86c44477d9afc81846a7d16725c5de1841ba9641c2950243</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2023</creationdate><topic>Hardware</topic><topic>Hardware description languages and compilation</topic><topic>Software tools for EDA</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Sisco, Zachary D.</creatorcontrib><creatorcontrib>Balkind, Jonathan</creatorcontrib><creatorcontrib>Sherwood, Timothy</creatorcontrib><creatorcontrib>Hardekopf, Ben</creatorcontrib><collection>CrossRef</collection><jtitle>Proceedings of ACM on programming languages</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Sisco, Zachary D.</au><au>Balkind, Jonathan</au><au>Sherwood, Timothy</au><au>Hardekopf, Ben</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Loop Rerolling for Hardware Decompilation</atitle><jtitle>Proceedings of ACM on programming languages</jtitle><stitle>ACM PACMPL</stitle><date>2023-06-06</date><risdate>2023</risdate><volume>7</volume><issue>PLDI</issue><spage>420</spage><epage>442</epage><pages>420-442</pages><artnum>123</artnum><issn>2475-1421</issn><eissn>2475-1421</eissn><abstract>We introduce the new problem of hardware decompilation. Analogous to software decompilation, hardware decompilation is about analyzing a low-level artifact—in this case a netlist, i.e., a graph of wires and logical gates representing a digital circuit—in order to recover higher-level programming abstractions, and using those abstractions to generate code written in a hardware description language (HDL). The overall problem of hardware decompilation requires a number of pieces. In this paper we focus on one specific piece of the puzzle: a technique we call hardware loop rerolling. Hardware loop rerolling leverages clone detection and program synthesis techniques to identify repeated logic in netlists (such as would be synthesized from loops in the original HDL code) and reroll them into syntactic loops in the recovered HDL code. We evaluate hardware loop rerolling for hardware decompilation over a set of hardware design benchmarks written in the PyRTL HDL and industry standard SystemVerilog. Our implementation identifies and rerolls loops in 52 out of 53 of the netlists in our benchmark suite, and we show three examples of how hardware decompilation can provide concrete benefits: transpilation between HDLs, faster simulation times over netlists (with mean speedup of 6x), and artifact compaction (39% smaller on average).</abstract><cop>New York, NY, USA</cop><pub>ACM</pub><doi>10.1145/3591237</doi><tpages>23</tpages><orcidid>https://orcid.org/0009-0003-8349-7701</orcidid><orcidid>https://orcid.org/0000-0002-6550-6075</orcidid><orcidid>https://orcid.org/0009-0008-1199-6129</orcidid><orcidid>https://orcid.org/0000-0003-1443-1373</orcidid><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 2475-1421
ispartof Proceedings of ACM on programming languages, 2023-06, Vol.7 (PLDI), p.420-442, Article 123
issn 2475-1421
2475-1421
language eng
recordid cdi_crossref_primary_10_1145_3591237
source Access via ACM Digital Library; EZB-FREE-00999 freely available EZB journals
subjects Hardware
Hardware description languages and compilation
Software tools for EDA
title Loop Rerolling for Hardware Decompilation
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-22T15%3A49%3A07IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-acm_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Loop%20Rerolling%20for%20Hardware%20Decompilation&rft.jtitle=Proceedings%20of%20ACM%20on%20programming%20languages&rft.au=Sisco,%20Zachary%20D.&rft.date=2023-06-06&rft.volume=7&rft.issue=PLDI&rft.spage=420&rft.epage=442&rft.pages=420-442&rft.artnum=123&rft.issn=2475-1421&rft.eissn=2475-1421&rft_id=info:doi/10.1145/3591237&rft_dat=%3Cacm_cross%3E3591237%3C/acm_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true