Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on May 21, 2008
  1. Allow VPI callbacks to var array words.

    Functions like $monitor need to attach callbacks to array words if
    those words are to be monitored. Have the array hold all the callbacks
    for words in the array, under the assumption that the monitored words
    are sparse.
Commits on May 20, 2008
  1. Remove last vestiges of the the .mem structures.

    Before the .array support, we had .mem nodes. These are long since
    removed because the arrays to all the jobs of the .mem nodes.
  2. Add support for passing array words to system tasks.

    Array words don't have a vpiHandle with a label, so the %vpi_call
    needs a special syntac for arguments that reference array words.
    This syntax creates an array word reference that persists and can
    be used at a VPI object by system tasks.
  3. Fix non-blocking assign to part select of memory word.

    Memory words may have part selects assigned, but the code messed up
    the testing for the validity of the part select base. This fixes do
    detect constant bases so that base validity tests are handled at
    compile time.
  4. Add support for array iterator scan.

    With the array vals_words method of getting compact vpiHandles to words
    of a var array, it becomes easy to support the array iterators.
  5. Fix memory word offset errors

    Fix handling writing to a word part select,
    Fix readmemb calculations for the word size.
  6. Fix array inputs to mux devices.

    The draw_input_from_net function was being used to access words of
    a var array, which doesn't work. Have the draw_input_from_net punt
    on that case, and by the way the mux inputs don't need to use that
    function, instead they should use the general draw_net_input function
    to get the input labels.
Commits on May 19, 2008
  1. Use ivl_signal_dimensions to detect that signal is an array.

    It is possible for an array to have 1 word in it, so using the array
    count to detect an array is incorrect. Use the ivl_signal_dimensions
    function, which is there exactly for that purpose.
  2. Assign to variable array words using array indexing.

    The non-array set statements no longer work on array words. Handle
    the various cases properly.
Commits on May 17, 2008
  1. Allow ports to be declared before arrays.

    It is possible for the code generator to create .array/port objects
    before the .array object that the port refereces, so use the resolv_list
    to arrange for binding during cleanup.
Commits on May 16, 2008
  1. Fix non-blocking assign to variable arrays.

    Non-blocking assignment with constant index was still trying to access
    the vpi handle directly.
  2. Create handles to access words of an array, if needed.

    VPI code may need to access words of a variable array. If so, create
    a compact handle format that gains that access with minimal pain.
  3. Rework variable arrays to not have vpi handles for every word.

    Save tons of space per memory word by not creating a vpi handle for
    each and every word of a variable array. (Net arrays still get a
    vpiHandle for every word.) The consequence of this is that all
    accesses to a variable array need to go through the indexing.
    This commit handles the most common places where this impacts, but
    there are still problems.
Commits on May 15, 2008
  1. @caryr

    Return 0 when vpi_handle_by_name() is called with an unsupported object.

    caryr authored committed
    vpi_handle_by_name() was assuming it was always given a valid scope
    object. In the context of vpi_chk_error() this is not required and
    some users use/abuse the interface by calling the function with invalid
    objects expecting a 0 return value. This patch adds an explicit check
    for the supported types vpiScope and as an extension vpiModule.
    Anything else should be flagged as an error once we have vpi_chk_error()
    implemented, but for now it just returns 0.
  2. @caryr

    Fix $ungetc() arguments to be in the correct order.

    caryr authored committed
    The arguments to $ungetc() were backwards! This patch fixes that
    and adds a bit more checking to the compile_tf routine. It still
    needs more work, but that can wait for the major system function
    clean up I have planned when I can find the time.
  3. Handle declarations within scopes under while and repeat statements.

    The PWile and PRepeat statements need elaborate_sig() methods to recurse
    into the contained statements.
Commits on May 14, 2008
  1. @caryr

    A constant thread vector is binary.

    caryr authored committed
    Thread vectors can be treated as constants the problem
    was that they did not set a constant type. They now
    return vpiBinaryConst.
  2. Arithmetic operands can do unsigned work and have signed result.

    It is a quirk of the $signed() system function that the argument
    is converted to signed, but the operation that is performed is
    not changed. So arithmetic operators on unsigned arguments inside
    a $signed() expression still perform unsigned arithmetic.
Commits on May 13, 2008
  1. @caryr

    Fix comparisons that use sb_to_idx()

    caryr authored committed
    A recent change to sb_to_idx() made it return a signed value
    where it previously returned an unsigned value. This patch adds
    explicit casts to remove the two signed vs unsigned comparison
    warning messages.
  2. Revert "One more signed vs unsigned comparison fix"

    This reverts commit 3c5bf03.
    A latter patch is more complete.
  3. @caryr

    Make sure stringify_flag is initialized.

    caryr authored committed
    stringify_flag should not be used uninitialized.
    Found with valgrind.
Commits on May 12, 2008
  1. @ldoolitt

    One more signed vs unsigned comparison fix

    ldoolitt authored committed
    Fix warning: comparison between signed and unsigned integer expressions
    caused by revised prototype of NetNet::sb_to_idx() in
     commit dfb7bf5
Commits on May 10, 2008
  1. Handle part selects of nets that fall of the ends of the identifier.

    The Verilog LRM specifies that it is legal to give constant part
    selects that are beyond the bounds of the identifier being selected.
    But elaboration was flagging that as an error. This patch changes it
    to a warning, and handles the cases by generating 'bx bits as needed.
Commits on May 9, 2008
  1. Properly pad results of function calls.

    The elaborator improperly allowed user function call nodes to take on
    the expression width requested of them. The result was that generated
    code had junk pad bits in certain cases.
  2. Unary minus of a constant does make the number signed.

    It is wrong to assume that the result of a unary minus is signed.
    Doing so can cause incorrect results in subsequent math.
  3. Fix calculation of XOR when z is present

    When calculating 0^z with constant arguments, make sure the result is
    x. This problem only happens when the arguments are constants and the
    expression is calculated at compile time.
  4. When padding logic constants, sign extend x/z properly.

    If there is an x or z bin in the sign position of a logic number to
    be padded, pad with the x or z, not zero.
  5. Prevent macro expand in strings, and add a stringify syntax

    Verilog does not allow macro expansion in strings, and that's that.
    But sometimes people want strings of a macro expansion, so add a
    stringify syntax that does the trick.
Commits on May 8, 2008
Something went wrong with that request. Please try again.