Abstractions in Asim
Note that Asim is not a publicly available tool and so it is difficult to determine exactly what the tool provides and does not.
To the best of our knowledge, Asim has two methods to allow components to communicate. If communication occurs such that the receiver can see the data in the same cycle as the sender, then communication occurs via function calls, like in sequential simulators.
There is insufficient information to determine what can and cannot be analyzed or optimized in the model of concurrency.
When communication occurs across cycles, Asim has a very structured and strictly enforced communication system to ensure that the data is only read when it is available. This is because one of Asim's design goals was to forbid approximations in signal arrival that caused errors in performance evaluation.
The difficulty with this dual method of composition is that component granularity is controlled by the timing of the components external communication. This is undesirable since it makes it difficult for the component to be used across designs with different timing even though the internal functionality is the same. Detailed discussion of these issues can be found here
Since Asim is based on C++ it provides the same data abstractions as the base language. It isn't clear if any additional data abstractions are provided.
Polymorphism can be achieved through templates. However, it isn't clear if this feature of C++ can be used to allow for polymorphic data type for communication. Even if it is possible, the process of using templates for communication forces users to explicitly specify the type used in many objects where the type can be unambiguously inferred with no deleterious effects. This is especially true with long chains of components.
The cumbersome nature of template based polymorphism is less of an issue in Asim however. The most cumbersome use of templates occurs when there are a large collection of simple components interacting to implement a larger component. However, Asim's Model of Computation (MoC) makes this difficult and thus polymorphism itself becomes less important since the resultant benefits are not realized.
Once again, C++ can support component computation customization via inheritance, however it isn't clear how this will interact with template instantiation due to the unknown organization of Asim.
To the best of our knowledge, Asim does not attempt to abstract control differently from any other data in the system.undo
To the best of our knowledge, Asim does not attempt to allow this type of scalability. However insufficient information is available to determine if Asim supports parametric scalability.
To the best of our knowledge, Asim does not attempt support parametric composition but not enough information is available to determine this.
There is insufficient information to determine what Asim's data collection mechanism is.
There is not enough information to determine if Asim supports this feature, but it is unlikely given conversations with users at Intel.