{"id":"https://openalex.org/W2558370909","doi":"https://doi.org/10.1109/asap.2016.7760777","title":"Synthesisable recursion for C++ HLS tools","display_name":"Synthesisable recursion for C++ HLS tools","publication_year":2016,"publication_date":"2016-07-01","ids":{"openalex":"https://openalex.org/W2558370909","doi":"https://doi.org/10.1109/asap.2016.7760777","mag":"2558370909"},"language":"en","primary_location":{"id":"doi:10.1109/asap.2016.7760777","is_oa":false,"landing_page_url":"https://doi.org/10.1109/asap.2016.7760777","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2016 IEEE 27th International Conference on Application-specific Systems, Architectures and Processors (ASAP)","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5081452934","display_name":"David B. Thomas","orcid":"https://orcid.org/0000-0002-9671-0917"},"institutions":[{"id":"https://openalex.org/I47508984","display_name":"Imperial College London","ror":"https://ror.org/041kmwe10","country_code":"GB","type":"education","lineage":["https://openalex.org/I47508984"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"David B. Thomas","raw_affiliation_strings":["Dept. of Electrical Engineering, Imperial College, London"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Dept. of Electrical Engineering, Imperial College, London","institution_ids":["https://openalex.org/I47508984"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5081452934"],"corresponding_institution_ids":["https://openalex.org/I47508984"],"apc_list":null,"apc_paid":null,"fwci":null,"has_fulltext":false,"cited_by_count":20,"citation_normalized_percentile":null,"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"91","last_page":"98"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8325331211090088},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.7651163935661316},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6581538319587708},{"id":"https://openalex.org/keywords/digital-subscriber-line","display_name":"Digital subscriber line","score":0.6201490163803101},{"id":"https://openalex.org/keywords/recursion","display_name":"Recursion (computer science)","score":0.5739638805389404},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.4727795124053955},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.4232431650161743},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.38752079010009766}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8325331211090088},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7651163935661316},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6581538319587708},{"id":"https://openalex.org/C201374245","wikidata":"https://www.wikidata.org/wiki/Q104534","display_name":"Digital subscriber line","level":2,"score":0.6201490163803101},{"id":"https://openalex.org/C168773036","wikidata":"https://www.wikidata.org/wiki/Q264164","display_name":"Recursion (computer science)","level":2,"score":0.5739638805389404},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.4727795124053955},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.4232431650161743},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.38752079010009766},{"id":"https://openalex.org/C76155785","wikidata":"https://www.wikidata.org/wiki/Q418","display_name":"Telecommunications","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1109/asap.2016.7760777","is_oa":false,"landing_page_url":"https://doi.org/10.1109/asap.2016.7760777","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2016 IEEE 27th International Conference on Application-specific Systems, Architectures and Processors (ASAP)","raw_type":"proceedings-article"},{"id":"pmh:oai:eprints.soton.ac.uk:453662","is_oa":false,"landing_page_url":"https://eprints.soton.ac.uk/453662/","pdf_url":null,"source":{"id":"https://openalex.org/S4306401019","display_name":"ePrints Soton (University of Southampton)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I43439940","host_organization_name":"University of Southampton","host_organization_lineage":["https://openalex.org/I43439940"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Conference or Workshop Item"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":9,"referenced_works":["https://openalex.org/W1970032753","https://openalex.org/W2071201688","https://openalex.org/W2087443598","https://openalex.org/W2098298298","https://openalex.org/W2126380235","https://openalex.org/W2128453758","https://openalex.org/W2167839898","https://openalex.org/W2167940947","https://openalex.org/W4256488736"],"related_works":["https://openalex.org/W2885657154","https://openalex.org/W4289709346","https://openalex.org/W2119542776","https://openalex.org/W2014596857","https://openalex.org/W2582410692","https://openalex.org/W1485300234","https://openalex.org/W2258960507","https://openalex.org/W2140083133","https://openalex.org/W2460228634","https://openalex.org/W2097052821"],"abstract_inverted_index":{"C-based":[0],"HLS":[1,28,70,191],"tools":[2,29],"continue":[3],"to":[4,14,39,72,84,116,134],"improve":[5],"in":[6,45,62,156,204],"analysis":[7],"and":[8,36,77,112,144,158,168,182],"optimisation,":[9],"but":[10],"are":[11],"still":[12],"restricted":[13],"a":[15,50,69,99,108,125,177],"subset":[16],"of":[17,43,68,152,163,172],"C":[18,21,110,118],"functionality.":[19],"A":[20],"language":[22,101],"feature":[23],"missing":[24],"from":[25,107],"all":[26],"common":[27],"is":[30,87,93,124,154],"recursion,":[31],"which":[32],"makes":[33],"it":[34,97],"difficult":[35],"time":[37],"consuming":[38],"write":[40],"many":[41],"types":[42],"programs":[44,175],"HLS.":[46],"This":[47],"paper":[48],"presents":[49],"technique":[51],"for":[52,119,189],"implementing":[53],"recursion":[54],"as":[55,199],"an":[56],"Embedded":[57],"Domain":[58],"Specific":[59],"Language":[60],"(EDSL)":[61],"C++,":[63],"utilising":[64],"the":[65,74,81,85,91,131,146,164,192,195,206,209],"C++":[66],"front-end":[67],"compiler":[71],"build":[73],"state":[75],"machines":[76],"stacks,":[78],"while":[79,203],"ensuring":[80],"code":[82],"presented":[83],"back-end":[86],"completely":[88],"synthesisable.":[89],"While":[90],"EDSL":[92],"not":[94],"pure":[95],"C,":[96],"provides":[98,194],"user-friendly":[100],"that":[102,129,188],"can":[103,113],"be":[104,135],"trivially":[105],"translated":[106],"recursive":[109,174],"program,":[111],"contain":[114],"calls":[115],"plain":[117],"compute-intensive":[120],"leaf":[121],"functions.":[122],"HLSRecurse":[123,153],"platform":[126],"independent":[127],"library":[128],"allows":[130],"same":[132,147,196],"program":[133],"compiled":[136],"using":[137,160],"g++,":[138],"clang,":[139],"Legup,":[140],"or":[141],"Vivado":[142,190],"HLS,":[143],"have":[145],"execution":[148],"semantics.":[149],"The":[150],"performance":[151],"evaluated":[155],"software":[157],"hardware":[159],"three":[161],"micro-benchmarks":[162],"underlying":[165],"state-machine":[166],"builder,":[167],"five":[169],"practical":[170],"examples":[171],"real":[173],"including":[176],"Sudoku":[178],"solver,":[179],"Strassen":[180],"multiplication,":[181],"adaptive":[183],"Monte-Carlo":[184],"integration.":[185],"We":[186],"show":[187],"DSL":[193,207],"area-time":[197,210],"product":[198,211],"manually":[200],"converted":[201],"programs,":[202],"Legup":[205],"increases":[208],"by":[212],"1.5\u00d7.":[213]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":3},{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":3},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":5},{"year":2017,"cited_by_count":1}],"updated_date":"2026-07-14T23:27:15.235271","created_date":"2025-10-10T00:00:00"}
