|
- A Logic Circuit Simulation Library in C++ |
A functional module is one which does not internally make use of other modules like logic gates etc. (see this page for a detailed discussion on modules). It should be derived from the lcs::Module class. The following is a checklist of items which should not be missed while implementing a custom functional module as a derivative of the lcs::Module class. Detailed examples of building functional modules can be found on the examples page.
lcs::InputBus::notify function. Registration to be notified should be done with all the input busses. See this for more on using the function lcs::InputBus::notify.
onStateChange function as the last operation of the constructor. This point is relevant only for those modules which override the function lcs::Module::onStateChange. A call to this function as the last operation ensures that the input and output bus lines are in a coherent state after module construction. This function should be called after the above two operations, registering with the input busses and locking the output busses, have been performed.
lcs::InputBus::stopNotification. Un-registration needs to be done with all the input busses. See this for more on using the function lcs::InputBus::stopNotification.
lcs::Module::onStateChange, lcs::Module::onPosEdge, lcs::Module::onNegEdge as relevant. If registered with an input bus to be notified of a lcs::LINE_STATE_CHANGE event, then override the function lcs::Module::onStateChange accordingly. If registered with an input bus to be notified of a lcs::LINE_POS_EDGE event, then override the function lcs::Module::onPosEdge accordingly. If registered with an input bus to be notified of a lcs::LINE_NEG_EDGE event, then override the function lcs::Module::onNegEdge accordingly.