I'm fairly new to SystemC, and still trying to get my head around lots of things.
I have developed a simplified version of a message format , that I intend to work with in hardware (simplified it just to try things out in SystemC land). This has been done purely in OO software, no SystemC at all, with a suite of tests to confirm that it works correctly. Basically, a test stack that captures the method calls to build a message, and the message calls to read a message, and confirms that what went in = what came out.
I have been working towards a hardware description of the serializers and deserializers that will translate this message format to and from its wire format. That is, on the wire it is a stream of bytes, in an application it might be held in memory in a different layout, and these functional units translate between the two.
On one side I have some tests, which are very software oriented, on the other I have a hardware model, that I intend to refine into an RTL description. I am thinking it would be very useful, if I can get my tests passing against the software version, then use the same tests against the hardware model, as it is developed.
And so to my question:
Am I right in thinking that part of the purpose of TLM is to be able to span levels of abstraction in a system model (and make it possible to do the kind of testing I describe above)?
To what degree is this the purpose of TLM? That is, does it really have some other purpose that I am failing to understand?
Thanks in advance for your helpful replies.