Commits on Dec 4, 2017
  1. Fix spelling in always_comb

    caryr committed Nov 24, 2017
Commits on Nov 20, 2017
  1. Fix spacing

    caryr committed Nov 20, 2017
Commits on Nov 18, 2017
Commits on Nov 17, 2017
Commits on Nov 8, 2017
  1. Fix assertion failure in vvp wide functor.

    martinwhitaker committed Nov 8, 2017
    If the functor output is read before any values have propagated to
    the functor inputs, the internal storage won't have been initialised.
  2. Fix for GitHub issue #172: don't use %precedence in parser.

    martinwhitaker committed Nov 8, 2017
    Older versions of bison don't support this. Use %nonassoc instead.
  3. Fix assertion failure when using -Wmacro-redefinition, -y, and -D.

    martinwhitaker committed Nov 8, 2017
    Predefined macros get stored in the precompiled macro file that gets
    read back in when processing library files. This means the predefined
    macros get processed twice. We need to skip the check in this case.
  4. Add option to only warn about macro redefinitions that change the text.

    martinwhitaker committed Nov 8, 2017
    A common use case (prior to the introduction of localparam) was to
    use macros to define constant values, and to put global constant
    values in an include file that gets included by each source file.
    This will generate a lot of spurious warnings if we warn about all
    redefinitions. Make this new option the default for -Wall.
Commits on Nov 7, 2017
  1. Fix for GitHub issue #169: nets can get given wrong scope in VPI.

    martinwhitaker committed Nov 7, 2017
    In vvp, the __vpiSignal object holds a pointer to the scope containing
    the signal. This was getting set to the current scope when the net was
    finally resolved, rather than to the scope where the net was declared.
Commits on Nov 6, 2017
  1. Merge branch 'nekromant-master'

    martinwhitaker committed Nov 6, 2017
    Adds warning about macro redefinition (GitHub pull request #168).
  2. Don't check for macro redefinition if the warning is disabled.

    martinwhitaker committed Nov 6, 2017
    And reword the comment to be a bit less dictatorial.
Commits on Nov 5, 2017
  1. Rework handling of timescales in parser.

    martinwhitaker committed Nov 5, 2017
    This implements and enforces the full set of rules for determining
    timescales in SystemVerilog. The previous relaxation of the rules
    that allowed timescales to be redefined within the compilation unit
    scope has been removed. Time unit and precision redeclarations are
    now recognised after a nested module declaration.
  2. Factor out common code for warning about inconsistent timescales.

    martinwhitaker committed Nov 5, 2017
    Also reword the warning for SystemVerilog, where `timescale is not
    the only (or indeed preferred) way of specifying timescales.
Commits on Oct 31, 2017
  1. Add support for the $unit scope identifier.

    martinwhitaker committed Oct 31, 2017
    This relies on using the automatically generated name for the unit scope.
    This could collide with an escaped identifier, so it would be better to
    identify the scope by a reference to the PPackage object, but for now,
    do it the easy way.
  2. Support separate compilation units in SystemVerilog.

    martinwhitaker committed Oct 21, 2017
    The compilation unit scope is now treated as a specialised form of
    package (with an automatically generated name). All items declared
    outside a design element are added to the current compilation unit
    package. Apart from when searching for a symbol, once we get into
    elaboration we can treat these just like any other package.
  3. First step towards supporting separate compilation units in SV.

    martinwhitaker committed Oct 15, 2017
    This adds a -u option to the driver to allow the user to specify that
    they want each source file to be treated as a separate compilation
    unit, and modifies the compiler to accept a list of files (either on
    the command line or via a file specified by a new -F option). This
    list of files is then preprocessed and parsed separately, causing all
    compiler directives (including macro definitions) to only apply to the
    file containing them, as required by the SystemVerilog standard.
Commits on Oct 23, 2017
  1. Update cppcheck waiver files

    caryr committed Oct 23, 2017
Commits on Oct 22, 2017
  1. driver: Add -Wno-macro-redefinition, properly pass -Wredef to ivlpp

    nekromant committed Oct 22, 2017
    Signed-off-by: Andrew Andrianov <>
  2. ivlpp: Actually take warn_redef flag into account

    nekromant committed Oct 22, 2017
    Signed-off-by: Andrew Andrianov <>
Commits on Oct 19, 2017
  1. driver: Update manpage

    nekromant committed Oct 19, 2017
    Signed-off-by: Andrew Andrianov <>
  2. driver: Implement -Wr handling for macro redefinitions

    nekromant committed Oct 19, 2017
    Signed-off-by: Andrew Andrianov <>
Commits on Oct 18, 2017
  1. ivlpp: Add -Wredef option to enable redefinition warnings

    nekromant committed Oct 18, 2017
    Signed-off-by: Andrew Andrianov <>
Commits on Oct 8, 2017
  1. Fix for GitHub issue #98 and #167

    martinwhitaker committed Oct 8, 2017
    Two fixes needed:
      - when searching for a base class, we need to look in the root scope
        if the base class isn't found in the scope hierarchy
      - the classes in the root scope need to be stored in an ordered
        list, not a map, to ensure they are elaborated in the order they
        were declared. Without this, the compiler may try elaborating an
        extended class before its base class is known about.