{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,21]],"date-time":"2025-11-21T11:31:35Z","timestamp":1763724695766,"version":"3.41.0"},"reference-count":61,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2024,3,13]],"date-time":"2024-03-13T00:00:00Z","timestamp":1710288000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Reconfigurable Technol. Syst."],"published-print":{"date-parts":[[2024,6,30]]},"abstract":"<jats:p>Partial Reconfiguration (PR) is a key technique in the application design on modern FPGAs. However, current PR tools heavily rely on the developer to manually conduct PR module definition, floorplanning, and flow control at a low level. The existing PR tools do not consider High-Level-Synthesis languages either, which are of great interest to software developers. We propose HiPR, an open-source framework, to bridge the gap between HLS and PR. HiPR allows the developer to define partially reconfigurable C\/C++ functions, instead of Verilog modules, to accelerate the FPGA incremental compilation and automate the flow from C\/C++ to bitstreams. We use a lightweight Simulated Annealing floorplanner and show that it can produce high-quality PR floorplans an order of magnitude faster than analytic methods. By mapping Rosetta HLS benchmarks, we demonstrate that the incremental compilation can be accelerated by 3\u201310\u00d7 compared with state-of-the-art Xilinx Vitis flow without performance loss, at the cost of 15\u201367% one-time overlay set-up time.<\/jats:p>","DOI":"10.1145\/3617837","type":"journal-article","created":{"date-parts":[[2023,9,14]],"date-time":"2023-09-14T14:17:20Z","timestamp":1694701040000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["ExHiPR: Extended High-Level Partial Reconfiguration for Fast Incremental FPGA Compilation"],"prefix":"10.1145","volume":"17","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3749-2729","authenticated-orcid":false,"given":"Yuanlong","family":"Xiao","sequence":"first","affiliation":[{"name":"University of Pennsylvania, Philadelphia, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4043-0171","authenticated-orcid":false,"given":"Dongjoon","family":"Park","sequence":"additional","affiliation":[{"name":"University of Pennsylvania, Philadelphia, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7879-7775","authenticated-orcid":false,"given":"Zeyu Jason","family":"Niu","sequence":"additional","affiliation":[{"name":"University of Pennsylvania, Philadelphia, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0007-8409-4823","authenticated-orcid":false,"given":"Aditya","family":"Hota","sequence":"additional","affiliation":[{"name":"University of Pennsylvania, Philadelphia, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9177-7699","authenticated-orcid":false,"given":"Andr\u00e9","family":"Dehon","sequence":"additional","affiliation":[{"name":"University of Pennsylvania, Philadelphia, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,3,13]]},"reference":[{"volume-title":"Amazon EC2 F1 Instances","year":"2022","key":"e_1_3_2_2_2","unstructured":"Amazon. 2022. Amazon EC2 F1 Instances. Xilinx. Retrieved December 28, 2022 from https:\/\/aws.amazon.com\/ec2\/instance-types\/f1\/"},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2010.2079390"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1109\/FPL.2011.104"},{"key":"e_1_3_2_5_2","first-page":"77","volume-title":"Proceedings of the 5th IEEE Symposium on FPGA-Based Custom Computing Machines","author":"Brebner Gordon","year":"1997","unstructured":"Gordon Brebner. 1997. The swappable logic unit: A paradigm for virtual hardware. In Proceedings of the 5th IEEE Symposium on FPGA-Based Custom Computing Machines. IEEE, 77\u201386."},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/3386367.3431313"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1109\/43.945302"},{"key":"e_1_3_2_8_2","first-page":"1073","volume-title":"Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems","author":"Casias Matthew","year":"2019","unstructured":"Matthew Casias, Kevin Angstadt, Tommy Tracy II, Kevin Skadron, and Westley Weimer. 2019. Debugging support for pattern-matching languages and accelerators. In Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 1073\u20131086."},{"key":"e_1_3_2_9_2","doi-asserted-by":"crossref","unstructured":"Eylon Caspi Michael Chu Randy Huang Nicholas Weaver Joseph Yeh John Wawrzynek and Andr\u00e9 DeHon. 2000. Stream computations organized for reconfigurable execution (SCORE): Extended abstract. In Field-Programmable Logic and Applications: The Roadmap to Reconfigurable Computing. R. W. Hartenstein and H. Grunbacher (Eds.) . Lecture Notes in Computer Science Springer-Verlag Berlin 605\u2013614.","DOI":"10.1007\/3-540-44614-1_65"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/2597917.2597929"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/2967938.2967969"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2018.022071131"},{"volume-title":"https:\/\/www.mn.uio.no\/ifi\/english\/research\/projects\/cosrecos\/","year":"2020","key":"e_1_3_2_13_2","unstructured":"CosReCos. 2020. https:\/\/www.mn.uio.no\/ifi\/english\/research\/projects\/cosrecos\/. Online. Retrieved November 16, 2020 from https:\/\/www.mn.uio.no\/ifi\/english\/research\/projects\/cosrecos\/"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.micpro.2006.02.009"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1109\/MSP.2012.2211477"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1109\/VLSID.2006.96"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2018.00012"},{"volume-title":"GNU make","year":"2021","key":"e_1_3_2_18_2","unstructured":"GNU. 2021. GNU make. Online. Retrieved September 10, 2021 from https:\/\/www.gnu.org\/software\/make\/manual\/make.html"},{"key":"e_1_3_2_19_2","first-page":"269","volume-title":"Proceedings of the International Conference on Architecture of Computing Systems","author":"Grigore Nicolae Bogdan","year":"2018","unstructured":"Nicolae Bogdan Grigore, Charalampos Kritikakis, and Dirk Koch. 2018. HLS enabled partially reconfigurable module implementation. In Proceedings of the International Conference on Architecture of Computing Systems. Springer, 269\u2013282."},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/3431920.3439289"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/3490422.3502361"},{"volume-title":"Version 9.5.1","year":"2022","key":"e_1_3_2_22_2","unstructured":"Gurobi. 2022. Version 9.5.1. Gurobi Optimization, LLC. Retrieved December 31, 2022 from https:\/\/www.gurobi.com\/"},{"key":"e_1_3_2_23_2","unstructured":"Intel 2018. AN 797: Partially Reconfiguring a Design on Intel Arria 10 GX FPGA Development Board. Intel. Retrieved from https:\/\/www.altera.com\/documentation\/ihj1482170009390.html. Accessed December 11 2020."},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA45697.2020.00034"},{"key":"e_1_3_2_25_2","first-page":"471","volume-title":"Proceedings of the IFIP CONGRESS 74","author":"Kahn Gilles","year":"1974","unstructured":"Gilles Kahn. 1974. The semantics of a simple language for parallel programming. In Proceedings of the IFIP CONGRESS 74. North-Holland Publishing Company, Amsterdam, 471\u2013475."},{"key":"e_1_3_2_26_2","first-page":"9","volume-title":"Proceedings of the 2015 IEEE 26th International Conference on Application-Specific Systems, Architectures and Processors","author":"Kapre Nachiket","year":"2015","unstructured":"Nachiket Kapre. 2015. Custom FPGA-based soft-processors for sparse graph acceleration. In Proceedings of the 2015 IEEE 26th International Conference on Application-Specific Systems, Architectures and Processors. IEEE, 9\u201316."},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.5555\/3291168.3291177"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446755"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446755"},{"key":"e_1_3_2_30_2","first-page":"133","volume-title":"Proceedings of the 2018 IEEE 26th Annual International Symposium on Field-Programmable Custom Computing Machines","author":"Lavin Chris","year":"2018","unstructured":"Chris Lavin and Alireza Kaviani. 2018. RapidWright: Enabling custom crafted implementations for FPGAs. In Proceedings of the 2018 IEEE 26th Annual International Symposium on Field-Programmable Custom Computing Machines. IEEE, 133\u2013140."},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1007\/s11265-006-0017-6"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.vlsi.2004.03.002"},{"key":"e_1_3_2_33_2","first-page":"1","volume-title":"Proceedings of the 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum","author":"Montone Alessio","year":"2010","unstructured":"Alessio Montone, Marco D. Santambrogio, and Donatella Sciuto. 2010. Wirelength driven floorplacement for FPGA-based partial reconfigurable systems. In Proceedings of the 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum. IEEE, , 1\u20138."},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/1862648.1862654"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1109\/43.552084"},{"key":"e_1_3_2_36_2","doi-asserted-by":"crossref","first-page":"149","DOI":"10.1145\/2847263.2847270","volume-title":"Proceedings of the 2016 ACM\/SIGDA International Symposium on Field-Programmable Gate Arrays","author":"Nguyen Tuan D. A.","year":"2016","unstructured":"Tuan D. A. Nguyen and Akash Kumar. 2016. PRfloor: An automatic floorplanner for partially reconfigurable FPGA systems. In Proceedings of the 2016 ACM\/SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, 149\u2013158."},{"volume-title":"Oracle Grid Engine","year":"2021","key":"e_1_3_2_37_2","unstructured":"Oracle. 2021. Oracle Grid Engine. Online. Retrieved August 10, 2021 from https:\/\/en.wikipedia.org\/wiki\/Oracle_Grid_Engine"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICFPT56656.2022.9974201"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1109\/FPL.2018.00047"},{"key":"e_1_3_2_40_2","first-page":"389","volume-title":"Proceedings of the 2017 ACM\/IEEE 44th Annual International Symposium on Computer Architecture","author":"Prabhakar Raghu","year":"2017","unstructured":"Raghu Prabhakar, Yaqi Zhang, David Koeplinger, Matt Feldman, Tian Zhao, Stefan Hadjis, Ardavan Pedram, Christos Kozyrakis, and Kunle Olukotun. 2017. Plasticine: A reconfigurable architecture for parallel patterns. In Proceedings of the 2017 ACM\/IEEE 44th Annual International Symposium on Computer Architecture. IEEE, 389\u2013402."},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1109\/TVLSI.2016.2562361"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.5555\/2650280.2650381"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.1109\/FCCM.2015.16"},{"key":"e_1_3_2_44_2","first-page":"271","volume-title":"Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems","author":"Schkufza Eric","year":"2019","unstructured":"Eric Schkufza, Michael Wei, and Christopher J. Rossbach. 2019. Just-in-time compilation for verilog: A new technique for improving the FPGA programming experience. In Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 271\u2013286."},{"key":"e_1_3_2_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/3358202"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1109\/FPL.2006.311273"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/3468044.3468047"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2020.2996072"},{"key":"e_1_3_2_49_2","first-page":"13","volume-title":"Proceedings of the International Symposium on Applied Reconfigurable Computing","author":"Vipin Kizheppatt","year":"2012","unstructured":"Kizheppatt Vipin and Suhaib A. Fahmy. 2012. Architecture-aware reconfiguration-centric floorplanning for partial reconfiguration. In Proceedings of the International Symposium on Applied Reconfigurable Computing. Springer, 13\u201325."},{"key":"e_1_3_2_50_2","doi-asserted-by":"crossref","first-page":"93","DOI":"10.1145\/3431920.3439292","volume-title":"Proceedings of the 2021 ACM\/SIGDA International Symposium on Field-Programmable Gate Arrays","author":"Wang Jie","year":"2021","unstructured":"Jie Wang, Licheng Guo, and Jason Cong. 2021. AutoSA: A polyhedral compiler for high-performance systolic arrays on FPGA. In Proceedings of the 2021 ACM\/SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, New York, NY, 93\u2013104."},{"key":"e_1_3_2_51_2","doi-asserted-by":"crossref","first-page":"196","DOI":"10.1109\/ICFPT51103.2020.00035","volume-title":"Proceedings of the 2020 International Conference on Field-Programmable Technology","author":"Xiao Yuanlong","year":"2020","unstructured":"Yuanlong Xiao, Syed Ahmed, and Andr\u00e9 DeHon. 2020. Fast linking of separately compiled FPGA blocks without a NoC. In Proceedings of the 2020 International Conference on Field-Programmable Technology. IEEE, 196\u2013205."},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1145\/3503222.3507740"},{"key":"e_1_3_2_53_2","doi-asserted-by":"crossref","first-page":"153","DOI":"10.1109\/ICFPT47387.2019.00026","volume-title":"Proceedings of the 2019 International Conference on Field-Programmable Technology","author":"Xiao Yuanlong","year":"2019","unstructured":"Yuanlong Xiao, Dongjoon Park, Andrew Butt, Hans Giesen, Zhaoyang Han, Rui Ding, Nevo Magnezi, and Andr\u00e9 DeHon. 2019. Reducing FPGA compile time with separate compilation for FPGA building blocks. In Proceedings of the 2019 International Conference on Field-Programmable Technology. IEEE, 153\u2013161."},{"volume-title":"xilinx-u50-gen3x16-xdma-dev-201920.3-2784799_all.deb","year":"2021","key":"e_1_3_2_54_2","unstructured":"Xilinx. 2021. xilinx-u50-gen3x16-xdma-dev-201920.3-2784799_all.deb. Xilinx. Retrieved June 18, 2022 from https:\/\/www.xilinx.com\/support\/download\/index.html\/content\/xilinx\/en\/downloadNav\/alveo\/u50.html"},{"volume-title":"Vitis Unified Software Platform Documentation","year":"2023","key":"e_1_3_2_55_2","unstructured":"Xilinx. 2023. Vitis Unified Software Platform Documentation. Xilinx. Retrieved August 18, 2023 from https:\/\/docs.xilinx.com\/r\/en-US\/ug1393-vitis-application-acceleration\/Installing-Xilinx-Runtime-and-Platforms"},{"key":"e_1_3_2_56_2","unstructured":"Xilinx Inc. 2019. UG1027: SDSoC Environment User Guide. Xilinx Inc. 2100 Logic Drive San Jose CA. Retrieved from https:\/\/www.xilinx.com\/support\/documentation\/sw_manuals\/xilinx2019_1\/ug1027-sdsoc-user-guide.pdf. Accessed May 22 2019."},{"key":"e_1_3_2_57_2","unstructured":"Xilinx Inc. 2020. UG1145: Xilinx Vitis Unified Software Platform User Guide. Xilinx Inc. 2100 Logic Drive San Jose CA. Retrieved from https:\/\/www.xilinx.com\/support\/documentation\/sw_manuals\/xilinx2020_2\/ug1145-sdk-system-performance.pdf. Accessed June 24 2020."},{"key":"e_1_3_2_58_2","unstructured":"Xilinx Inc. 2023. UG1120: Alveo Data Center Accelerator Card Platforms. Xilinx Inc. 2100 Logic Drive San Jose CA. Retrieved from https:\/\/www.xilinx.com\/support\/documentation\/boards_and_kits\/accelerator-cards\/ug1120-alveo-platforms.pdf. Accessed October 11 2023."},{"key":"e_1_3_2_59_2","unstructured":"Xilinx Inc. 2022. UG909: Vivado Design Suite User Guide: Dynamic Function eXchange. Xilinx Inc. 2100 Logic Drive San Jose CA. Retrieved from https:\/\/www.xilinx.com\/support\/documentation\/sw_manuals\/xilinx2021_1\/ug909-vivado-partial-reconfiguration.pdf. Accessed February 25 2022."},{"key":"e_1_3_2_60_2","doi-asserted-by":"publisher","DOI":"10.1145\/3373376.3378491"},{"key":"e_1_3_2_61_2","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446699"},{"key":"e_1_3_2_62_2","doi-asserted-by":"publisher","DOI":"10.1145\/3174243.3174255"}],"container-title":["ACM Transactions on Reconfigurable Technology and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3617837","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3617837","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:37:57Z","timestamp":1750178277000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3617837"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,3,13]]},"references-count":61,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2024,6,30]]}},"alternative-id":["10.1145\/3617837"],"URL":"https:\/\/doi.org\/10.1145\/3617837","relation":{},"ISSN":["1936-7406","1936-7414"],"issn-type":[{"type":"print","value":"1936-7406"},{"type":"electronic","value":"1936-7414"}],"subject":[],"published":{"date-parts":[[2024,3,13]]},"assertion":[{"value":"2023-01-16","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-08-11","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-03-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}