Accellera SystemC Standards Update SystemC Evolution Day 2022 Martin Barnasconi Accellera Technical Committee Chair accellera.org © Accellera Systems Initiative 1 Outline • • • • • • Accellera Systems Initiative & Working Groups SystemC ecosystem SystemC Working Groups Updates Public Repositories systemc.org Updates How to join us © Accellera Systems Initiative 2 Accellera Systems Initiative Our Mission To provide a platform in which the electronics industry can collaborate to innovate and deliver global standards that improve design and verification productivity for electronics products. © Accellera Systems Initiative 3 Accellera Working Groups Verification-centric Working Groups Portable Stimulus MultiLanguage UVM UVM-AMS SystemC Working Groups Language SV-AMS DT AMS CPS Verification Synthesis Working Groups in other domains Functional Safety IP-XACT © Accellera Systems Initiative IP Security Assurance 4 CDC / RDC CCI SystemC ecosystem • SystemC is a C++-based language standard, widely used for Writ t en by t he End User CPS Met hodology- and Technology-specific Libraries TLM IEEE St d. 1666-2011 – System-level modeling, design and verification – Architectural exploration, performance modeling – Analog/mixed signal modeling – High-level Synthesis – Software development Applicat ion • Released as IEEE standards AMS CCI SCV IEEE St d. 1666.1-2016 Syst em C Core Language St ruct ural Elem ent s Predefined Channels Modules Port s Export s Int erfaces Channels Signal, clock, FIFO, m ut ex, sem aphore Ut ilit ies Dat a Types Report handling, t racing 4-valued logic t ype 4-valued logic vect ors Bit vect ors Finit e-precision int egers Lim it ed-precision int egers Fixed-point t ypes Event -driven Sim ulat ion Event s, processes – IEEE Std. 1666-2011 (SystemC) – IEEE Std. 1666.1-2016 (SystemC AMS) Program m ing Language C+ + ISO/IEC St d. 14882-2003 More information: https://systemc.org/ © Accellera Systems Initiative 5 UVMSyst em C Accellera SystemC Working Groups • SystemC Language Working Group (LWG) – Chair: Laurent Maillet-Contoz (ST) – Subgroups • Common Practices (SCP): Chair: Mark Burton (Qualcomm) • SystemC Datatypes (DT), Chair: Frederic Doucet (Qualcomm) • SystemC Analog/Mixed-Signal Working Group (AMSWG) – Chair: Martin Barnasconi (NXP) • SystemC Configuration, Control & Inspection Working Group (CCIWG) – Chair: Ola Dahl (Ericsson) • SystemC Synthesis Working Group (SWG) – Chair: Andres Takach (Mentor) • SystemC Verification Working Group (VWG) – Chair: Stephan Gerth (Bosch) © Accellera Systems Initiative 6 SystemC Language Working Group • Main activities this year – Propose and review Language Reference Manual updates from/to IEEE-SA P1666 – Validating new and updated API for the next revision of the SystemC standard – `Sanitizing` SystemC reference implementation (2.3.4) including other coding improvements focusing on stability, robustness and scalability • SystemC 2.3.4 has been released on the Accellera public repository on GitHub! – https://github.com/accellera-official/systemc/tags • Activities in the subgroups – Ongoing study to improve performance of updated SystemC datatypes – Growing collection of SystemC Common Practices thanks to community contributions • Future plans – Revamp SystemC regression environment – leveraging automation in GitHub – Release SystemC reference implementation the next revision of the IEEE SystemC standard © Accellera Systems Initiative 7 SystemC Common Practices Working Group • The SystemC Common Practices Working Group ‘grew’ from SystemC Evolution Day – please be proud! And PLEASE contribute. • The repository is public: https://github.com/accellera-official/systemc-common-practices • There are a growing range of “common practice” items already in and more on the way • A big block this year is an extensive, efficient and easy to use reporting library © Accellera Systems Initiative 8 SystemC Common Practices - New this year • Initial extensions and CCI parameter definitions – WIP • Reporting library scp_debug(SCMOD) << “You text stream”; – Support fatal, error, warning, info, debug and trace. – Extremely efficient (optimized so you can use everywhere in your code). – Controllable by CCI parameters (e.g. top.my.module.log_level=4) • CCI params ‘hierarchical’ (e.g. top.log_level = 1 applies to lower level modules) – Uses sc_report_handler::report under the hood, so as to ‘play nicely’ with existing SystemC code, and with the standard. – Many formatting options (implemented through the SC_REPORT_ mechanisms). – (optionally) Uses spdlog which also handles async logging © Accellera Systems Initiative 9 SystemC Common Practices - Next year… • Registers … – The CCI WG is currently looking into the interface, our plan is to provide an implementation. • Multi-threading and Multi-process – See talk later today !!!! – Will include ‘multi-threaded’ quantum keepers, and multi-process bridges. Anything else you would like to see? What could you contribute? © Accellera Systems Initiative 10 Data types Working Group • Simulation performance improvements for sc_bigint and sc_biguint – implemented and verified in branch – will be merged into mainline after 2.3.4 release • Future work (2023) – – – – – Future improvements to datatypes speed (sc_int) Header only include Type traits (constexpr access to number of bits, rounding mode, etc) Derived types (“grow by 1 bits”, “remove two bits and round”, “add saturation” etc) New data types being considered: sc_complex and sc_float Please join and contribute! ☺ © Accellera Systems Initiative 11 SystemC Analog/Mixed-Signal (AMS) WG • Main activities this year Applicat ion • SystemC AMS regression suite will be released soon! – Covering more than 700 tests, covering unit-level tests, application-level tests and examples – Final testing being conducted with SystemC 2.3.4 and SystemC-AMS Proof-of-Concept library 2.4 delivered by Accellera member company Met hodology- and Technology-specific Libraries IEEE St d. 1666.1-2016 – Complete the SystemC AMS regression suite – Developing extensions and new features for the next revision of IEEE 1666.1 (SystemC-AMS) Writ t en by t he End User Syst em C Analog/Mixed-Signal (AMS) Language Tim ed Dat a Flow (TDF) Linear Signal Flow (LSF) Elect rical Linear Net works (ELN) Ut ilit ies and Dat a Types Modules, port s, signals, em bedded linear equat ions Predefined prim it ive m odules, port s, signals Predefined prim it ive m odules, t erm inals, nodes Com plex t ype Vect or t ype Mat rix t ype Const ant s Tracing Report ing Scheduler Linear DAE Solver Tim e-dom ain and sm all-signal frequency-dom ain sim ulat ion infrast ruct ure Syst em C Core Language IEEE St d. 1666 -2011 Program m ing Language C+ + ISO/IEC St d. 14882 -2003 More information https://systemc.org/overview/systemc-ams/ © Accellera Systems Initiative 12 SystemC Configuration, Control & Inspection WG Use ca se s • Main activities this year – Alignment with SystemC LWG on the use of cci_value vs. sc_any_value – Clean-up of CCI reference implementation with improved build infrastructure (automake and cmake) - CCI 1.0.1 being released soon! • CCI repository is now public: • Proposal reviewed for a Register / Memory Inspection API – Collaboration with SystemC Common Practices WG to coordinate implementation and testing 13 Analysis Aut horing Checkpoint , Reverse sim ulat ion St a n d a r d a b st r a ct ion s Param et ers Inspect ion Probes Save / Rest ore Com m ands M od e l in for m a t ion Configurat ion – https://github.com/accellera-official/cci © Accellera Systems Initiative Syst em debug St at e (regist ers, variables) Dat a (perform ance, power, st at s) More information https://systemc.org/overview/systemc-cci/ Build-in debug funct ionalit y SystemC Synthesis WG • The SystemC Synthesis Working Group is responsible for the SystemC synthesizable subset, to enable synthesis of digital hardware from high-level specifications • Current status – Released the SystemC Synthesis Subset Language Reference Manual version 1.4.7 in 2017 • Developments and future plans – Working Group defining next revision of the SystemC Synthesizable Subset, including: – Alignment and consolidation on SystemC Datatypes to enhance HLS flows – Update and finalize support of modern C++ language features defined in C++11/14/17 © Accellera Systems Initiative 14 SystemC Verification Working Group • Main activities this year Applicat ion Writ t en by t he End User – Development of UVM in SystemC standard and reference implementation – Standardization of Constrained Randomization API – Extending UVM-SystemC “UBUS example” in with Constrained Randomization using CRAVE • Release and public review of UVM-SystemC library 1.0beta4 earlier this year • Build-flow improvements and other enhancements in CRAVE implementation Syst em -level Verificat ion and Validat ion Met hodology UVM in Syst em C Com ponent s St im uli Regist er Layer Configurat ion Test , environm ent , agent , driver, m onit or, sequencer, scoreboard, subscriber Transact ion, sequence it em , sequence, virt ual sequence Regist ers, m em ories, address m aps, adapt or, predict or, backdoor access Regist ry, resource, resource dat abase, configurat ion dat abase, fact ory Random izat ion* (CRAVE) Funct ional coverage* (FC4SC) Tem poral assert ions* Random variables and object s, const raint s, const raint solvers Covergroups, bins, coverpoint s, crosses, t ype and inst ance, sam pling Im m ediat e and concurrent assert ions, com bining sequences Ut ilit ies report ing, recording, policies, phasing, callbacks Syst em C Core Language IEEE St d. 1666 -2011 Program m ing Language C+ + ISO/IEC St d. 14882 -2003 * Int egrat ion on Roadm ap More information https://systemc.org/overview/systemc-verification/ © Accellera Systems Initiative 15 Accellera Public Repositories • Accellera Public Repositories: https://github.com/accellera-official/ • SystemC Working Groups with public repositories – SystemC: https://github.com/accellera-official/systemc – CCI: https://github.com/accellera-official/cci – SystemC Common Practices: https://github.com/accellera-official/systemc-common-practices https://github.com/accellera-official/PySysC – SystemC.org website https://github.com/accellera-official/systemc.org • Objective to make more working group repositories public © Accellera Systems Initiative 16 systemc.org Updates • New content added in 2022 – SystemC overview pages covering all Working Groups – SystemC Evolution Day Events and Fikas: all presentations and videos – Open Access Publications – Libraries and Projects • YOU can help in adding content! – Submit your pull request to github.com/accellera-official/systemc.org © Accellera Systems Initiative 17 How to join us • Become an Accellera Working Group member – Join Accellera and participate in the Accellera working groups – Direct access to the latest standardization proposals and development implementations • Become a member of the IEEE Standards Association – Join IEEE-SA to participate in the IEEE P1666 (SystemC) working group • Share your experiences – Visit www.accellera.org and join the community forums at forums.accellera.org – Report your issues and/or create pull requests on the public SystemC GitHub repository • Help us to grow the SystemC ecosystem and community – Participate in community events such as the SystemC Evolution Day and Fika – Contribute to the SystemC Community Portal systemc.org – Promote the use of the SystemC standard in complex system simulation tasks © Accellera Systems Initiative 18 Thank You Q&A © Accellera Systems Initiative 19