bag3_testbenches.measurement.tran.digital

Module Contents

Classes

DigitalTranTB

A transient testbench with digital stimuli. All pins are connected to either 0 or 1.

class bag3_testbenches.measurement.tran.digital.DigitalTranTB(*args: Any, **kwargs: Any)[source]

Bases: bag3_testbenches.measurement.tran.base.TranTB

A transient testbench with digital stimuli. All pins are connected to either 0 or 1.

Notes

specification dictionary has the following entries in addition to the default ones:

sim_paramsMapping[str, float]

Required entries are listed below.

t_simfloat

the total simulation time.

t_rstfloat

the duration of reset signals.

t_rst_rffloat

the reset signals rise/fall time.

pulse_listSequence[Mapping[str, Any]]

Optional. List of pulse sources. Each dictionary has the following entries:

pinstr

the pin to connect to.

tperUnion[float, str]

period.

tpwUnion[float, str]

the pulse width, measures from 50% to 50%, i.e. it is tper/2 for 50% duty cycle.

trfUnion[float, str]

rise/fall time as defined by thres_lo and thres_hi.

tdUnion[float, str]

Optional. Pulse delay in addition to any reset period, Measured from the end of reset period to the 50% point of the first edge.

posbool

Defaults to True. True if this is a positive pulse (010).

td_after_rst: bool

Defaults to True. True if td is measured from the end of reset period, False if td is measured from t=0.

reset_listSequence[Tuple[str, bool]]

Optional. List of reset pin name and reset type tuples. Reset type is True for active-high, False for active-low.

rtolfloat

Optional. Relative tolerance for equality checking in timing measurement.

atolfloat

Optional. Absolute tolerance for equality checking in timing measurement.

thres_lofloat

Optional. Low threshold value for rise/fall time calculation. Defaults to 0.1

thres_hifloat

Optional. High threshold value for rise/fall time calculation. Defaults to 0.9

subclasses’ specs dictionary must have pwr_domain, rtol, atol, thres_lo, and thres_hi.

property t_rst_end_expr: str[source]
property thres_lo: float[source]
property thres_hi: float[source]
property trf_scale: float[source]
commit() None[source]

Commit changes to specs dictionary. Perform necessary initialization.

get_t_rst_end(data: bag.simulation.data.SimData) numpy.ndarray[source]
pre_setup(sch_params: Optional[Mapping[str, Any]]) Optional[Mapping[str, Any]][source]

Set up PWL waveform files.

get_reset_sources(reset_list: Iterable[Tuple[str, bool]], src_list: List[Mapping[str, Any]], src_pins: Set[str], skip_src: bool = False) None[source]
get_pulse_sources(pulse_list: Iterable[Mapping[str, Any]], src_list: List[Mapping[str, Any]], src_pins: Set[str]) None[source]
calc_cross(data: bag.simulation.data.SimData, out_name: str, out_edge: bag3_testbenches.measurement.data.tran.EdgeType, t_start: Union[numpy.ndarray, float, str] = 0, t_stop: Union[numpy.ndarray, float, str] = float('inf')) numpy.ndarray[source]
calc_delay(data: bag.simulation.data.SimData, in_name: str, out_name: str, in_edge: bag3_testbenches.measurement.data.tran.EdgeType, out_edge: bag3_testbenches.measurement.data.tran.EdgeType, t_start: Union[numpy.ndarray, float, str] = 0, t_stop: Union[numpy.ndarray, float, str] = float('inf')) numpy.ndarray[source]
calc_trf(data: bag.simulation.data.SimData, out_name: str, out_rise: bool, allow_inf: bool = False, t_start: Union[numpy.ndarray, float, str] = 0, t_stop: Union[numpy.ndarray, float, str] = float('inf')) numpy.ndarray[source]
_add_diff_sources(pin: str, ptable_list: Sequence[Mapping[str, Any]], rs: Union[float, str], src_list: List[Mapping[str, Any]], src_pins: Set[str]) None[source]
_add_diff_sources_helper(pin_list: Sequence[str], table_list: Sequence[Mapping[str, Any]], rs: Union[float, str], src_list: List[Mapping[str, Any]], src_pins: Set[str]) None[source]