origen.tester#

Classes#

  • DummyTester: Undocumented.

  • IGXL:

  • Tester: Python interface for the tester backend.

  • V93K: Python interface for the tester backend.

class origen.tester.DummyTester#
generate(ast)#
class origen.tester.IGXL(tester=None)#
add_ac_spec(symbol, specset, selector=Ellipsis, typ=None, min=None, max=None, comment=Ellipsis)#
add_dc_spec(symbol, specset, selector=Ellipsis, typ=None, min=None, max=None, comment=Ellipsis)#
add_dut_pinmap(groups=None, pin_type='I/O', comment='')#

Populate an IG-XL pin map from the active O2 DUT.

Physical pins are emitted once. Multi-pin DUT groups are expanded into ordered IG-XL group rows. Pass groups to restrict group generation; otherwise all non-trivial DUT groups are included.

add_dut_timesets_basic(timesets=None, timing_mode='Machine')#

Derive UltraFLEX Time Sets (Basic) rows from O2 DUT wavetables.

A row is generated for every physical pin with applied waves. Conflicting event times for the same IG-XL edge are rejected, since silently choosing one would change the DUT timing semantics.

add_edgeset(name, pin, src=Ellipsis, format=Ellipsis, drive_on=Ellipsis, drive_data=Ellipsis, drive_return=Ellipsis, drive_off=Ellipsis, compare_mode=Ellipsis, compare_open=Ellipsis, compare_close=Ellipsis, resolution=Ellipsis, timing_mode=Ellipsis, comment=Ellipsis)#
add_global_spec(symbol, value, job=Ellipsis, comment=Ellipsis)#
add_group_pin(group, pin, pin_type=Ellipsis, comment=Ellipsis)#
add_level(pin, parameter, value, comment=Ellipsis)#
add_pin(name, pin_type=Ellipsis, comment=Ellipsis)#
add_power_pin(name, comment=Ellipsis)#
add_reference(path, comment=None)#
add_timeset(name, period, pin, edgeset, clock_period=Ellipsis, setup=Ellipsis, timing_mode=Ellipsis, comment=Ellipsis)#
add_timeset_basic(name, period, pin, clock_period=Ellipsis, setup=Ellipsis, src=Ellipsis, format=Ellipsis, drive_on=Ellipsis, drive_data=Ellipsis, drive_return=Ellipsis, drive_off=Ellipsis, compare_mode=Ellipsis, compare_open=Ellipsis, compare_close=Ellipsis, resolution=Ellipsis, timing_mode=Ellipsis, comment=Ellipsis)#
add_utility_pin(name, pin_type=Ellipsis, comment=Ellipsis)#
dcvi_powersupply(name, allow_missing=False, **kwargs)#
empty(name, allow_missing=False, **kwargs)#
functional(name, allow_missing=False, **kwargs)#
new_custom_test_instance(name, proc_name, allow_missing=False, **kwargs)#
new_flow_line(allow_missing=False, **kwargs)#
new_job(name, **kwargs)#
new_patgroup(name, pattern=None, patterns=None)#
new_patset(name, pattern=None, patterns=None)#
new_patsubr(name, pattern=None, patterns=None)#
new_test_instance(name, template, library=None, allow_missing=False, **kwargs)#
other(name, allow_missing=False, **kwargs)#
pin_pmu(name, allow_missing=False, **kwargs)#
ppmu(name, allow_missing=False, **kwargs)#
set_resource_filename(kind, name)#
set_wait_flags(test_instance, *flags)#
test_instance_group(name)#
class origen.tester.Tester#
apply_pin_header(pin_header)#
apply_timeset(timeset)#

set_timeset(timeset)

Sets the timeset.

>>> origen.tester.set_timeset(origen.dut.timesets['my_timeset'])
origen.tester.timesets['my_timeset']
Parameters:

timeset (_origen.dut.timesets.Timeset, None) – Timeset to set as current, or None to clear

ast#

Prints out the AST for the current flow to the console (for debugging)

ast_to_file(file)#

Write out the AST to the given file (for debugging)

capture(symbol=None, cycles=None, mask=None, pins=None)#
cc(comment: str) self#

Inserts a single-line comment into the AST.

>>> origen.tester.cc("my comment")
<self>
>>> origen.tester.cc("my first comment").cc("my second comment")
<self>
cycle(**kwargs) self#
end_pattern()#
eq(*names)#
generate_pattern_header(header_comments)#
issue_callbacks(func)#
neq(*names)#
overlay(label=None, symbol=None, pins=None, cycles=None, mask=None)#
pin_header#
register_tester(g)#
render_pattern(continue_on_fail=False)#

Attempts to render the pattern on all targeted testers and returns paths to the output files that have been created. There is no need for the Python side to do anything with those, but they are returned in case they are useful in future. Continue on fail means that any errors will be logged but Origen will continue, if false it will blow up and immediately return an error to Python.

repeat(count)#
reset()#

This resets the tester, clearing all loaded targets and any other state, making it ready for a fresh target load. This should only be called from Python code for testing, it will be called automatically by Origen before loading targets.

set_pin_header(pin_header)#
set_timeset(timeset)#

Sets the timeset.

>>> origen.tester.set_timeset(origen.dut.timesets['my_timeset'])
origen.tester.timesets['my_timeset']
Parameters:

timeset (_origen.dut.timesets.Timeset, None) – Timeset to set as current, or None to clear

stats()#
target(*testers)#
targets#
testers#
timeset#

Property for the current _origen.dut.timesets.Timeset or None, if no timeset has been set. Set to None to clear the current timeset.

Returns:

_origen.dut.timesets.Timeset or None

>>> # Initially no timeset has been set
>>> origen.tester.timeset
None
>>> origen.tester.timeset = origen.dut.timesets.Timeset['my_timeset']
origen.dut.timesets.Timeset['my_timeset']
>>> origen.tester.timeset
origen.dut.timesets.Timeset['my_timeset']
>>> # Clear the current timeset
>>> origen.tester.timeset = None
None
>>> origen.tester.timeset
None
class origen.tester.V93K(smt_major_version=None)#
new_test_method(name, library, allow_missing=False, **kwargs)#
new_test_suite(name, allow_missing=False, **kwargs)#