Jump to content

Anton

Members
  • Content Count

    2
  • Joined

  • Last visited

Everything posted by Anton

  1. Hi, I have a question related to appropriate CCI usage in case of composite IP with top-level configuration parameters. Let's imagine we have a composite IP A that consists of IP B and C, making the A a composite IP, since it consists of multiple IPs. Now let's imagine IP B and C have clock frequency parameter associated. The name of parameter in IP A is clk_frequency and the name of parameter in IP B is clock_frequency. For a sake of better user experience let's image that IP A (a top level one, aggregating B and C) wants to provide a convince top level parameter named clk_freq to manipulate the value of two underlying parameters. And value of clk_freq parameter is not used in the IP A. Acc to example 11 provided in the CCI package a value of multiple parameters can be synchronized using the post write callback mechanism. So this approach can be used for synchronizing values of clk_frequency parameter of IP A with value of clock_frequency parameter of IP B. It's not particularly clear to me what is the best way to implement a top-level convenience parameter in A. The most straight forward way seems to be to implement a regular CCI parameter (cci::cci_param<T> param_name;) at IP A level and synchronize with one of the parameters of B or C. Such an approach seems to involve quite some coding, also a "dummy" parameter have to be created, since clk_freq parameter is not used in the IP A. So it makes me wonder if there is a more appropriate way how this functionality can be achieved. Maybe it's possible to create a handle at a level of IP A and somehow expose it to external configurator? Also that would be interesting to know if it's possible to hide parameters of IP B and C from external configurator. I am pretty sure that described use-case scenario was considered during CCI creation and I am simply missing some obvious point here. I'd appreciate any inputs you can provide to help me to understand what is the most appropriate way to implement that. Thanks.
  2. Hi guys, I've recently started learning SystemC-AMS, just for fun mainly. On my learning path I've figured out that: 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) There are few examples on the web available, so it's hard to learn by reviewing what other people are doing 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. 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. Thanks.
×