Sha256: dc673c78ba77dcf0c2e1d4560b6c9a534af00a3764d0e635a2d6bc8f2e0e85d8

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

#--
# Copyright 2006 Suraj N. Kurapati
# See the file named LICENSE for details.

require 'InputGenerator'
require 'Hw5UnitModel'
require 'test/unit'
require 'pp'

class TestHw5UnitModel < Test::Unit::TestCase
  NUM_VECTORS = 4000

  def setup
    @model = Hw5UnitModel.new
    @ingen = InputGenerator.new 32
  end

  def test_reset
    @model.reset
    assert_same Hw5UnitModel::NOP, @model.output
  end

  def testModel
    # generate input for module
    inputQueue = []

    NUM_VECTORS.times do |i|
      inputQueue << Hw5UnitModel::Operation.new(
        Hw5UnitModel::OPERATIONS[rand(Hw5UnitModel::OPERATIONS.size)],
        i,
        @ingen.gen.abs,
        @ingen.gen.abs
      )
    end


    # test the module
    outputQueue = []
    cycle = 0

    until inputQueue.length == outputQueue.length
      if $DEBUG
        print "\n" * 3
        p ">> cycle #{cycle}"
      end


      # start a new operation
      if cycle < inputQueue.length
        @model.startOperation inputQueue[cycle]
        cycle += 1
      end


      # simulate a clock cycle
      @model.cycle


      # verify the output
      output = @model.output
      p "output:", output if $DEBUG

      unless output == Hw5UnitModel::NOP
        assert_not_nil inputQueue.find {|op| op.tag == output.tag }, "unknown tag on result: #{output.tag}"
        assert_equal output.compute, output.result, "incorrect result"

        outputQueue << output
      end


      if $DEBUG
        puts
        pp @model
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-vpi-16.0.1 samp/pipelined_alu/TestHw5UnitModel.rb
ruby-vpi-16.0.0 samp/pipelined_alu/TestHw5UnitModel.rb