Packages

class VcsBackend[T <: MultiIOModule] extends VerilatorBackend[T]

Supports Backend and Threaded traits for ex

T

the dut's type

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. VcsBackend
  2. VerilatorBackend
  3. ThreadedBackend
  4. BackendInstance
  5. BackendInterface
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new VcsBackend(dut: T, dataNames: Map[Data, String], combinationalPaths: Map[Data, Set[Data]], command: Seq[String])

    dut

    the device under test

    dataNames

    basically the IO ports

    combinationalPaths

    paths detected by CheckCombLoop

    command

    the simulation program to execute

Type Members

  1. sealed abstract class BaseTimescope extends AnyRef
    Definition Classes
    ThreadedBackend
  2. sealed trait HasOverridingPokes extends BaseTimescope
    Definition Classes
    ThreadedBackend
  3. sealed trait HasParent extends BaseTimescope
    Definition Classes
    ThreadedBackend
  4. case class PeekRecord(timescope: Timescope, time: TimeRegion, actionId: Int, deps: Map[Data, Option[Timescope]], trace: Throwable) extends Product with Serializable
    Definition Classes
    ThreadedBackend
  5. case class PokeRecord(time: TimeRegion, actionId: Int, value: BigInt, trace: Throwable) extends Product with Serializable
    Definition Classes
    ThreadedBackend
  6. class RootTimescope extends BaseTimescope with HasOverridingPokes
    Definition Classes
    ThreadedBackend
  7. class TesterThread extends AbstractTesterThread
    Attributes
    protected
    Definition Classes
    ThreadedBackend
  8. case class ThreadRootTimescope(parentTimescope: BaseTimescope, openedTime: TimeRegion, parentActionId: Int, thread: TesterThread) extends BaseTimescope with HasParent with Product with Serializable
    Definition Classes
    ThreadedBackend
  9. case class TimeRegion(timeslot: Int, region: Region) extends Product with Serializable
    Definition Classes
    ThreadedBackend
  10. class Timescope extends BaseTimescope with HasOverridingPokes with HasParent
    Definition Classes
    ThreadedBackend

Value Members

  1. object TimescopeUtils
    Definition Classes
    ThreadedBackend
  2. object schedulerState
    Definition Classes
    ThreadedBackend
  3. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def ##(): Int
    Definition Classes
    AnyRef → Any
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. val clockCounter: HashMap[Clock, Int]
    Attributes
    protected
    Definition Classes
    VerilatorBackend
  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  9. def closeTimescope(timescope: Timescope): Map[Data, Option[BigInt]]

    Closes the specified timescope, returns a map of wires to values of any signals that need to be updated.

    Closes the specified timescope, returns a map of wires to values of any signals that need to be updated.

    Definition Classes
    ThreadedBackend
  10. val combinationalPaths: Map[Data, Set[Data]]
    Definition Classes
    VerilatorBackendThreadedBackend
  11. val currentThread: Option[TesterThread]
    Attributes
    protected
    Definition Classes
    ThreadedBackend
  12. def currentTime: TimeRegion
    Definition Classes
    ThreadedBackend
  13. val currentTimestep: Int
    Definition Classes
    ThreadedBackend
  14. val dataNames: Map[Data, String]
    Definition Classes
    VerilatorBackend
  15. def debugLog(str: ⇒ String): Unit
    Definition Classes
    VerilatorBackend
  16. def doFork(runnable: () ⇒ Unit, name: Option[String], region: Option[Region]): TesterThread
    Definition Classes
    ThreadedBackendBackendInterface
  17. def doJoin(threads: Seq[AbstractTesterThread], stepAfter: Option[Clock]): Unit
    Definition Classes
    ThreadedBackendBackendInterface
  18. def doPeek(signal: Data, trace: Throwable): Unit

    Logs a peek operation for later checking.

    Logs a peek operation for later checking.

    Definition Classes
    ThreadedBackend
  19. def doPoke(signal: Data, value: BigInt, trace: Throwable): Unit

    Logs a poke operation for later checking.

    Logs a poke operation for later checking. Returns whether to execute it, based on priorities compared to other active pokes.

    Definition Classes
    ThreadedBackend
  20. def doTimescope(contents: () ⇒ Unit): Unit
    Definition Classes
    VerilatorBackendBackendInterface
  21. val driverSemaphore: Semaphore
    Attributes
    protected
    Definition Classes
    ThreadedBackend
  22. val dut: T
    Definition Classes
    VerilatorBackendThreadedBackend
  23. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  24. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  25. def expectBits(signal: Data, value: BigInt, message: Option[String], stale: Boolean): Unit
    Definition Classes
    VerilatorBackendBackendInterface
  26. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  27. def getClock(clk: Clock): Boolean
    Attributes
    protected
    Definition Classes
    VerilatorBackend
  28. def getClockCycle(clk: Clock): Int
    Attributes
    protected
    Definition Classes
    VerilatorBackend
  29. def getModule: T
    Definition Classes
    VerilatorBackend
  30. def getParentTraceElements: Seq[StackTraceElement]

    Returns the stack trace elements of parent threads.

    Returns the stack trace elements of parent threads. If currently in the root thread, returns empty. TODO: refactor this, figure out how to do this in a structurally cleaner way

    Definition Classes
    ThreadedBackendBackendInterface
  31. def getSinkClocks(signal: Data): Set[Clock]

    Returns set of clocks associated with sinks of the signal

    Returns set of clocks associated with sinks of the signal

    Definition Classes
    VerilatorBackendBackendInterface
  32. def getSourceClocks(signal: Data): Set[Clock]

    Returns set of clocks associated with sources of the signal

    Returns set of clocks associated with sources of the signal

    Definition Classes
    VerilatorBackendBackendInterface
  33. def getVar(key: Any): Option[Any]

    Returns the value associated with the key in a per-test map.

    Returns the value associated with the key in a per-test map.

    Definition Classes
    BackendInterface
  34. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  35. val idleCycles: Map[Clock, Int]
    Definition Classes
    ThreadedBackend
  36. val idleLimits: Map[Clock, Int]
    Definition Classes
    ThreadedBackend
  37. val interruptedException: ConcurrentLinkedQueue[Throwable]
    Attributes
    protected
    Definition Classes
    ThreadedBackend
  38. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  39. val lastClockValue: HashMap[Clock, Boolean]
    Attributes
    protected
    Definition Classes
    VerilatorBackend
  40. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  41. def newTimescope(): Timescope

    Creates a new timescope in the current thread.

    Creates a new timescope in the current thread.

    Definition Classes
    ThreadedBackend
  42. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  43. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  44. def peekBits(signal: Data, stale: Boolean): BigInt

    Returns the current value on a wire.

    Returns the current value on a wire. If stale is true, returns the current combinational value (after previous pokes have taken effect). If stale is false, returns the value at the beginning of the current cycle.

    Definition Classes
    VerilatorBackendBackendInterface
  45. def peekClock(signal: Clock): Boolean

    Read the value of a clock.

    Read the value of a clock.

    Definition Classes
    VerilatorBackendBackendInterface
  46. def pokeBits(signal: Data, value: BigInt): Unit

    Writes a value to a writable wire.

    Writes a value to a writable wire. Throws an exception if write is not writable.

    Definition Classes
    VerilatorBackendBackendInterface
  47. def pokeClock(signal: Clock, value: Boolean): Unit

    Writes a value to a clock.

    Writes a value to a clock.

    Definition Classes
    VerilatorBackendBackendInterface
  48. def resolveName(signal: Data): String
    Attributes
    protected
    Definition Classes
    VerilatorBackend
  49. val rootTimescope: Option[RootTimescope]
    Definition Classes
    ThreadedBackend
  50. def run(testFn: (T) ⇒ Unit): Unit

    Runs of tests are wrapped in this, for any special setup/teardown that needs to happen.

    Runs of tests are wrapped in this, for any special setup/teardown that needs to happen. Takes the test function, which takes the module used as the testing interface. TesterContext setup is done externally.

    Internal API

    Definition Classes
    VerilatorBackendBackendInstance
  51. def runThreads(clocks: Set[Clock]): Unit

    Runs the specified threads, blocking this thread while those are running.

    Runs the specified threads, blocking this thread while those are running. Newly formed threads or unblocked join threads will also run. Returns a list of threads run (either passed in, newly forked, or joined) that are waiting on a clock edge.

    TODO: uses shared schedule state, as an optimization (so that control doesn't need to return to the driver thread between runs. But control still needs to return to the calling thread between timesteps. TODO: this provides a separation which isolates the threading infrastructure from clock control, but there are other structures which accomplish the same thing.

    Attributes
    protected
    Definition Classes
    ThreadedBackend
  52. def scheduler(): Unit

    Invokes the thread scheduler, which should be done anytime a thread needs to pass time.

    Invokes the thread scheduler, which should be done anytime a thread needs to pass time. Prior to this call: caller should add itself to the blocked / joined threads list (unless terminating). After this call: caller should block on its semaphore (unless terminating). currentThread will no longer be valid.

    Unblocks the next thread to be run, possibly also also stepping time via advanceTime(). When there are no more active threads, unblocks the driver thread via driverSemaphore.

    Attributes
    protected
    Definition Classes
    ThreadedBackend
  53. def setTimeout(signal: Clock, cycles: Int): Unit

    Sets the timeout of the clock: the number of cycles the clock can advance without some non-nop poke operation.

    Sets the timeout of the clock: the number of cycles the clock can advance without some non-nop poke operation. Setting cycles=0 disables the timeout. Setting cycles=1 means every cycle must have some non-nop poke operation. Resets the idle counter associated with the specified clock.

    Definition Classes
    ThreadedBackendBackendInterface
  54. def setVar(key: Any, value: Any): Unit

    Sets the value associated with a key in a per-test map.

    Sets the value associated with a key in a per-test map.

    Definition Classes
    BackendInterface
  55. def step(signal: Clock, cycles: Int): Unit

    Advances the target clock by one cycle.

    Advances the target clock by one cycle.

    Definition Classes
    VerilatorBackendBackendInterface
  56. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  57. val testMap: HashMap[Any, Any]
    Attributes
    protected
    Definition Classes
    BackendInterface
  58. def threadFinished(thread: TesterThread): Unit

    Called on thread completion to remove this thread from the running list.

    Called on thread completion to remove this thread from the running list. Does not terminate the thread, does not schedule the next thread.

    Attributes
    protected
    Definition Classes
    ThreadedBackend
  59. def timestep(): Unit

    Starts a new timestep, checking if there were any conflicts on the previous timestep (and throwing exceptions if there were).

    Starts a new timestep, checking if there were any conflicts on the previous timestep (and throwing exceptions if there were).

    Definition Classes
    ThreadedBackend
  60. def toString(): String
    Definition Classes
    AnyRef → Any
  61. val verbose: Boolean
    Definition Classes
    VerilatorBackend
  62. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  63. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  64. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated @deprecated
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from VerilatorBackend[T]

Inherited from ThreadedBackend[T]

Inherited from BackendInstance[T]

Inherited from BackendInterface

Inherited from AnyRef

Inherited from Any

Ungrouped