As the use of SystemC transaction-level models (TLM) increases in verification environments, there's a growing need to connect SystemC TLM 2.0 models to hardware verification language testbenches. A newly archived webinar details a new interface that links the Specman e language to SystemC TLM 2.0 models.
Originally given Sept. 11, 2012, the webinar is titled "No More Wrappers - New Interface Between e and SystemC TLM 2.0." The webinar was presented by Hannes Froehlich, solutions architect at Cadence and author of a recent whitepaper, "Interface Additions to the e Language for Effective Communication with SystemC TLM 2.0 Models" (you can read my earlier summary of the whitepaper here). The webinar gives you a more interactive presentation of the same material along with a demo.
Kishore Karnane, product marketing manager for Specman, gave a brief introduction at the start of the webinar. "In the last several years we've seen a lot of interest in SystemC TLM models for high-level modeling," he said. "It's important to provide a convenient mechanism to interact with these high-level models from a testbench." He noted that the Specman e language interface was created following customer demand.
Sockets and Generic Payload
Froehlich provided a very brief review of the TLM 2.0 standard, and showed the following slide, which depicts an interoperability layer for modeling memory-mapped busses that includes sockets and core interfaces. Of particular note is the generic payload, which contains control attributes and data. The generic payload "means that any model compliant with TLM 2.0 can communicate with another model that uses the same standard," he said.
The e language TLM 2.0 interface is based on communicating via sockets, and passing the generic payload across a multi-language boundary. Froehlich went into detail about core interfaces and sockets, the generic payload, and a base protocol that determines sequences of requests and responses. He showed how the TLM interface uses blocking and non-blocking transport functions between initiator sockets and target sockets.
Some e language additions were needed to allow e-to-SystemC TLM communication. They include the following:
- Two new kinds of ports to represent sockets: tlm_target_socket and tlm_initiator_socket
- Two new structs - tlm_generic_payload and tlm_extension
- Enumerated types required for transport functions, including tlm_phase_enum, tlm_command, tlm_response_status, tlm_sync_enum, and tlm_endianness
- Extended functionality for ml_uvm (multi-language) objects
In general, naming follows SystemC conventions, and the e language code looks very similar to SystemC, Froehlich said.
What about additions to SystemC? Very little is required here, although users must enable the multi-language functionality of Incisive. To do so, they must include the ml_tlm2.h header file. This file contains declarations of the multi-language TLM 2.0 interface functions and field registration macros.
Froehlich's slide presentation only took about 20 minutes and was followed by a 15-minute demo and a question-and-answer session. His summary: "We added a carbon copy of sockets and transport interface functions to enable you to directly communicate with SystemC TLM 2.0 sockets. So there is no need to write extra e or SystemC code - you can connect directly. There is nothing to do apart from registering sockets for multi-language communications."
The webinar is available here.