{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,11]],"date-time":"2026-03-11T01:44:57Z","timestamp":1773193497045,"version":"3.50.1"},"reference-count":50,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","license":[{"start":{"date-parts":[[2023,6,6]],"date-time":"2023-06-06T00:00:00Z","timestamp":1686009600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["1845952, 2124045, 1909073"],"award-info":[{"award-number":["1845952, 2124045, 1909073"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000028","name":"Semiconductor Research Corporation","doi-asserted-by":"publisher","award":["JUMP"],"award-info":[{"award-number":["JUMP"]}],"id":[{"id":"10.13039\/100000028","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2023,6,6]]},"abstract":"<jats:p>Modular design is a key challenge for enabling large-scale reuse of hardware modules. Unlike software, however, hardware designs correspond to physical circuits and inherit constraints from them. Timing constraints\u2014which cycle a signal arrives, when an input is read\u2014and structural constraints\u2014how often a multiplier accepts new inputs\u2014are fundamental to hardware interfaces. Existing hardware design languages do not provide a way to encode these constraints; a user must read documentation, build scripts, or in the worst case, a module\u2019s implementation to understand how to use it. We present Filament, a language for modular hardware design that supports the specification and enforcement of timing and structural constraints for statically scheduled pipelines. Filament uses<jats:italic>timeline types<\/jats:italic>, which describe the intervals of clock-cycle time when a given signal is available or required. Filament enables<jats:italic>safe composition<\/jats:italic>of hardware modules, ensures that the resulting designs are correctly pipelined, and predictably lowers them to efficient hardware.<\/jats:p>","DOI":"10.1145\/3591234","type":"journal-article","created":{"date-parts":[[2023,6,6]],"date-time":"2023-06-06T20:06:24Z","timestamp":1686081984000},"page":"343-367","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["Modular Hardware Design with Timeline Types"],"prefix":"10.1145","volume":"7","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0983-5867","authenticated-orcid":false,"given":"Rachit","family":"Nigam","sequence":"first","affiliation":[{"name":"Cornell University, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8338-8973","authenticated-orcid":false,"given":"Pedro Henrique","family":"Azevedo de Amorim","sequence":"additional","affiliation":[{"name":"Cornell University, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0837-8924","authenticated-orcid":false,"given":"Adrian","family":"Sampson","sequence":"additional","affiliation":[{"name":"Cornell University, USA"}]}],"member":"320","published-online":{"date-parts":[[2023,6,6]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Vivado Design Suite User Guide: High-Level Synthesis. UG902 (v2017.2)","author":"AMD Inc.","year":"2017","unstructured":"AMD Inc. . 2021. Vivado Design Suite User Guide: High-Level Synthesis. UG902 (v2017.2) June 7, 2017 .. https:\/\/www.xilinx.com\/support\/documentation\/sw_manuals\/xilinx2017_2\/ug902-vivado-high-level-synthesis.pdf AMD Inc.. 2021. Vivado Design Suite User Guide: High-Level Synthesis. UG902 (v2017.2) June 7, 2017.. https:\/\/www.xilinx.com\/support\/documentation\/sw_manuals\/xilinx2017_2\/ug902-vivado-high-level-synthesis.pdf"},{"key":"e_1_2_1_2_1","unstructured":"AMD Inc.. 2022. Xilinx LogiCORE IP Multiplier v11.2. https:\/\/docs.xilinx.com\/v\/u\/en-US\/mult_gen_ds255 AMD Inc.. 2022. Xilinx LogiCORE IP Multiplier v11.2. https:\/\/docs.xilinx.com\/v\/u\/en-US\/mult_gen_ds255"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/DSD.2010.21"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2228360.2228584"},{"key":"e_1_2_1_5_1","doi-asserted-by":"crossref","unstructured":"G\u00e9rard Berry. 1992. A hardware implementation of pure Esterel. Sadhana. G\u00e9rard Berry. 1992. A hardware implementation of pure Esterel. Sadhana.","DOI":"10.1007\/BF02811340"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/291251.289440"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385965"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/5.97299"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-28644-8_2"},{"key":"e_1_2_1_10_1","unstructured":"Cadence Inc.. 2022. Jasper Gold FPV App. https:\/\/www.cadence.com\/en_US\/home\/tools\/system-design-and-verification\/formal-and-static-verification\/jasper-gold-verification-platform\/formal-property-verification-app.html Cadence Inc.. 2022. Jasper Gold FPV App. https:\/\/www.cadence.com\/en_US\/home\/tools\/system-design-and-verification\/formal-and-static-verification\/jasper-gold-verification-platform\/formal-property-verification-app.html"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950413.1950423"},{"key":"e_1_2_1_12_1","doi-asserted-by":"crossref","unstructured":"Paul Caspi Gr\u00e9goire Hamon and Marc Pouzet. 2008. Synchronous functional programming: The Lucid Synchrone experiment. Real-Time Systems: Description and Verification Techniques: Theory and Tools. Hermes. Paul Caspi Gr\u00e9goire Hamon and Marc Pouzet. 2008. Synchronous functional programming: The Lucid Synchrone experiment. Real-Time Systems: Description and Verification Techniques: Theory and Tools. Hermes.","DOI":"10.1002\/9780470611012.ch7"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110268"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454037"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0058022"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.23919\/FPL.2017.8056860"},{"key":"e_1_2_1_17_1","volume-title":"Cocotb: A coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python. https:\/\/docs.cocotb.org\/en\/stable\/index.html","author":"Authors Cocotb","year":"2023","unstructured":"Cocotb Authors . 2023 . Cocotb: A coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python. https:\/\/docs.cocotb.org\/en\/stable\/index.html Cocotb Authors. 2023. Cocotb: A coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python. https:\/\/docs.cocotb.org\/en\/stable\/index.html"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3240765.3240838"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3236786"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2019.6"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385983"},{"key":"e_1_2_1_22_1","unstructured":"Dan R Ghica. 2009. Function interface models for hardware compilation: Types signatures protocols. arXiv preprint arXiv:0907.0749. Dan R Ghica. 2009. Function interface models for hardware compilation: Types signatures protocols. arXiv preprint arXiv:0907.0749."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/5.97300"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2601097.2601174"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2897824.2925892"},{"key":"e_1_2_1_26_1","unstructured":"IP-XACT Working Group. 2023. IP-XACT. https:\/\/www.accellera.org\/downloads\/standards\/ip-xact IP-XACT Working Group. 2023. IP-XACT. https:\/\/www.accellera.org\/downloads\/standards\/ip-xact"},{"key":"e_1_2_1_27_1","unstructured":"Jane Street. 2022. HardCaml: Register Transfer Level Hardware Design in OCaml. https:\/\/github.com\/janestreet\/hardcaml Jane Street. 2022. HardCaml: Register Transfer Level Hardware Design in OCaml. https:\/\/github.com\/janestreet\/hardcaml"},{"key":"e_1_2_1_28_1","unstructured":"Julian Kemmerer. 2022. PipelineC. https:\/\/github.com\/JulianKemmerer\/PipelineC Julian Kemmerer. 2022. PipelineC. https:\/\/github.com\/JulianKemmerer\/PipelineC"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192379"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1982.1653825"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2014.50"},{"key":"e_1_2_1_32_1","volume-title":"HIR: An MLIR-based Intermediate Representation for Hardware Accelerator Description. https:\/\/doi.org\/10.48550\/arXiv.2103.00194","author":"Majumder Kingshuk","year":"2021","unstructured":"Kingshuk Majumder and Uday Bondhugula . 2021 . HIR: An MLIR-based Intermediate Representation for Hardware Accelerator Description. https:\/\/doi.org\/10.48550\/arXiv.2103.00194 10.48550\/arXiv.2103.00194 Kingshuk Majumder and Uday Bondhugula. 2021. HIR: An MLIR-based Intermediate Representation for Hardware Accelerator Description. https:\/\/doi.org\/10.48550\/arXiv.2103.00194"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.23919\/FMCAD.2018.8603014"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2554688.2554786"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385974"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.7709916"},{"key":"e_1_2_1_37_1","volume-title":"Pedro Henrique Azevedo De Amorim, and Adrian Sampson","author":"Nigam Rachit","year":"2023","unstructured":"Rachit Nigam , Pedro Henrique Azevedo De Amorim, and Adrian Sampson . 2023 . Modular Hardware Design with Timeline Types . arXiv preprint arXiv:2304.10646, https:\/\/doi.org\/arXiv:2304.10646 Rachit Nigam, Pedro Henrique Azevedo De Amorim, and Adrian Sampson. 2023. Modular Hardware Design with Timeline Types. arXiv preprint arXiv:2304.10646, https:\/\/doi.org\/arXiv:2304.10646"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446712"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/MEMCOD.2004.1459818"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/FPL.2013.6645550"},{"key":"e_1_2_1_41_1","unstructured":"JP Pizani Flor. 2014. Pi-Ware: An Embedded Hardware Description Language using Dependent Types. Master\u2019s thesis. JP Pizani Flor. 2014. Pi-Ware: An Embedded Hardware Description Language using Dependent Types. Master\u2019s thesis."},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3107953"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462176"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/LICS.2002.1029817"},{"key":"e_1_2_1_45_1","volume-title":"Spade: An Expression-Based HDL With Pipelines. https:\/\/doi.org\/10.48550\/arXiv.2304.03079","author":"Skarman Frans","year":"2023","unstructured":"Frans Skarman and Oscar Gustafsson . 2023 . Spade: An Expression-Based HDL With Pipelines. https:\/\/doi.org\/10.48550\/arXiv.2304.03079 10.48550\/arXiv.2304.03079 Frans Skarman and Oscar Gustafsson. 2023. Spade: An Expression-Based HDL With Pipelines. https:\/\/doi.org\/10.48550\/arXiv.2304.03079"},{"key":"e_1_2_1_46_1","unstructured":"Synopsys Inc.. 2023. Synopsys Design Constraints. https:\/\/web.archive.org\/web\/20161117113913\/http:\/\/www.microsemi.com\/document-portal\/doc_view\/130022-ac152-using-synopsys-design-constraints-sdc-with-designer-app-note Synopsys Inc.. 2023. Synopsys Design Constraints. https:\/\/web.archive.org\/web\/20161117113913\/http:\/\/www.microsemi.com\/document-portal\/doc_view\/130022-ac152-using-synopsys-design-constraints-sdc-with-designer-app-note"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.5555\/647478.727935"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454075"},{"key":"e_1_2_1_49_1","volume-title":"A practical guide for SystemVerilog assertions","author":"Vijayaraghavan Srikanth","unstructured":"Srikanth Vijayaraghavan and Meyyappan Ramanathan . 2005. A practical guide for SystemVerilog assertions . Springer Science & Business Media . Srikanth Vijayaraghavan and Meyyappan Ramanathan. 2005. A practical guide for SystemVerilog assertions. Springer Science & Business Media."},{"key":"e_1_2_1_50_1","doi-asserted-by":"crossref","unstructured":"Zhiru Zhang Yiping Fan Wei Jiang Guoling Han Changqi Yang and Jason Cong. 2008. AutoPilot: A platform-based ESL synthesis system. In High-Level Synthesis. 99\u2013112. Zhiru Zhang Yiping Fan Wei Jiang Guoling Han Changqi Yang and Jason Cong. 2008. AutoPilot: A platform-based ESL synthesis system. In High-Level Synthesis. 99\u2013112.","DOI":"10.1007\/978-1-4020-8588-8_6"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591234","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3591234","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:47:46Z","timestamp":1750178866000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591234"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,6,6]]},"references-count":50,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2023,6,6]]}},"alternative-id":["10.1145\/3591234"],"URL":"https:\/\/doi.org\/10.1145\/3591234","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,6,6]]},"assertion":[{"value":"2023-06-06","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}