![]() |
- 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.