Jump to content

SystemC-AMS learning resources/examples

Recommended Posts

Hi guys, 
I've recently started learning SystemC-AMS, just for fun mainly.
On my learning path I've figured out that:

  1. There is no any good text book on SystemC-AMS available (except of SystemC and SystemC-AMS in Practice: SystemC 2.3, 2.2 and SystemC-AMS 1.0, which doesn't seems to be good neither according to customers review with overall grade 1 out of 5)
  2. There are few examples on the web available, so it's hard to learn by reviewing what other people are doing
  3. There are few educational resources available, probably the most useful (at least for me) was SystemC AMS Extensions User’s Guide (dated 2010-03-08), which seems to be outdated (for instance it mentions usage of set_timeoffset() member function which is deprecated in SystemC AMS 2.0 Analog/Mixed-signal (AMS) Language Reference Manual (dated 2016-08-12)). In some other posts on this forum I saw @Martin Barnasconi mentioning that UM is presently being updated by the committee.
  4. While googling you can find a bunch of scientific/research papers and presentations on the topic, but a holistic examples are rarely given, most often just code snippets are present.

In this post I'd like to share an SystemC-AMS implementation of Algorithmic (Cyclic) ADC.
The example uses TDF and DE domains showcasing the aspects of TDF<->DE domain crossing discussed in the SystemC AMS Extensions User’s Guide.
It can be found here.

Being a Simulink user I was wondering about simulation performance improvement the SystemC-AMS gives.
Some scientific papers I was able to find touching this topic reported 5-10 times improvement.
For this example of Algorithmic ADC implementation also a Simulink model was created (located in same repository here).
Relevant modelling techniques was used in both SystemC-AMS and Simulink models, so the comparison is pretty much an apple-to-apple.

It can be seen by running both models that SystemC-AMS model gives around 20x simulation time improvement over Simulink model.
The Simulink simulates 11*2048 cycles in about 1.5 seconds, while SystemC-AMS simulates same amount of cycles in just 0.067 seconds.
That is remarkable improvement of simulation speed.

I hope this post will be helpful for others who learn SystemC-AMS.
Please feel free to comment to this post with useful materials/examples to help others on their learning way. I'd love to hear if you guys knows other great resources that helped you.



Share this post

Link to post
Share on other sites

Indeed, the Accellera SystemC AMS working group is currently active in updating the SystemC AMS user's guide, including an detailed explanation of the dynamic TDF features introduced since SystemC AMS 2.0 (and also incorporated in the IEEE 1666.1 standard) and obviously removing deprecated methods.

Examples have been presented in various workshops and tutorials given the last decade at DATE, DVCon Europe, DAC conferences. Please check the SystemC AMS community pages for some of the links.


The "golden reference" for SystemC AMS documentation is actually the IEEE 1666.1 standard itself. Although it might require some practice to understand all the formal definitins and terms, it well explains the underlying concept and the modeling capabilities of the language. The standard can be found here, and thanks to Accellera you can download a copy via the IEEE Get Program here:


It is well known that SystemC AMS is much faster than Simulink. Actually I consider your 20x speed improvement rather modest, probably since your design is relatively small (this also holds for most of the academic papers I've seen). My observation is that bigger systems in SystemC-AMS show an even bigger speed difference in favor of SystemC-AMS.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now