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...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages Jg. 7; H. OOPSLA2; S. 234 - 263
Hauptverfasser: Chen, Qinlin, Zhang, Nairen, Wang, Jinpeng, Tan, Tian, Xu, Chang, Ma, Xiaoxing, Li, Yue
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