update documentation for ShiftRegister
document optional enable for shift register in manual
Support seeding random number generator with arg to init()

Passing 0/false disables randomization, as before.
Passing a nonzero value seeds the LFSR.
Use CXX to specify the "g++" version in the environment.
Merge pull request #224 from zhemao/shiftreg-doc

Update documentation for ShiftRegister
Added --vcdMem option for dumping Memory/ROM state.

   Before this behavior was the default with no option to turn it off.
Merge pull request #228 from ccelio/master

Added --vcdMem option for dumping Memory/ROM state.
Fix long RSH by adding dat_t::operator[](size_t)

I'm not entirely sure if this is the correct way to fix this, but it
seems to be the least intrusive way of going about it.  For some
reason the multi-word RSH code was emiting some operators that aren't
defined.  I couldn't figure out why, so I just went ahead and added
the operator in.
Fix a code-gen issue related to reinterpret_cast

This is actually pretty straight-forward, a single "&" appears to have
simply been dropped from the following commit:

commit a05bc928e0835b2022d87955226677e381ff9abc
Author: Andrew Waterman <waterman@eecs.berkeley.edu>
Date:   Sun May 25 21:46:26 2014 -0700

    Support sparse ROMs

    These are useful both for speeding up combinational logic in C++
    and for attaining better synthesis QoR.

in case anyone is interested, the following code triggers the error

import Chisel._;
object Torture {
  def main(args: Array[String]): Unit = {
    chiselMain(args, () => Module(new Torture()));
  }
}
class Torture extends Module {
  class IO extends Bundle {
    val in0 = Bits(INPUT, width=65);
    val in1 = Bits(INPUT, width=65);
    val out0 = Bits(OUTPUT, width=65);
  }
  val io = new IO();
  val io_in0 = Bits(width = 65);
  io_in0 := io.in0;
  val io_in1 = Bits(width = 65);
  io_in1 := io.in1;
  val Torture2 = Bits(width = 65);
  Torture2 := io_in0 / io_in1;
  io.out0 := Torture2;
}

I'm not sure that the emitted code is actually wrong, as I don't know
much about what's going on here.  In other words, it could be correct
in this sparse ROM case, I just don't know how to even generate one.
This passes through the rest of my torture tester tests, so hopefully
it's OK?
Merge pull request #230 from palmer-dabbelt/long_rsh

Fix long RSH by adding dat_t::operator[](size_t)
Merge branch 'cast' of github.com:palmer-dabbelt/chisel into palmer-dabbelt-cast
Merge branch 'palmer-dabbelt-cast'
Remove a spurious newline from Flo's log2 generation rule

This is actually pretty straight-forward: there is a '\n' at the end
of the log2 rule, which isn't there anywhere else.  I've already
worked around this in libflo, but I figured I'd just fix it because
it's kind of silly.
Merge pull request #232 from palmer-dabbelt/flo-log2

Remove a spurious newline from Flo's log2 generation rule
Mark mod_api_t::string_comparator::() as const

When I try to build the C++ generated by Chisel on OSX I get the
following error message:

  ./emulator_api.h:590:8: note: candidate function not viable: 'this'
    argument has type 'const mod_api_t::string_comparator', but method
    is not marked const
                bool operator()(const char* x, const char* y) {

I don't know why this isn't happening on other platforms (it appears
to be a pretty straight-forward problem?), but the call is buried
somewhere in the libstdc++ call stack so it's probably somewhat
complicated as to exactly why this need to be const.

Regardless, marking this as const seems to be the Right Thing: there's
not even any member variables, so how could it _not_ be const.

This allows chisel-torture to run on OSX for me.
Merge pull request #233 from palmer-dabbelt/strcmp

Mark mod_api_t::string_comparator::() as const
Deal with recursive calls to Node.getWidth().

Restore the prior value of Driver.isInGetWidth when exiting
Node.getWidth() instead of unconditionally setting it false.
add trace command to debug api
Vtests: fix the api handler, making it easy to see VPDs
Vtests: add Mem waveforms