- A Logic Circuit Simulation Library in C++ |
libLCS-0.0.59 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. A new utility class lcs::ShiftReg
has been added. The chapter on building user defined modules in the new userguide has been completed. The complete changelog is as follows.
lcs::ShiftReg
which encapsulates a shift register. lcs::Shift
which enumerates the types of shift - left shift and right shift.
libLCS-0.0.58 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. A new utility class lcs::Counter
has been added. A new chapter on continuous assignments has been added to the new userguide. The complete changelog is as follows.
lcs::Counter
libLCS-0.0.57 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. A new utility class lcs::Register
has been added. A new section under the Modules chapter has been added to the new userguide. The complete changelog is as follows.
lcs::Register
libLCS-0.0.56 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, one can implement modules as a hybrid of other block level and behavioral models. See the section Hybrid Modules under examples. Complete changelog is as follows.
lcs::InOutBus
. This class enables one to define Hybrid Modules.
libLCS-0.0.55 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, one can use bitselects as module port arguments. A new example, illustrating this new feature, has been added. The complete changelog is as follows.
lcs::InputBus::operator[]
and lcs::Bus::operator[]
have been changed inorder to facilitate using bitselects as module port arguments. lcs::Bus::Bus
( const
Line&
), lcs::InputBus::InputBus
( const
Line&
) lcs::DelayBusPair
class
lcs::Expression<1, LINE_EXPR, void, void>
, enum
value lcs::LINE_EXPR
lcs::InputBus::get
, lcs::List::first
, lcs::List::removeFirstMatch
instead of lcs::Line::remove
libLCS-0.0.54 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, one can use continuous assignments on bitselects. A new example, illustrating this new feature, has been added.
libLCS-0.0.53 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. The complete changelog is as follows.
lcs::FanOut
. This class can be used as a fanning-out module for single line busses. lcs::JKFlipFlop
class has been fixed. lcs::DFlipFlop
and lcs::JKFlipFlop
modules, I missed changing the counter and shift register examples presented in the examples section to reflect these changes. This miss has been rectified with libLCS-0.0.53.
libLCS-0.0.52 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. The complete changelog is as follows.
lcs::Buffer
. This class can be used as a buffer or a delay element lcs::FrequencyDivider
class has been fixed. lcs::FrequencyDivider
module class now supports input to output propogation delays.
libLCS-0.0.51 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. The complete changelog is as follows.
lcs/lcs.h
is now available. A user of libLCS will need to include just this one file for simple libLCS applications. However, for complex applications involving multiple files, it is better to include only those headers files which are required in order to have a short compile time. lcs::FrequencyDivider
.
libLCS-0.0.50 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, the off-the-shelf flipflop modules have been provided a reset input. No new considerable feature has been added to libLCS. Check the libLCS blog for updates on the happenings on the development side. The complete changelog is as follows.
lcs::DFlipFlop::onStateChange
, lcs::JKFlipFlop::onStateChange
. A user of libLCS will never need to call these functions explicitly.
libLCS-0.0.49.1 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. This is a bug-fix release over libLCS-0.0.49 with no new features added. However, starting with this release, the delays which can be incorporated in simulations are not inertial. The inertial delay feature is suspended inorder to allow a user to use different assignment delays for a single line. The changelog below explains this in detail.
b[3] = (5, LOW)
b[3] = (2, HIGH)
The problem of unknown behaviour with different assignment delays has been fixed in libLCS-0.0.49.1. However, the delays which come along with this fix are not inertial. The inertial delay feature is currently suspended and will be back in a future release when an elegant way to incorporate it is found.
lcs::ListNode::key
has been added. lcs::PriorityQueue
lcs::SortOrder
libLCS-0.0.49 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, assignment delays can be incorporated in a much more intuitive way. The complete changelog is as follows.
lcs::DelayExprPair
, lcs::DelayStatePair
. These classes facilitate incorporation of assignment delays in an intuitive way. However, a user of libLCS will never need to use these classes explicitly. lcs::Bus::setAssDelay
has been removed. lcs::Line::setAssDelay
has been made private. lcs::Bus
and lcs::Expression<1, LINE_EXPR, void, void>
, have been provided. They facilitate incorporation of assignment delays in an intuitive way. lcs::JKFlipFlop
) has been fixed.
libLCS-0.0.47 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release, the LineAccessor
class and the bus locking mechanism to set bus lines has been eliminated. One can now set bus lines in the natural way using assignment operators. See the user guide and examples to learn more about setting bus lines. The complete changelog is as follows.
lcs::Bus::LineAccessor
and all the member functions associated with bus and line locking have been removed. lcs::InputBus::operator>>(int &)
has been removed. lcs::Bus
. lcs::Bus::setAssDelay
, lcs::Line::setAssDelay
, lcs::BitBuff::toInt
, lcs::BitBuff::toStr
, lcs::InputBus::toInt
, lcs::InputBus::toStr
lcs::LINE_EXPR
has been added into the enumerated type lcs::ExprType
. lcs::Expression<1, LINE_EXPR, void, void>
libLCS-0.0.45 has been released. With this release you can dump simulation results into VCD files. These VCD files can then be viewed using a suitable viewer. The complete changelog for libLCS-0.0.45 is as follows.
lcs::BitBuff
and lcs::InputBus
are derived from lcs::Array1D
through protected inheritance instead of public inheritance. lcs::Line
have been fixed. lcs::VCDManager
, lcs::TimeUnit
, lcs::DumpOption
lcs::Simulation::setDumpFileName
, lcs::Simulation::setTimeUnit
libLCS-0.0.43 has been released. With this release you can use lcs::BitBuff
objects and their bit selects in continuous assignment expressions. Apart from that, there have been few other re-orderings in the code. The complete changelog is as follows.
lcs::BitBuff
objects and their bits selects can now be used in expressions consisting of bitwise operations. This is facilitated through the following functions: lcs::Bit::notify
, lcs::Bit::stopNotification
, lcs::BitBuff::notify
, lcs::BitBuff::stopNotification
. lcs::InputBus
is now inherited from lcs::Array1D
. lcs::Line
have been made public.
libLCS-0.0.41 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release libLCS facilitates bit-selects in continuous assignment expressions. A new class lcs::BitBuff
, which can be used as a temporary/intermediate storage data type, has been added. The complete changelog is as follows.
A
new lcs::ExprType
enumeration lcs::BITBUFF_EXPR
has been added. lcs::BitBuff
, lcs::Expression<bits, lcs::BITBUFF_EXPR, void, void>
, lcs::Bit
, lcs::Array1D
lcs::InputBus::operator[]
returns a suitable lcs::Expression
object.
libLCS-0.0.40 has been released. You can download it either by going through the download page, or directly from the libLCS project page on sourceforge.net. With this release libLCS facilitates continuous assignments. The complete changelog is as follows.
lcs::List::isPresent
has been added. lcs::Bus::operator()
and lcs::InputBus::operator()
have been added. lcs::Bus::cass
, which facilitates continuous assignments, has been added. lcs::Expression
and its specialisations, lcs::HiddenModuleManager
, and lcs::ContinuousAssignmentModule
. All these new classes play a role is facilitating continuous assignments.
libLCS-0.0.34 has been released. You can download it either by going through the download page, or directly from the project page. The complete changelog is as follows.
lcs::Bus::lock
are now inertial. lcs::Bus::operator,
and lcs::InputBus::operator,
for more information. lcs::Bus::operator,(const InputBus &bus)
. lcs::Simulation::terminate
and lcs::Clock::destroyClock
inorder to fix a minor unreported bug.
libLCS-0.0.32 has been released. This is a bug-fix release over the 0.0.3 release of libLCS. You can download it either by going through the download page, or directly from the project page.
libLCS-0.0.3 has been released. With this release, libLCS incorporates the notion of system time, facilitates delays, and provides sequential circuit elements flipflops and clock.
lcs::ChangeMonitor
, lcs::Clock
, lcs::DFlipFlop
, lcs::JKFlipFlop
, lcs::MultipleClockException
, lcs::NullClockException
, lcs::Queue
, lcs::Simulation
, lcs::SystemTimer
, lcs::TickListener
lcs::InputBus::drive
has been replaced with lcs::InputBus::notify
, and the function lcs::InputBus::unDrive
has been replaced with lcs::InputBus::stopNotification
lcs::Bus::lock
takes an additional delay parameter. lcs::Tester
is now very different and clock based.
libLCS-0.0.21 has been released. This is a bug-fix release with no major changes from the 0.0.2 version. You can download it either by going through the download page, or directly from the project page.
Changelog
lcs::Line
. The changes were made to eliminate a bug, which I illustrate using the following code. lcs::Bus a, b, c; lcs::Tester<2,1> tester(a*b, c);
Since the object tester
sets the lines of the composite bus a*b
, it locks this composite bus. However, due to the improper implementation of the locking mechanism in libLCS-0.0.2, the individual busses a
and b
were not getting locked even after the composite bus was locked. This problem has been solved in libLCS-0.0.21.
libLCS-0.0.2 has been released. You can download it either by going through the download page, or directly from the project page.
Changelog
lcs::Bus
. See this for more information.
libLCS-0.0.1 has been released. You can download it either by going through the download page, or directly from the project page.