|
- 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.
lcs::Bus::setAssDelay. A call to this function should be made before makeing a call to the onStateChange function from the next item in this checklist.
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.