Jump to content

hands on experience on not so simple project

Recommended Posts

Hi everyone,


I've recently started to wonder what kind of project I can start with to get my hands on SystemC and TLM. I know there are tons of tutorials, getting started like materials, open libraries, open platforms and I believe I can get my head around most of that stuff, but one thing I'd like to get advice on is how complex should be my first project to make my learning process more effective.


I've started proposing modelling with SystemC in my group because we often lack of a tool to explore the bottle neck of our architectures and realize about it too late down in the development phase. I've got granted a 30% of my time for the next 6 months to learn SystemC and TLM and come up with a reasonably shaped showcase.


One of our core challenges is mass storage (for space applications), therefore I thought about modelling a possible architecture involving NAND Flash storage handled through some processor and high speed data link.


Most of the elements of this fictitious architecture are somehow available on the net and I would have started plugging things together for a start. 


Does this sound too naive, or is this application too complex to be achievable in such a short time?


One critical element in this task would be to make the management understand how much they should invest in 'training/learning' before getting some benefit out of it.


Any pointer/suggestion/comment is highly appreciated,



Link to comment
Share on other sites

  • 2 weeks later...

Hi, I saw your question here and on comp.lang.vhdl, and I'm not sure it's easy to answer - which is probably why no-one's attempted to answer. I don't know much (well, anything) about NAND flash. So I can't really comment on whether your proposed project is too naive.


But I'll attempt to give some pointers on the things I do know about.


Firstly, regarding learning SystemC and TLM. If you have a good background in e.g. VHDL or Verilog, and also have a good background in C++ and object-orientated concepts, then SystemC is (in a sense) "just another class library".  If however you don't have background in OO or C++ that would be the first place to start.


I used to work for Doulos, and when I was there (and it's probably still true, but check the website for details), we had a "c to c++" conversion course in 2 days, followed by 3 days SystemC (including an intro to TLM), followed by a full 3 days TLM. So perhaps nominally 2 + 2+ 3 = 7 days training. If you know c++/OO you could skip the c->c++.


The question then is can you teach yourself enough SystemC to just focus on TLM? It's hard to say without knowing your background.


If you look at your proposed project, the first thing to decide is what level of modelling detail you want. In TLM standard terms "loosely timed" vs "approximately timed". If you only need LT, TLM is reasonably straightforward - though getting your head round the time quantum needs some thought.


If you need approximately timed, there is a lot of detail to understand assuming you want to be able to write your own AT peripheral.


So the next question, is do you need to write your own peripherals? If you do, you need the detail (either LT or AT).


If you don't i.e. you really are going to attempt to plug together existing items, then perhaps you only need the concepts.


If you are going to attempt to "plug and play", the next question is whether to use a proprietary tool to do that (e.g. from Mentor, Synopsys, Cadence etc). And if so, do the models you need exist?


If you're going to grab stuff from the internet and plug it together, then you might find that you need to address issues that are addressed by those tools, but that aren't currently standardised (e.g. control and configuration of your model, extracting and recording performance results etc.).


Finally,  I would take a step back and try to identify what the problem is in your existing projects - was it really the lack of a tool to analyse architecture? Or was it perhaps a tendency to start designing too early :-)


Sorry this is vague, but perhaps it gives you some help.


If you're interested in a relatively straightforward loosely timed TLM example, the app note on the Embecosm web-site might be an interesting place to start,


kind regards


Link to comment
Share on other sites

Hi Alan,

yep the question was probably too broad to get some level of feedback and I do really appreciate your efforts.


I'm pretty comfortable with VHDL, C/C++ and OOP in general and I went through some basic webinar on SystemC (actually I think one from Doulos!) and I should say that the language itself is not what worries me the most.


While learning the mechanics of a language is not that complex, use it efficiently is a whole lot different. I remember learning VHDL basically on my own, I was able to write it after few weeks of effort, but it took a long time before using it in a more appropriate way. Certainly I cannot imagine that a 3 or 5 days course can replace the field experience that you need to be able to feel comfortable with any tool. Yet a good start is better than a bad one! :-)


I'm a system engineer and the modeling I'm looking for is for architecture exploration and performance analysis, therefore I believe some level of AT. As for writing my own peripherals I guess we can skip that part for the time being, since it can be done more efficiently by somebody else. Yet putting the blocks together and be able to play with the model is what I value the most at this point. As a starting point I could put together some kind of SOC whose components are already available (I'm thinking about OVP for example) and might get me to a toy project that I can play with.


I might be naive here, but being SystemC (as well as TLM) yet another C++ library, why would I need anything else than a compiler to run my model? For what concerns metrics I do understand your point and the lack of standardization opens up for a lot of efforts on top of simply running the model, but I'd rather be free and choose how to die than let somebody else decide it for me ;-).


I found the appnote from Embecosm sometimes ago, even before I had the green light on my training, and I find it quite interesting. Since we are about to start using a MicroBlaze clone in our products I think it would be an extremely nice exercise to go through the same note but replacing the ISS with the one available from OVP. The appnote seems extremely well detailed and the system is complex enough to touch very many aspects of the language and its usage. I'm not so sure I have the elements, as of now, to say whether that's the kind of platform to get me ready for architecture exploration. Certainly is a 'not so simple project' to start with.



Link to comment
Share on other sites

Hi Al,

  yes you can of course use just a C++ compiler - but as I say there are areas that are perhaps "less" standardised such as control/config.

Regarding Microblaze, I know Xilinx have a qemu model for the Zync platform - and they definitely have a Microblaze quemu model as part of the Petalinux distribution.

So it might be worth looking at that as well (though no TLM wrappers there, unlike OVP)




Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...