- A Logic Circuit Simulation Library in C++





News


25th September 2007

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.

Changelog

  1. New Class: lcs::Counter
  2. Documentation Update: New chapter called Continuous Assignments in the new userguide.


19th August 2007

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.

Changelog

  1. New Class: lcs::Register
  2. Documentation Update: New section under the chapter Modules in the new userguide.


22nd July 2007

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.

Changelog

  1. New Classes: lcs::InOutBus. This class enables one to define Hybrid Modules.
  2. A new chapter "Modules" has been added into the new userguide.
  3. A new example, illustrating the construction of hybrid modules, has been added.


21st April 2007

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.

Changelog

  1. lcs::InputBus::operator[] and lcs::Bus::operator[] have been changed inorder to facilitate using bitselects as module port arguments.
  2. Following constructors have been added: lcs::Bus::Bus( const Line& ), lcs::InputBus::InputBus( const Line& )
  3. New classes: lcs::DelayBusPair
  4. Removed constructs: class lcs::Expression<1, LINE_EXPR, void, void>, enum value lcs::LINE_EXPR
  5. New member functions: lcs::InputBus::get, lcs::List::first, lcs::List::removeFirstMatch instead of lcs::Line::remove
  6. New example: Using bitselects as module port arguments


7th April 2007

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.


8th March 2007

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.

Changelog

  1. New Classes: lcs::FanOut. This class can be used as a fanning-out module for single line busses.
  2. A bug with the lcs::JKFlipFlop class has been fixed.
  3. After adding the reset input to the 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.
  4. A new section, Utility Modules, has been added to the new userguide.


18th February 2007

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.

Changelog

  1. New Classes: lcs::Buffer. This class can be used as a buffer or a delay element
  2. A bug with the lcs::FrequencyDivider class has been fixed.
  3. The lcs::FrequencyDivider module class now supports input to output propogation delays.
  4. A new section has been added to the new userguide.


15th January 2007

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.

Changelog

  1. A new, better and more oragnised userguide is being developed. It is now linked to the previously existing documentation. You can find it here. The installation section has been completely moved to this new user guide.
  2. A header file 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.
  3. New classes: lcs::FrequencyDivider.
  4. Installation instructions have been shifted from the main website to the new userguide.
  5. The "API Reference" section of the main website has been renamed as "Developer Guide".


7th January 2007

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.

Changelog

  1. New functions: lcs::DFlipFlop::onStateChange, lcs::JKFlipFlop::onStateChange. A user of libLCS will never need to call these functions explicitly.


22nd December 2006

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.

Changelog

  1. In libLCS-0.0.49, one could make a line assignment as
     b[3] = (5, LOW) 
    
    However, following it with an assigment with a different delay, like
     b[3] = (2, HIGH) 
    
    led to unknown behaviour. If the user stuck to only one single value for assignment delay for a given line, then behaviour was as expected and the delays were inertial.

    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.

  2. A public member lcs::ListNode::key has been added.
  3. New classes: lcs::PriorityQueue
  4. New enumerations: lcs::SortOrder


18th December 2006

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.

Changelog

  1. New classes: 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.
  2. lcs::Bus::setAssDelay has been removed.
  3. lcs::Line::setAssDelay has been made private.
  4. New overloaded assignment operators, two each for the classes lcs::Bus and lcs::Expression<1, LINE_EXPR, void, void>, have been provided. They facilitate incorporation of assignment delays in an intuitive way.
  5. An unreported bug with the JK flipflop module (lcs::JKFlipFlop) has been fixed.


5th December 2006

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.

Changelog

  1. The class lcs::Bus::LineAccessor and all the member functions associated with bus and line locking have been removed.
  2. The function lcs::InputBus::operator>>(int &) has been removed.
  3. Various assignment operators have been provided for the class lcs::Bus.
  4. New functions: lcs::Bus::setAssDelay, lcs::Line::setAssDelay, lcs::BitBuff::toInt, lcs::BitBuff::toStr, lcs::InputBus::toInt, lcs::InputBus::toStr
  5. An additional enumeration lcs::LINE_EXPR has been added into the enumerated type lcs::ExprType.
  6. New Classes: lcs::Expression<1, LINE_EXPR, void, void>


1st December 2006

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.

Changelog

  1. lcs::BitBuff and lcs::InputBus are derived from lcs::Array1D through protected inheritance instead of public inheritance.
  2. Few memory leaks in the class lcs::Line have been fixed.
  3. New classes and enumerations: lcs::VCDManager, lcs::TimeUnit, lcs::DumpOption
  4. New functions: lcs::Simulation::setDumpFileName, lcs::Simulation::setTimeUnit


27th November 2006

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.

Changelog

  1. 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.
  2. lcs::InputBus is now inherited from lcs::Array1D.
  3. The constructors and destructors of lcs::Line have been made public.


20th November 2006

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.

Changelog

  1. Bit-selects can now be incorporated into expressions.
  2. A new lcs::ExprType enumeration lcs::BITBUFF_EXPR has been added.
  3. New classes: lcs::BitBuff, lcs::Expression<bits, lcs::BITBUFF_EXPR, void, void>, lcs::Bit, lcs::Array1D
  4. lcs::InputBus::operator[] returns a suitable lcs::Expression object.


14th November 2006

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.

Changelog

  1. The function lcs::List::isPresent has been added.
  2. lcs::Bus::operator() and lcs::InputBus::operator() have been added.
  3. A function lcs::Bus::cass, which facilitates continuous assignments, has been added.
  4. New classes: Template class lcs::Expression and its specialisations, lcs::HiddenModuleManager, and lcs::ContinuousAssignmentModule. All these new classes play a role is facilitating continuous assignments.
  5. A minor known problem due to which (libLCS-0.0.34) build failed with GCC-4.1.1 has been fixed. This issue was reported through a patch release here. The patch is now closed.


3rd November 2006

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.

Changelog

  1. The delays which can set using the function lcs::Bus::lock are now inertial.
  2. Though I have resisted this far, I have converted the overloaded bus concatenation operator * to an overloaded ',' (comma) operator. See lcs::Bus::operator, and lcs::InputBus::operator, for more information.
  3. Added an operator function lcs::Bus::operator,(const InputBus &bus).
  4. Removed the functions lcs::Simulation::terminate and lcs::Clock::destroyClock inorder to fix a minor unreported bug.


28th October 2006

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.

Changelog

  1. Mixing modules having propogation delay with modules without propogation delay, while building digital systems using libLCS-0.0.3, was leading to an imperfect concurrancy in the simulation of the modules in the system. This imperfection was leading to the circuit behavior being dependent on the order in which the modules were declared in the program. This problem has been solved and all modules, with delay or without delay, are now simulated concurrantly.
  2. Due to the many slips-up with the release libLCS-0.0.3, I have restructured the items which go into the release bundle. Hence, a much better release package, bundled with examples and a Makefile, is provided.


23rd October 2006

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.

Changelog

  1. The following new classes have been added: lcs::ChangeMonitor, lcs::Clock, lcs::DFlipFlop, lcs::JKFlipFlop, lcs::MultipleClockException, lcs::NullClockException, lcs::Queue, lcs::Simulation, lcs::SystemTimer, lcs::TickListener
  2. The function lcs::InputBus::drive has been replaced with lcs::InputBus::notify, and the function lcs::InputBus::unDrive has been replaced with lcs::InputBus::stopNotification
  3. The function lcs::Bus::lock takes an additional delay parameter.
  4. Usage of the class lcs::Tester is now very different and clock based.
  5. A better navigable website and documentation.
  6. Provision of a small build script to build the library.
  7. Rectified many typos in the user guide and examples sections.


14th October 2006

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

  1. The API changes are only in the class 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.

  2. Rectified some of the goofs :-| and typos from the set of examples and user guide.


29th September 2006

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

  1. The single most important change is the provision of access protection to lines of the class lcs::Bus. See this for more information.
  2. Exception classes are used appropriately.
  3. Improved user guide, hopefully :D.
  4. A more organised examples section.


20th September 2006

libLCS-0.0.1 has been released. You can download it either by going through the download page, or directly from the project page.


Copyright © 2006, 2007 Siva Chandra