The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog
With the increasing need to apply modern software techniques to hardware design, Verilog, the most popular Hardware Description Language (HDL), plays an infrastructure role. However, Verilog has several semantic pitfalls that often confuse software and hardware developers. Although prior research on...
Gespeichert in:
| Veröffentlicht in: | Proceedings of ACM on programming languages Jg. 7; H. OOPSLA2; S. 234 - 263 |
|---|---|
| Hauptverfasser: | , , , , , , |
| Format: | Journal Article |
| Sprache: | Englisch |
| Veröffentlicht: |
New York, NY, USA
ACM
16.10.2023
|
| Schlagworte: | |
| ISSN: | 2475-1421, 2475-1421 |
| Online-Zugang: | Volltext |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
| Abstract | With the increasing need to apply modern software techniques to hardware design, Verilog, the most popular Hardware Description Language (HDL), plays an infrastructure role. However, Verilog has several semantic pitfalls that often confuse software and hardware developers. Although prior research on formal semantics for Verilog exists, it is not comprehensive and has not fully addressed these issues. In this work, we present a novel scheme inspired by previous work on defining core languages for software languages like JavaScript and Python. Specifically, we define the formal semantics of Verilog using a core language called λV, which captures the essence of Verilog using as few language structures as possible. λV not only covers the most complete set of language features to date, but also addresses the aforementioned pitfalls. We implemented λV with about 27,000 lines of Java code, and comprehensively tested its totality and conformance with Verilog. As a reliable reference semantics, λV can detect semantic bugs in real-world Verilog simulators and expose ambiguities in Verilog’s standard specification. Moreover, as a useful core language, λV has the potential to facilitate the development of tools such as a state-space explorer and a concolic execution tool for Verilog. |
|---|---|
| AbstractList | With the increasing need to apply modern software techniques to hardware design, Verilog, the most popular Hardware Description Language (HDL), plays an infrastructure role. However, Verilog has several semantic pitfalls that often confuse software and hardware developers. Although prior research on formal semantics for Verilog exists, it is not comprehensive and has not fully addressed these issues. In this work, we present a novel scheme inspired by previous work on defining core languages for software languages like JavaScript and Python. Specifically, we define the formal semantics of Verilog using a core language called λV, which captures the essence of Verilog using as few language structures as possible. λV not only covers the most complete set of language features to date, but also addresses the aforementioned pitfalls. We implemented λV with about 27,000 lines of Java code, and comprehensively tested its totality and conformance with Verilog. As a reliable reference semantics, λV can detect semantic bugs in real-world Verilog simulators and expose ambiguities in Verilog’s standard specification. Moreover, as a useful core language, λV has the potential to facilitate the development of tools such as a state-space explorer and a concolic execution tool for Verilog. With the increasing need to apply modern software techniques to hardware design, Verilog, the most popular Hardware Description Language (HDL), plays an infrastructure role. However, Verilog has several semantic pitfalls that often confuse software and hardware developers. Although prior research on formal semantics for Verilog exists, it is not comprehensive and has not fully addressed these issues. In this work, we present a novel scheme inspired by previous work on defining core languages for software languages like JavaScript and Python. Specifically, we define the formal semantics of Verilog using a core language called λ V , which captures the essence of Verilog using as few language structures as possible. λ V not only covers the most complete set of language features to date, but also addresses the aforementioned pitfalls. We implemented λ V with about 27,000 lines of Java code, and comprehensively tested its totality and conformance with Verilog. As a reliable reference semantics, λ V can detect semantic bugs in real-world Verilog simulators and expose ambiguities in Verilog’s standard specification. Moreover, as a useful core language, λ V has the potential to facilitate the development of tools such as a state-space explorer and a concolic execution tool for Verilog. |
| ArticleNumber | 230 |
| Author | Zhang, Nairen Ma, Xiaoxing Tan, Tian Xu, Chang Chen, Qinlin Li, Yue Wang, Jinpeng |
| Author_xml | – sequence: 1 givenname: Qinlin orcidid: 0009-0006-5498-5927 surname: Chen fullname: Chen, Qinlin email: qinlinchen@smail.nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 2 givenname: Nairen orcidid: 0009-0004-3737-8768 surname: Zhang fullname: Zhang, Nairen email: nairen@smail.nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 3 givenname: Jinpeng orcidid: 0009-0007-9099-4262 surname: Wang fullname: Wang, Jinpeng email: jpwang@smail.nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 4 givenname: Tian orcidid: 0009-0009-3792-1237 surname: Tan fullname: Tan, Tian email: tiantan@nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 5 givenname: Chang orcidid: 0000-0002-6299-4704 surname: Xu fullname: Xu, Chang email: changxu@nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 6 givenname: Xiaoxing orcidid: 0000-0001-7970-1384 surname: Ma fullname: Ma, Xiaoxing email: xxm@nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 7 givenname: Yue orcidid: 0009-0009-1285-2298 surname: Li fullname: Li, Yue email: yueli@nju.edu.cn organization: Nanjing University, Nanjing, China |
| BookMark | eNptkM1LAzEQxYNUsNbi3VNunlbztW7irZRWhUIFV6_LJDvRlf0oSS7-91bbioineTC_ebx5p2TUDz0Scs7ZFecqv5Y3QmiWH5GxUEWecSX46Jc-IdMY3xlj3EilpRmTx_IN6SJG7B3SwdMXDE07vN7SGS0DuAS2RQp9TUuMCWu63mCA1Aw9tPQJO-hT4yL1QzhcnpFjD23E6X5OyPNyUc7vs9X67mE-W2XAjciz3GrwhTZWaxRcOMYKZZmEAphB3CbMa3DOYu29sQXz0qraeLSi9sJpa-SEXO58XRhiDOirTWg6CB8VZ9VXF9W-iy2Z_SFdk75_SAGa9h_-YseD635MD8tPDpxpew |
| CitedBy_id | crossref_primary_10_1145_3715325 crossref_primary_10_1145_3720484 crossref_primary_10_1109_TCAD_2024_3509798 |
| Cites_doi | 10.1016/j.tcs.2006.12.018 10.1145/2228360.2228584 10.1145/3385412.3386024 10.1145/3510578 10.23919/DATE.2018.8342260 10.3390/electronics7060081 10.4230/LIPIcs.SNAPL.2019.7 10.1145/2384577.2384579 10.1093/comjnl/45.1.27 10.1007/978-3-642-14107-2_7 10.1109/IEEESTD.2006.99495 10.5281/zenodo.8320642 10.1109/APSEC.2001.991473 10.1109/MEMOCODE57689.2022.9954591 10.1145/1065010.1065036 10.1109/LICS.1995.523251 10.1145/2678015.2678016 10.5281/zenodo.8321324 10.1109/MEMCOD.2010.5558634 10.1007/s11334-008-0069-9 10.4230/LIPIcs.SNAPL.2019.9 10.1109/FormaliSE.2019.00020 10.1109/TCAD.2021.3066560 10.1016/S1571-0661(05)80282-8 10.1145/2872362.2872414 10.1007/978-3-540-78800-3_24 10.1109/ICECS.2000.911568 10.1145/3485494 10.1145/2676726.2676995 10.1109/ICCAD.2017.8203780 10.1145/2509136.2509536 10.1109/DAC18072.2020.9218632 |
| ContentType | Journal Article |
| Copyright | Owner/Author |
| Copyright_xml | – notice: Owner/Author |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3622805 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 263 |
| ExternalDocumentID | 10_1145_3622805 3622805 |
| GrantInformation_xml | – fundername: The Natural Science Foundation of China grantid: 62025202,62002157,61932021 funderid: https://doi.org/10.13039/ – fundername: Jiangsu Natural Science Foundation grantid: BK20202001 funderid: https://doi.org/10.13039/ – fundername: The Fundamental Research Funds for the Central Universities of China grantid: 020214380102, 020214912220 funderid: https://doi.org/10.13039/ |
| GroupedDBID | AAKMM AAYFX ACM ADPZR AIKLT ALMA_UNASSIGNED_HOLDINGS GUFHI LHSKQ M~E OK1 ROL AAYXX AEFXT AEJOY AKRVB CITATION |
| ID | FETCH-LOGICAL-a1925-5b8af789b88e212c0074b03a7a09ee0005daccbedff9b70f3b4d9feb2df2c8b93 |
| ISSN | 2475-1421 |
| IngestDate | Tue Nov 18 20:41:49 EST 2025 Sun Nov 09 14:46:52 EST 2025 Fri Feb 21 01:29:13 EST 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA2 |
| Keywords | Core Languages Semantics Hardware Description Languages Verilog |
| Language | English |
| License | This work is licensed under a Creative Commons Attribution 4.0 International License. |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-a1925-5b8af789b88e212c0074b03a7a09ee0005daccbedff9b70f3b4d9feb2df2c8b93 |
| ORCID | 0009-0006-5498-5927 0009-0004-3737-8768 0009-0007-9099-4262 0009-0009-1285-2298 0000-0002-6299-4704 0009-0009-3792-1237 0000-0001-7970-1384 |
| OpenAccessLink | https://dl.acm.org/doi/10.1145/3622805 |
| PageCount | 30 |
| ParticipantIDs | crossref_primary_10_1145_3622805 crossref_citationtrail_10_1145_3622805 acm_primary_3622805 |
| PublicationCentury | 2000 |
| PublicationDate | 20231016 2023-10-16 |
| PublicationDateYYYYMMDD | 2023-10-16 |
| PublicationDate_xml | – month: 10 year: 2023 text: 20231016 day: 16 |
| PublicationDecade | 2020 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationTitleAbbrev | ACM PACMPL |
| PublicationYear | 2023 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| References | Jonathan Bachrach, Huy Vo, Brian Richards, Yunsup Lee, Andrew Waterman, Rimas Avižienis, John Wawrzynek, and Krste Asanović. 2012. Chisel: Constructing Hardware in a Scala Embedded Language. In Proceedings of the 49th Annual Design Automation Conference (DAC ’12). Association for Computing Machinery, New York, NY, USA. 1216–1225. isbn:9781450311991 https://doi.org/10.1145/2228360.2228584 10.1145/2228360.2228584 Jonathan Balkind, Michael McKeown, Yaosheng Fu, Tri Nguyen, Yanqi Zhou, Alexey Lavrov, Mohammad Shahrad, Adi Fuchs, Samuel Payne, Xiaohua Liang, Matthew Matl, and David Wentzlaff. 2016. OpenPiton: An Open Source Manycore Research Framework. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16). ACM, New York, NY, USA. 217–232. isbn:978-1-4503-4091-5 https://doi.org/10.1145/2872362.2872414 10.1145/2872362.2872414 Lenny Truong and Pat Hanrahan. 2019. A Golden Age of Hardware Description Languages: Applying Programming Language Techniques to Improve Design Productivity. In 3rd Summit on Advances in Programming Languages, SNAPL 2019, May 16-17, 2019, Providence, RI, USA, Benjamin S. Lerner, Rastislav Bodík, and Shriram Krishnamurthi (Eds.) (LIPIcs, Vol. 136). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 7:1–7:21. https://doi.org/10.4230/LIPIcs.SNAPL.2019.7 10.4230/LIPIcs.SNAPL.2019.7 Alif Ahmed, Farimah Farahmandi, and Prabhat Mishra. 2018. Directed test generation using concolic testing on RTL models. In 2018 Design, Automation & Test in Europe Conference & Exhibition, DATE 2018, Dresden, Germany, March 19-23, 2018, Jan Madsen and Ayse K. Coskun (Eds.). IEEE, 1538–1543. https://doi.org/10.23919/DATE.2018.8342260 10.23919/DATE.2018.8342260 Shriram Krishnamurthi, Benjamin S. Lerner, and Liam Elberty. 2019. The Next 700 Semantics: A Research Challenge. In 3rd Summit on Advances in Programming Languages, SNAPL 2019, May 16-17, 2019, Providence, RI, USA, Benjamin S. Lerner, Rastislav Bodík, and Shriram Krishnamurthi (Eds.) (LIPIcs, Vol. 136). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 9:1–9:14. https://doi.org/10.4230/LIPIcs.SNAPL.2019.9 10.4230/LIPIcs.SNAPL.2019.9 Arjun Guha, Claudiu Saftoiu, and Shriram Krishnamurthi. 2010. The Essence of JavaScript. In ECOOP 2010 - Object-Oriented Programming, 24th European Conference, Maribor, Slovenia, June 21-25, 2010. Proceedings, Theo D’Hondt (Ed.) (Lecture Notes in Computer Science, Vol. 6183). Springer, 126–150. https://doi.org/10.1007/978-3-642-14107-2_7 10.1007/978-3-642-14107-2_7 Matt Kaufmann, Panagiotis Manolios, and J Strother Moore. 2013. Computer-aided reasoning: ACL2 case studies. 4, Springer Science & Business Media. Patrick O’Neil Meredith, Michael Katelman, José Meseguer, and Grigore Rosu. 2010. A formal executable semantics of Verilog. In 8th ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE 2010), Grenoble, France, 26-28 July 2010. IEEE Computer Society, 179–188. https://doi.org/10.1109/MEMCOD.2010.5558634 10.1109/MEMCOD.2010.5558634 Fabian Schuiki, Andreas Kurth, Tobias Grosser, and Luca Benini. 2020. LLHD: A Multi-Level Intermediate Representation for Hardware Description Languages. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA. 258–271. isbn:9781450376136 https://doi.org/10.1145/3385412.3386024 10.1145/3385412.3386024 Qinlin Chen, Nairen Zhang, Jinpeng Wang, Tian Tan, Chang Xu, Xiaoxing Ma, and Yue Li. 2023. The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog (Artifact). https://doi.org/10.5281/zenodo.8320642 10.5281/zenodo.8320642 Jifeng He and Huibiao Zhu. 2000. Formalising VERILOG. In Proceedings of the 2000 7th IEEE International Conference on Electronics, Circuits and Systems, ICECS 2000, Jounieh, Lebanon, December 17-20, 2000. IEEE, 412–415. https://doi.org/10.1109/ICECS.2000.911568 10.1109/ICECS.2000.911568 Jifeng He and Qiwen Xu. 2000. An Operational Semantics of a Simulator Algorithm. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2000, June 24-29, 2000, Las Vegas, Nevada, USA, Hamid R. Arabnia (Ed.). CSREA Press. Xingyu Meng, Shamik Kundu, Arun K. Kanuparthi, and Kanad Basu. 2022. RTL-ConTest: Concolic Testing on RTL for Detecting Security Vulnerabilities. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst., 41, 3 (2022), 466–477. https://doi.org/10.1109/TCAD.2021.3066560 10.1109/TCAD.2021.3066560 Viktor Vafeiadis, Thibaut Balabonski, Soham Chakraborty, Robin Morisset, and Francesco Zappa Nardelli. 2015. Common Compiler Optimisations Are Invalid in the C11 Memory Model and What We Can Do about It. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). Association for Computing Machinery, New York, NY, USA. 209–220. isbn:9781450333009 https://doi.org/10.1145/2676726.2676995 10.1145/2676726.2676995 Stephen Williams. 2023. Icarus Verilog. https://steveicarus.github.io/iverilog John Fiskio-Lasseter and Amr Sabry. 1999. Putting Operational Techniques to the Test: A Syntactic Theory for Behavioral Verilog. Electronic Notes in Theoretical Computer Science, 26 (1999), 34–51. issn:1571-0661 https://doi.org/10.1016/S1571-0661(05)80282-8 HOOTS ’99, Higher Order Operational Techniques in Semantics 10.1016/S1571-0661(05)80282-8 Andreas Lööw and Magnus O. Myreen. 2019. A proof-producing translator for verilog development in HOL. In Proceedings of the 7th International Workshop on Formal Methods in Software Engineering, FormaliSE@ICSE 2019, Montreal, QC, Canada, May 27, 2019, Stefania Gnesi, Nico Plat, Nancy A. Day, and Matteo Rossi (Eds.). IEEE / ACM, 99–108. https://doi.org/10.1109/FormaliSE.2019.00020 10.1109/FormaliSE.2019.00020 Andreas Lööw. 2022. A small, but important, concurrency problem in Verilog’s semantics? (Work in progress). In 20th ACM-IEEE International Conference on Formal Methods and Models for System Design, MEMOCODE 2022, Shanghai, China, October 13-14, 2022. IEEE, 1–6. https://doi.org/10.1109/MEMOCODE57689.2022.9954591 10.1109/MEMOCODE57689.2022.9954591 Michael J. C. Gordon. 1995. The Semantic Challenge of Verilog HDL. In Proceedings, 10th Annual IEEE Symposium on Logic in Computer Science, San Diego, California, USA, June 26-29, 1995. IEEE Computer Society, 136–145. https://doi.org/10.1109/LICS.1995.523251 10.1109/LICS.1995.523251 Huibiao Zhu, Jifeng He, and Jonathan P. Bowen. 2008. From algebraic semantics to denotational semantics for Verilog. Innov. Syst. Softw. Eng., 4, 4 (2008), 341–360. https://doi.org/10.1007/s11334-008-0069-9 10.1007/s11334-008-0069-9 2006. IEEE Standard for Verilog Hardware Description Language. IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001), 1–590. https://doi.org/10.1109/IEEESTD.2006.99495 10.1109/IEEESTD.2006.99495 Adam M. Izraelevitz, Jack Koenig, Patrick Li, Richard Lin, Angie Wang, Albert Magyar, Donggyu Kim, Colin Schmidt, Chick Markley, Jim Lawson, and Jonathan Bachrach. 2017. Reusability is FIRRTL ground: Hardware construction languages, compiler frameworks, and transformations. In 2017 IEEE/ACM International Conference on Computer-Aided Design, ICCAD 2017, Irvine, CA, USA, November 13-16, 2017, Sri Parameswaran (Ed.). IEEE, 209–216. https://doi.org/10.1109/ICCAD.2017.8203780 10.1109/ICCAD.2017.8203780 Leonardo Mendonça de Moura and Nikolaj S. Bjørner. 2008. Z3: An Efficient SMT Solver. In Tools and Algorithms for the Construction and Analysis of Systems, 14th International Conference, TACAS 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, 2008. Proceedings, C. R. Ramakrishnan and Jakob Rehof (Eds.) (Lecture Notes in Computer Science, Vol. 4963). Springer, 337–340. https://doi.org/10.1007/978-3-540-78800-3_24 10.1007/978-3-540-78800-3_24 Qinlin Chen, Nairen Zhang, Jinpeng Wang, Tian Tan, Chang Xu, Xiaoxing Ma, and Yue Li. 2023. The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog (Supplementary Material). https://doi.org/10.5281/zenodo.8321324 10.5281/zenodo.8321324 Wilson Snyder. 2023. vppreproc. https://metacpan.org/dist/Verilog-Perl/view/vppreproc Joe Gibbs Politz, Matthew J. Carroll, Benjamin S. Lerner, Justin Pombrio, and Shriram Krishnamurthi. 2012. A Tested Semantics for Getters, Setters, and Eval in JavaScript. In Proceedings of the 8th Symposium on Dynamic Languages (DLS ’12). Association for Computing Machinery, New York, NY, USA. 1–16. isbn:9781450315647 https://doi.org/10.1145/2384577.2384579 10.1145/2384577.2384579 Scott Beamer and David Donofrio. 2020. Efficiently Exploiting Low Activity Factors to Accelerate RTL Simulation. In 57th ACM/IEEE Design Automation Conference, DAC 2020, San Francisco, CA, USA, July 20-24, 2020. IEEE, 1–6. https://doi.org/10.1109/DAC18072.2020.9218632 10.1109/DAC18072.2020.9218632 Yann Herklotz, James D. Pollard, Nadesh Ramanathan, and John Wickerson. 2021. Formal verification of high-level synthesis. Proc. ACM Program. Lang., 5, OOPSLA (2021), 1–30. https://doi.org/10.1145/3485494 10.1145/3485494 Wilson Snyder. 2023. Verilator. https://veripool.org/verilator/documentation Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed Automated Random Testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’05). Association for Computing Machinery, New York, NY, USA. 213–223. isbn:1595930566 https://doi.org/10.1145/1065010.1065036 10.1145/1065010.1065036 Tomás Grimm, Djones Lettnin, and Michael Hübner. 2018. A Survey on Formal Verification Techniques for Safety-Critical Systems-on-Chip. Electronics, 7, 6 (2018), issn:2079-9292 https://doi.org/10.3390/electronics7060081 10.3390/electronics7060081 Zhu Huibiao and He Jifeng. 2000. A DC-based Semantics for Verilog. In Published in the pr Huibiao Zhu (e_1_2_1_20_1) 2000 e_1_2_1_40_1 e_1_2_1_23_1 e_1_2_1_24_1 e_1_2_1_21_1 e_1_2_1_27_1 Kaufmann Matt (e_1_2_1_22_1) e_1_2_1_28_1 e_1_2_1_25_1 e_1_2_1_26_1 Golson Steve (e_1_2_1_12_1) e_1_2_1_29_1 He Jifeng (e_1_2_1_17_1) 2000 e_1_2_1_7_1 e_1_2_1_31_1 e_1_2_1_8_1 e_1_2_1_30_1 e_1_2_1_5_1 e_1_2_1_6_1 e_1_2_1_3_1 e_1_2_1_35_1 e_1_2_1_4_1 e_1_2_1_13_1 e_1_2_1_34_1 e_1_2_1_1_1 e_1_2_1_10_1 e_1_2_1_33_1 e_1_2_1_2_1 e_1_2_1_11_1 e_1_2_1_32_1 e_1_2_1_16_1 e_1_2_1_39_1 e_1_2_1_38_1 e_1_2_1_14_1 e_1_2_1_37_1 e_1_2_1_15_1 e_1_2_1_36_1 e_1_2_1_9_1 e_1_2_1_18_1 e_1_2_1_19_1 |
| References_xml | – reference: Terence Parr. 2013. The definitive ANTLR 4 reference. The Definitive ANTLR 4 Reference, 1–326. – reference: Hasini Witharana, Yangdi Lyu, Subodha Charles, and Prabhat Mishra. 2022. A Survey on Assertion-Based Hardware Verification. ACM Comput. Surv., 54, 11s (2022), Article 225, sep, 33 pages. issn:0360-0300 https://doi.org/10.1145/3510578 10.1145/3510578 – reference: Michael J. C. Gordon. 1995. The Semantic Challenge of Verilog HDL. In Proceedings, 10th Annual IEEE Symposium on Logic in Computer Science, San Diego, California, USA, June 26-29, 1995. IEEE Computer Society, 136–145. https://doi.org/10.1109/LICS.1995.523251 10.1109/LICS.1995.523251 – reference: Alif Ahmed, Farimah Farahmandi, and Prabhat Mishra. 2018. Directed test generation using concolic testing on RTL models. In 2018 Design, Automation & Test in Europe Conference & Exhibition, DATE 2018, Dresden, Germany, March 19-23, 2018, Jan Madsen and Ayse K. Coskun (Eds.). IEEE, 1538–1543. https://doi.org/10.23919/DATE.2018.8342260 10.23919/DATE.2018.8342260 – reference: Arjun Guha, Claudiu Saftoiu, and Shriram Krishnamurthi. 2010. The Essence of JavaScript. In ECOOP 2010 - Object-Oriented Programming, 24th European Conference, Maribor, Slovenia, June 21-25, 2010. Proceedings, Theo D’Hondt (Ed.) (Lecture Notes in Computer Science, Vol. 6183). Springer, 126–150. https://doi.org/10.1007/978-3-642-14107-2_7 10.1007/978-3-642-14107-2_7 – reference: Huibiao Zhu, Jifeng He, and Jonathan P. Bowen. 2008. From algebraic semantics to denotational semantics for Verilog. Innov. Syst. Softw. Eng., 4, 4 (2008), 341–360. https://doi.org/10.1007/s11334-008-0069-9 10.1007/s11334-008-0069-9 – reference: Qinlin Chen, Nairen Zhang, Jinpeng Wang, Tian Tan, Chang Xu, Xiaoxing Ma, and Yue Li. 2023. The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog (Supplementary Material). https://doi.org/10.5281/zenodo.8321324 10.5281/zenodo.8321324 – reference: Scott Beamer and David Donofrio. 2020. Efficiently Exploiting Low Activity Factors to Accelerate RTL Simulation. In 57th ACM/IEEE Design Automation Conference, DAC 2020, San Francisco, CA, USA, July 20-24, 2020. IEEE, 1–6. https://doi.org/10.1109/DAC18072.2020.9218632 10.1109/DAC18072.2020.9218632 – reference: Patrick O’Neil Meredith, Michael Katelman, José Meseguer, and Grigore Rosu. 2010. A formal executable semantics of Verilog. In 8th ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE 2010), Grenoble, France, 26-28 July 2010. IEEE Computer Society, 179–188. https://doi.org/10.1109/MEMCOD.2010.5558634 10.1109/MEMCOD.2010.5558634 – reference: Viktor Vafeiadis, Thibaut Balabonski, Soham Chakraborty, Robin Morisset, and Francesco Zappa Nardelli. 2015. Common Compiler Optimisations Are Invalid in the C11 Memory Model and What We Can Do about It. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). Association for Computing Machinery, New York, NY, USA. 209–220. isbn:9781450333009 https://doi.org/10.1145/2676726.2676995 10.1145/2676726.2676995 – reference: Jifeng He and Qiwen Xu. 2000. An Operational Semantics of a Simulator Algorithm. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2000, June 24-29, 2000, Las Vegas, Nevada, USA, Hamid R. Arabnia (Ed.). CSREA Press. – reference: Matt Kaufmann, Panagiotis Manolios, and J Strother Moore. 2013. Computer-aided reasoning: ACL2 case studies. 4, Springer Science & Business Media. – reference: José Meseguer and Grigore Rosu. 2007. The rewriting logic semantics project. Theoretical Computer Science, 373, 3 (2007), 213–237. issn:0304-3975 https://doi.org/10.1016/j.tcs.2006.12.018 10.1016/j.tcs.2006.12.018 – reference: Leonardo Mendonça de Moura and Nikolaj S. Bjørner. 2008. Z3: An Efficient SMT Solver. In Tools and Algorithms for the Construction and Analysis of Systems, 14th International Conference, TACAS 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, 2008. Proceedings, C. R. Ramakrishnan and Jakob Rehof (Eds.) (Lecture Notes in Computer Science, Vol. 4963). Springer, 337–340. https://doi.org/10.1007/978-3-540-78800-3_24 10.1007/978-3-540-78800-3_24 – reference: Joe Gibbs Politz, Alejandro Martinez, Mae Milano, Sumner Warren, Daniel Patterson, Junsong Li, Anand Chitipothu, and Shriram Krishnamurthi. 2013. Python: The Full Monty. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). Association for Computing Machinery, New York, NY, USA. 217–232. isbn:9781450323741 https://doi.org/10.1145/2509136.2509536 10.1145/2509136.2509536 – reference: Andreas Lööw. 2022. A small, but important, concurrency problem in Verilog’s semantics? (Work in progress). In 20th ACM-IEEE International Conference on Formal Methods and Models for System Design, MEMOCODE 2022, Shanghai, China, October 13-14, 2022. IEEE, 1–6. https://doi.org/10.1109/MEMOCODE57689.2022.9954591 10.1109/MEMOCODE57689.2022.9954591 – reference: Jonathan Balkind, Michael McKeown, Yaosheng Fu, Tri Nguyen, Yanqi Zhou, Alexey Lavrov, Mohammad Shahrad, Adi Fuchs, Samuel Payne, Xiaohua Liang, Matthew Matl, and David Wentzlaff. 2016. OpenPiton: An Open Source Manycore Research Framework. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16). ACM, New York, NY, USA. 217–232. isbn:978-1-4503-4091-5 https://doi.org/10.1145/2872362.2872414 10.1145/2872362.2872414 – reference: Xingyu Meng, Shamik Kundu, Arun K. Kanuparthi, and Kanad Basu. 2022. RTL-ConTest: Concolic Testing on RTL for Detecting Security Vulnerabilities. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst., 41, 3 (2022), 466–477. https://doi.org/10.1109/TCAD.2021.3066560 10.1109/TCAD.2021.3066560 – reference: Jifeng He and Huibiao Zhu. 2000. Formalising VERILOG. In Proceedings of the 2000 7th IEEE International Conference on Electronics, Circuits and Systems, ICECS 2000, Jounieh, Lebanon, December 17-20, 2000. IEEE, 412–415. https://doi.org/10.1109/ICECS.2000.911568 10.1109/ICECS.2000.911568 – reference: Yann Herklotz, James D. Pollard, Nadesh Ramanathan, and John Wickerson. 2021. Formal verification of high-level synthesis. Proc. ACM Program. Lang., 5, OOPSLA (2021), 1–30. https://doi.org/10.1145/3485494 10.1145/3485494 – reference: John Fiskio-Lasseter and Amr Sabry. 1999. Putting Operational Techniques to the Test: A Syntactic Theory for Behavioral Verilog. Electronic Notes in Theoretical Computer Science, 26 (1999), 34–51. issn:1571-0661 https://doi.org/10.1016/S1571-0661(05)80282-8 HOOTS ’99, Higher Order Operational Techniques in Semantics 10.1016/S1571-0661(05)80282-8 – reference: Joe Gibbs Politz, Matthew J. Carroll, Benjamin S. Lerner, Justin Pombrio, and Shriram Krishnamurthi. 2012. A Tested Semantics for Getters, Setters, and Eval in JavaScript. In Proceedings of the 8th Symposium on Dynamic Languages (DLS ’12). Association for Computing Machinery, New York, NY, USA. 1–16. isbn:9781450315647 https://doi.org/10.1145/2384577.2384579 10.1145/2384577.2384579 – reference: Tomás Grimm, Djones Lettnin, and Michael Hübner. 2018. A Survey on Formal Verification Techniques for Safety-Critical Systems-on-Chip. Electronics, 7, 6 (2018), issn:2079-9292 https://doi.org/10.3390/electronics7060081 10.3390/electronics7060081 – reference: Lenny Truong and Pat Hanrahan. 2019. A Golden Age of Hardware Description Languages: Applying Programming Language Techniques to Improve Design Productivity. In 3rd Summit on Advances in Programming Languages, SNAPL 2019, May 16-17, 2019, Providence, RI, USA, Benjamin S. Lerner, Rastislav Bodík, and Shriram Krishnamurthi (Eds.) (LIPIcs, Vol. 136). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 7:1–7:21. https://doi.org/10.4230/LIPIcs.SNAPL.2019.7 10.4230/LIPIcs.SNAPL.2019.7 – reference: Shriram Krishnamurthi. 2015. Desugaring in Practice: Opportunities and Challenges. In Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation (PEPM ’15). Association for Computing Machinery, New York, NY, USA. 1–2. isbn:9781450332972 https://doi.org/10.1145/2678015.2678016 10.1145/2678015.2678016 – reference: Andreas Lööw and Magnus O. Myreen. 2019. A proof-producing translator for verilog development in HOL. In Proceedings of the 7th International Workshop on Formal Methods in Software Engineering, FormaliSE@ICSE 2019, Montreal, QC, Canada, May 27, 2019, Stefania Gnesi, Nico Plat, Nancy A. Day, and Matteo Rossi (Eds.). IEEE / ACM, 99–108. https://doi.org/10.1109/FormaliSE.2019.00020 10.1109/FormaliSE.2019.00020 – reference: Shriram Krishnamurthi, Benjamin S. Lerner, and Liam Elberty. 2019. The Next 700 Semantics: A Research Challenge. In 3rd Summit on Advances in Programming Languages, SNAPL 2019, May 16-17, 2019, Providence, RI, USA, Benjamin S. Lerner, Rastislav Bodík, and Shriram Krishnamurthi (Eds.) (LIPIcs, Vol. 136). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 9:1–9:14. https://doi.org/10.4230/LIPIcs.SNAPL.2019.9 10.4230/LIPIcs.SNAPL.2019.9 – reference: Wilson Snyder. 2023. vppreproc. https://metacpan.org/dist/Verilog-Perl/view/vppreproc – reference: Steve Golson and Leah Clark. 2016. Language wars in the 21st century: verilog versus vhdl–revisited. Synopsys Users Group (SNUG). – reference: Jordan Dimitrov. 2001. Operational Semantics for Verilog. In 8th Asia-Pacific Software Engineering Conference (APSEC 2001), 4-7 December 2001, Macau, China. IEEE Computer Society, 161–168. https://doi.org/10.1109/APSEC.2001.991473 10.1109/APSEC.2001.991473 – reference: 2006. IEEE Standard for Verilog Hardware Description Language. IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001), 1–590. https://doi.org/10.1109/IEEESTD.2006.99495 10.1109/IEEESTD.2006.99495 – reference: Wilson Snyder. 2023. Verilator. https://veripool.org/verilator/documentation/ – reference: Jonathan Bachrach, Huy Vo, Brian Richards, Yunsup Lee, Andrew Waterman, Rimas Avižienis, John Wawrzynek, and Krste Asanović. 2012. Chisel: Constructing Hardware in a Scala Embedded Language. In Proceedings of the 49th Annual Design Automation Conference (DAC ’12). Association for Computing Machinery, New York, NY, USA. 1216–1225. isbn:9781450311991 https://doi.org/10.1145/2228360.2228584 10.1145/2228360.2228584 – reference: Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed Automated Random Testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’05). Association for Computing Machinery, New York, NY, USA. 213–223. isbn:1595930566 https://doi.org/10.1145/1065010.1065036 10.1145/1065010.1065036 – reference: Qinlin Chen, Nairen Zhang, Jinpeng Wang, Tian Tan, Chang Xu, Xiaoxing Ma, and Yue Li. 2023. The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog (Artifact). https://doi.org/10.5281/zenodo.8320642 10.5281/zenodo.8320642 – reference: Adam M. Izraelevitz, Jack Koenig, Patrick Li, Richard Lin, Angie Wang, Albert Magyar, Donggyu Kim, Colin Schmidt, Chick Markley, Jim Lawson, and Jonathan Bachrach. 2017. Reusability is FIRRTL ground: Hardware construction languages, compiler frameworks, and transformations. In 2017 IEEE/ACM International Conference on Computer-Aided Design, ICCAD 2017, Irvine, CA, USA, November 13-16, 2017, Sri Parameswaran (Ed.). IEEE, 209–216. https://doi.org/10.1109/ICCAD.2017.8203780 10.1109/ICCAD.2017.8203780 – reference: Michael J. C. Gordon. 2002. Relating Event and Trace Semantics of Hardware Description Languages. Comput. J., 45, 1 (2002), 27–36. https://doi.org/10.1093/comjnl/45.1.27 10.1093/comjnl/45.1.27 – reference: Zhu Huibiao and He Jifeng. 2000. A DC-based Semantics for Verilog. In Published in the proceedings of the ICS2000, Yulin Feng, David Notkin and Marie-Claude Gaudel (eds), Beijing. 421–432. – reference: Fabian Schuiki, Andreas Kurth, Tobias Grosser, and Luca Benini. 2020. LLHD: A Multi-Level Intermediate Representation for Hardware Description Languages. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA. 258–271. isbn:9781450376136 https://doi.org/10.1145/3385412.3386024 10.1145/3385412.3386024 – reference: Stephen Williams. 2023. Icarus Verilog. https://steveicarus.github.io/iverilog/ – volume-title: Language wars in the 21st century: verilog versus vhdl–revisited ident: e_1_2_1_12_1 – ident: e_1_2_1_29_1 doi: 10.1016/j.tcs.2006.12.018 – ident: e_1_2_1_35_1 – ident: e_1_2_1_3_1 doi: 10.1145/2228360.2228584 – ident: e_1_2_1_33_1 doi: 10.1145/3385412.3386024 – ident: e_1_2_1_38_1 – ident: e_1_2_1_39_1 doi: 10.1145/3510578 – ident: e_1_2_1_2_1 doi: 10.23919/DATE.2018.8342260 – ident: e_1_2_1_15_1 doi: 10.3390/electronics7060081 – ident: e_1_2_1_36_1 doi: 10.4230/LIPIcs.SNAPL.2019.7 – ident: e_1_2_1_31_1 doi: 10.1145/2384577.2384579 – ident: e_1_2_1_14_1 doi: 10.1093/comjnl/45.1.27 – ident: e_1_2_1_16_1 doi: 10.1007/978-3-642-14107-2_7 – ident: e_1_2_1_1_1 doi: 10.1109/IEEESTD.2006.99495 – ident: e_1_2_1_6_1 doi: 10.5281/zenodo.8320642 – volume-title: Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2000 year: 2000 ident: e_1_2_1_17_1 – ident: e_1_2_1_9_1 doi: 10.1109/APSEC.2001.991473 – ident: e_1_2_1_25_1 doi: 10.1109/MEMOCODE57689.2022.9954591 – ident: e_1_2_1_11_1 doi: 10.1145/1065010.1065036 – ident: e_1_2_1_34_1 – ident: e_1_2_1_13_1 doi: 10.1109/LICS.1995.523251 – ident: e_1_2_1_23_1 doi: 10.1145/2678015.2678016 – ident: e_1_2_1_7_1 doi: 10.5281/zenodo.8321324 – ident: e_1_2_1_28_1 doi: 10.1109/MEMCOD.2010.5558634 – ident: e_1_2_1_40_1 doi: 10.1007/s11334-008-0069-9 – ident: e_1_2_1_24_1 doi: 10.4230/LIPIcs.SNAPL.2019.9 – ident: e_1_2_1_26_1 doi: 10.1109/FormaliSE.2019.00020 – volume-title: Computer-aided reasoning: ACL2 case studies. 4 ident: e_1_2_1_22_1 – ident: e_1_2_1_27_1 doi: 10.1109/TCAD.2021.3066560 – ident: e_1_2_1_10_1 doi: 10.1016/S1571-0661(05)80282-8 – ident: e_1_2_1_4_1 doi: 10.1145/2872362.2872414 – ident: e_1_2_1_8_1 doi: 10.1007/978-3-540-78800-3_24 – ident: e_1_2_1_18_1 doi: 10.1109/ICECS.2000.911568 – ident: e_1_2_1_19_1 doi: 10.1145/3485494 – ident: e_1_2_1_37_1 doi: 10.1145/2676726.2676995 – ident: e_1_2_1_30_1 – volume-title: Published in the proceedings of the ICS2000 year: 2000 ident: e_1_2_1_20_1 – ident: e_1_2_1_21_1 doi: 10.1109/ICCAD.2017.8203780 – ident: e_1_2_1_32_1 doi: 10.1145/2509136.2509536 – ident: e_1_2_1_5_1 doi: 10.1109/DAC18072.2020.9218632 |
| SSID | ssj0001934839 |
| Score | 2.2692423 |
| Snippet | With the increasing need to apply modern software techniques to hardware design, Verilog, the most popular Hardware Description Language (HDL), plays an... |
| SourceID | crossref acm |
| SourceType | Enrichment Source Index Database Publisher |
| StartPage | 234 |
| SubjectTerms | Hardware Hardware description languages and compilation Semantics Software and its engineering |
| SubjectTermsDisplay | Hardware -- Hardware description languages and compilation Software and its engineering -- Semantics |
| Title | The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog |
| URI | https://dl.acm.org/doi/10.1145/3622805 |
| Volume | 7 |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1LTxsxELZS2kMvlNJWpC3IB9QL2nbjeGO7tygCIQRJKkLLLVq_pEhkiRJAnPov-n87fi2rUKntgcsqsjybyPNlZnZ2vhmE9rXsaUNVkTFlexlYP5uVmsqMEFNypRXJpScKn7LhkF9einGr9StxYe6uWFXx-3uxeFJVwxoo21Fn_0Pd9U1hAT6D0uEKaofrPyv-cLXy_1iIBL_Dd4J9Cwz0ieNEebKUy5dPfK7zYLQwy5QSPDdzOGrXudmVH0bZZgA7rh2erwHpD87c64ZY5TV3eYeUAa2D9UEkgHybua4cjzLVw3LW4KP9iKsns2pholf1iYUwRTmBOeYpiK94CzTKYM4IZUXWoYEP_dn8YS3aY9aA3Wg0Pj_tk6aFjbnP4KxJsI6P_QB1LTPAOROeFw-uLr3eX_OAdV1iYGkX0yj4DD0nrBCuUvDsZyN1J7qU-xl19e8PdGwn-yXKumhHzRvRTiNsmWyhzfi8gfsBJ69Ry1Tb6FWa5YGjaX-DxgAbHGGDry2Oqv-K-7gGDQbQ4AAa3AANrkGDATRJ8i26ODqcDI6zOG0jKyHKL7JC8tIyLiTnBuIZ5YJLmXdLVubCGBfb61IpabS1QrLcdiXVwhpJtCWKS9F9hzaq68rsIMxNR_YkBzFmKbUgpCSXWhCm844lvI224Wymi9BPJZ12G31KZzVVsUG9m5NyNV1TSxvhemO6x9qW93_f8gG9fIDpR7Rxs7w1u-iFuruZrZZ7XuO_AWdafhc |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=The+Essence+of+Verilog%3A+A+Tractable+and+Tested+Operational+Semantics+for+Verilog&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Chen%2C+Qinlin&rft.au=Zhang%2C+Nairen&rft.au=Wang%2C+Jinpeng&rft.au=Tan%2C+Tian&rft.date=2023-10-16&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=7&rft.issue=OOPSLA2&rft.spage=234&rft.epage=263&rft_id=info:doi/10.1145%2F3622805&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3622805 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |