ESL Codesign

ESL Codesign

 

Hardware Software Co-design

As system on chip and embedded systems becomes  complex we need  a repetable method to design such complex system. Muticore Soc, Advanaced Network communication, multithreaded embedded database with transcation facilty  introduces complexity that needs  clear seperatetion of hardware and software design. A system level perspective involving, application software, operating system, hardware and network communication is necessary. Hardware software co-design provides such solution using Transaction level modeling and virtual prototype system.  We generally use systemc and systemc for this kind of assignment.

Virtual system based co-simulation methods using tools and  technology like Systemc/TLM  and UML provides flexibility to simulate entire system and study the interaction of hardware and software. Such co-simulation can detetct and rectify early design problems and bottle necks.

Typically such virtual system could be used for performance, latency and power consumtion if the target is mobile and or arm systems.

Introduction to NachOS- Operating System simulator

You want to build a thread system? Experiment with an OS with memory protection and virtual memory? You want to do that without a lot of rebooting, Bochs/VMWaremagic and writing drivers? Well, then Nachos (Not Another Completely Heuristic Operating System) is for you. Nachos is an Operating System simulator. Hmm... . If you're a bit like me, you'll be wondering what in the world that is.

Overview

I have been very interested in OSes for years and have also been an avid OSNews reader, but I had never encountered this term (or Nachos in particular) before.

In Nachos' case Operating System simulator simply means, that you can run an OS (a guest OS) on top of another one (the host OS). If this sounds a little like Bochs/VMWare, then you're right, because it works similar to them. It actually features emulation for

  • a CPU (a MIPS CPU)
  • a hard drive
  • misc. stuff like an interrupt controller, timer,...
  • etc.

which are there to run the Nachos userspace applications. That means that you can actually write programs for Nachos, compile them with a real compiler (an old gcc crosscompiler that produces code for MIPS) and run them. The Nachos kernel instead is compiled to the platform of the Host OS and thus runs natively on the Host OS' CPU.

If you are not excited about this idea (or at least mildly interested), you have to consider what this means. People interested in OSes can easily experiment with high level matters like multiprogramming, VM organization and file systems rather than fiddling around with writing a bootloader (a task which has been tackled thousands of times by aspiring Torvaldses all over the world) first. Not to mention much easier debugging; if you want to output something from inside the Nachos kernel, just use a comfortable printf, instead of having to rely on your own console code (using BIOS, VGA,...) which might not always work reliably. Not to mention that you can easily log the debugging messages of your OS (for later thorough inspection) by simply redirecting stdout of Nachos to a file on your Host OS.

Don't get me wrong, all these low level things are of course interesting too, and fiddling around with bits, device control registers,... are be very educational (to learn how computers really work). But, these tasks can also be very frustrating. With Nachos you can get a somewhat high level overview of the task of writing an OS without all the tedious details. It could be argumented, that the low level stuff helps to weed out the meek, and only leaves the best, hardcore bit fiddlers to OS development. But I think approaches like Nachos make it easier to get the hang of OSes without all the cruft; with the experience from the highlevel view, it might be easier for people to do the low level parts.

 

Read Entirre Article

 References:

 1.0 Operating System- Principal and Practice- 2Nd Edition  - Anderson

  Virtual Plaforms and Codesign

 

 Please note, we are working on this article.

 

 References:

1.0 OVP work Shops -  Weblinlnk

SystemC TLM 2.0 Resources

SystemC TLM 2.0 Resources

 

admin - Posted on 06 May 2009

I am gathering SystemC TLM 2.0 Sources. Here are the ones that I vae found useful.
1.0 Doulos Tutorial
http://www.doulos.com/knowhow/systemc/tlm2/
2.0 ESL Book Blog
http://electronicsystemlevel.com/
3.0 Greensoc
http://www.greensocs.com/
4.0 Mentor Graphics
http://communities.mentor.com/mgcx/community/asic_fpga/esl
5.0 www.systemc.org
6.0 ESL- http://electronicsystemlevel.com/
7.0 System Design with System C- ISBN-1-4020-7072-1
7.0 Open Cores
http://www.opencores.org/
8.0 Eclipse Plugins for SystemC- This is Interesting for Development toolset.
http://www.eclipsecon.org/2008/sub/attachments/Introducing_VPP__the_Virt...

9.0 ESL Articles - EE Times
http://www.eetimes.com/showArticle.jhtml;jsessionid=IIQHUAY2QSAE2QSNDLOS...
10.0 DAC Tutorials
http://www.opensystemc.org/tlm20tutorial
11.0 http://www.techonline.com/learning/webinar/207502054?site_id=TechOnline&...
12.0 Coware- Tim Kogel Thesis and Book
http://books.google.ca/books?id=ZWVx9G4mxj0C&printsec=frontcover
13.0 Vast Systems
http://www.vastsystems.com/
14.0 OCP-IP
http://www.ocpip.org/

Go to top