ReviewCriteria
Review criteria
This page lists evaluation criteria for reviewing concepts and contributions to the GreenBus project.
Developers View
Model of communication- method calls
- port2port binding
- channels (primitive or hierarchical)
Location of the bus behaviour implementation
- communication channel
- data object
- bus functional model
Interfaces
- available interfaces (bus access, configuration, "decoupling of concerns"?)
- type of interface? (virtual functions, sc_interface, standard base such as OSCI-TLM)
- usability (self-explaining function names, complexity)
- representation of different abstraction layers (function overloading, seperate functions, interface hierarchy/seperate interfaces)
Abstraction layers
- well defined and separated?
- untimed (PV), timed (PVT), BA (CCATB) and/or CC
- wrappers available? if yes, implementation?
Modularity, hierarchy
- monolithic, manageable, too ramified
- decoupling of functionality and communication (ideological, pragmatic)
Simulation performance
- dependency on abstraction layer
- emphasis placed on performance or model flexibility/beauty?
Implementation details
- data flow (end-to-end communication, fragmentation/defragmentation, number of "hops")
- control flow (mutual exclusion, one/multiple threads, event-driven, callback functions, ...)
- utilisation of SystemC constructs (ports,sc_interface,sc_event,sc_thread/sc_method); where?, for what purpose?
- highlights
Extendability and adaptability
- necessary effort to develop new bus or extend existing bus's funcionality
- how to add further abstraction layers
- how to support multiple abstraction layers at once
Source code documentation
- level of detail
- doxygen-compatible
Users view
Skill requirements
- support of different user skill levels (beginner, advanced, professional)
- API structure (simple <-> complex, intervowen <-> layered, high/mid/low level functions)
Usability
- factory for typical tasks
- meaningful warnings and error messages
Controllability
- configurable parameters, level of detail
- static (compile time) / dynamic (elaboration phase, during simulation)
Extendability
- separation of framework and user extensions (e.g. user data renders user services)
Adaptability/flexibility
- compatible to OSCI-TLM or other standards?
- wrappers available?
Error handling
- detection of misuse
- assertions
Trace / debug support
- standard (scv)?
- transaction recording
- configurable trace-levels, recorded signals, ...
- direct access of internal functions
- introspection/reflection
API documentation
- quality of documentation (examples given, tutorials, ...)
Overal usability
- communication refinement
- necessary effort to proceed to next abstraction layer
- automation possible?
- limitation of systemc command set, or -- even worse -- framework-specific commands required?
- design reuse, IP integration
- analysis tools available (visualization, ...)?
- gcc compatible (which version?), systemc-2.1 compatible
Posted January 8th, 2008 by MarkBurton