|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface OutputSignal
Represents an output signal (or multiple-bit output signal bus). It provides methods that:
When driving a signal, the drive value maybe any of the following types:
Drives have several options that control how and when the signal is driven:
Synchronous vs. asynchronous drives
Synchronous drives occur relative to a specified edge of an associated clock signal (plus the associated output skew). There are methods to perform synchronous drives on the current/next clock edge, as well as an arbitrary number of edges into the future. Asynchronous drives do not synchronize relative to the clock, and drive their value at the current time (plus the output skew).
Blocking vs. non-blocking drives
Blocking drives suspend the simulation thread (i.e. block the caller) until the appropriate drive edge is reached. Non-blocking drives schedule the drive for the appropriate edge and return immediately.
Strong vs. soft drives
By default, all drives are strong drives, which means that driving a signal with multiple different values in the same simulation cycle results in a simulation error (specifically, a DVRuntimeException). Soft drives allow such drives to occur without causing a simulation error. If multiple soft drives conflict (and there is no strong drive), the signal is driven to X. (For multiple-bit signals, only the conflicting bits are driven to X.) If one or more soft drives conflict with a strong drive, the value of the strong drive is used.
Range drives
By default, when a multiple-bit signal bus is driven, all bits of the bus are driven together. Range drives allow a specified range of bits in the bus to be driven independently. Bits that are not driven in a given cycle retain their current value. For the purposes of detecting drive conflicts (strong or soft), each bit in the bus is considered independently (i.e. multiple drives of different bits is not a conflict, whereas multiple drives of different values to the same bit or bits is a conflict).
| Method Summary | |
|---|---|
void |
drive(Object value)
Performs a strong drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveAsync(Object value)
Performs an immediate strong drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveAsyncSoft(Object value)
Performs an immediate soft drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveDelay(int cycles,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a strong drive of the signal. |
void |
driveDelayNB(int cycles,
Object value)
Performs a non-blocking strong drive of this signal the given number of cycles into the future. |
void |
driveDelaySoft(int cycles,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a soft drive of the signal. |
void |
driveDelaySoftNB(int cycles,
Object value)
Performs a non-blocking soft drive of this signal the given number of cycles into the future. |
void |
driveNB(Object value)
Performs a non-blocking strong drive of this signal. |
void |
driveRange(BitRange range,
Object value)
Performs a strong range drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveRange(int highBit,
int lowBit,
Object value)
Performs a strong range drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveRangeAsync(BitRange range,
Object value)
Performs an immediate strong range drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveRangeAsync(int highBit,
int lowBit,
Object value)
Performs an immediate strong range drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveRangeAsyncSoft(BitRange range,
Object value)
Performs an immediate soft range drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveRangeAsyncSoft(int highBit,
int lowBit,
Object value)
Performs an immediate soft range drive of this signal, without synchronizing to the drive edge of the clock. |
void |
driveRangeDelay(int cycles,
BitRange range,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a strong range drive of the signal. |
void |
driveRangeDelay(int cycles,
int highBit,
int lowBit,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a strong range drive of the signal. |
void |
driveRangeDelayNB(int cycles,
BitRange range,
Object value)
Performs a non-blocking strong range drive of this signal the given number of cycles into the future. |
void |
driveRangeDelayNB(int cycles,
int highBit,
int lowBit,
Object value)
Performs a non-blocking strong range drive of this signal the given number of cycles into the future. |
void |
driveRangeDelaySoft(int cycles,
BitRange range,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a soft range drive of the signal. |
void |
driveRangeDelaySoft(int cycles,
int highBit,
int lowBit,
Object value)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times, then performs a soft range drive of the signal. |
void |
driveRangeDelaySoftNB(int cycles,
BitRange range,
Object value)
Performs a non-blocking soft range drive of this signal the given number of cycles into the future. |
void |
driveRangeDelaySoftNB(int cycles,
int highBit,
int lowBit,
Object value)
Performs a non-blocking soft range drive of this signal the given number of cycles into the future. |
void |
driveRangeNB(BitRange range,
Object value)
Performs a non-blocking strong range drive of this signal. |
void |
driveRangeNB(int highBit,
int lowBit,
Object value)
Performs a non-blocking strong range drive of this signal. |
void |
driveRangeSoft(BitRange range,
Object value)
Performs a soft range drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveRangeSoft(int highBit,
int lowBit,
Object value)
Performs a soft range drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveRangeSoftNB(BitRange range,
Object value)
Performs a non-blocking soft range drive of this signal. |
void |
driveRangeSoftNB(int highBit,
int lowBit,
Object value)
Performs a non-blocking soft range drive of this signal. |
void |
driveSoft(Object value)
Performs a soft drive of this signal, after synchronizing to the drive edge of the clock, as if by a call to syncDrive(). |
void |
driveSoftNB(Object value)
Performs a non-blocking soft drive of this signal. |
com.newisys.verilog.EdgeSet |
getOutputEdges()
Returns the set of clock edges this signal is driven at. |
int |
getOutputSkew()
Returns the skew (in simulator ticks) relative to the clock edge at which this signal is driven. |
void |
syncDrive()
Suspends this thread until the clock for this signal is at the drive edge. |
void |
syncDriveDelay(int cycles)
Suspends this thread until the clock for this signal reaches the drive edge the given number of times. |
| Methods inherited from interface com.newisys.dv.Signal |
|---|
getClock, getName, getSize |
| Method Detail |
|---|
com.newisys.verilog.EdgeSet getOutputEdges()
int getOutputSkew()
void drive(Object value)
value - the value to drivesyncDrive()void driveNB(Object value)
value - the value to drive
void driveDelay(int cycles,
Object value)
cycles - the number of times the drive edge must be observedvalue - the value to drive
void driveDelayNB(int cycles,
Object value)
cycles - the number of times the drive edge must be observedvalue - the value to drivevoid driveAsync(Object value)
value - the value to drivevoid driveSoft(Object value)
value - the value to drivesyncDrive()void driveSoftNB(Object value)
value - the value to drive
void driveDelaySoft(int cycles,
Object value)
cycles - the number of times the drive edge must be observedvalue - the value to drive
void driveDelaySoftNB(int cycles,
Object value)
cycles - the number of times the drive edge must be observedvalue - the value to drivevoid driveAsyncSoft(Object value)
value - the value to drive
void driveRange(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drivesyncDrive()
void driveRange(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drivesyncDrive()
void driveRangeNB(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeNB(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drive
void driveRangeDelay(int cycles,
int highBit,
int lowBit,
Object value)
cycles - the number of times the drive edge must be observedhighBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeDelay(int cycles,
BitRange range,
Object value)
cycles - the number of times the drive edge must be observedrange - the range of bits to drivevalue - the value to drive
void driveRangeDelayNB(int cycles,
int highBit,
int lowBit,
Object value)
cycles - the number of times the drive edge must be observedhighBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeDelayNB(int cycles,
BitRange range,
Object value)
cycles - the number of times the drive edge must be observedrange - the range of bits to drivevalue - the value to drive
void driveRangeAsync(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeAsync(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drive
void driveRangeSoft(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drivesyncDrive()
void driveRangeSoft(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drivesyncDrive()
void driveRangeSoftNB(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeSoftNB(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drive
void driveRangeDelaySoft(int cycles,
int highBit,
int lowBit,
Object value)
cycles - the number of times the drive edge must be observedhighBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeDelaySoft(int cycles,
BitRange range,
Object value)
cycles - the number of times the drive edge must be observedrange - the range of bits to drivevalue - the value to drive
void driveRangeDelaySoftNB(int cycles,
int highBit,
int lowBit,
Object value)
cycles - the number of times the drive edge must be observedhighBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeDelaySoftNB(int cycles,
BitRange range,
Object value)
cycles - the number of times the drive edge must be observedrange - the range of bits to drivevalue - the value to drive
void driveRangeAsyncSoft(int highBit,
int lowBit,
Object value)
highBit - the index of the highest bit to drivelowBit - the index of the lowest bit to drivevalue - the value to drive
void driveRangeAsyncSoft(BitRange range,
Object value)
range - the range of bits to drivevalue - the value to drivevoid syncDrive()
void syncDriveDelay(int cycles)
cycles - the number of times the drive edge must be observed
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||