Simulation
Simulating Flows
A flow, meaning a sequence of patterns, can be simulated in two ways - by supplying a list of patterns or by configuring a test program generator flow to support simulation.
If you were to run this:
origen g my_pat_1 my_pat_2 -e environment/sim.rb
then it would run the two patterns as two independent simulations, creating two waveforms named after each pattern.
They can be combined into a single simulation by adding a --flow
option:
origen g my_pat_1 my_pat_2 -e environment/sim.rb --flow my_flow
This will simulate the given patterns back-back and dump them to a waveform named after the flow option, in this case “my_flow”.
The list of patterns can also be supplied via a list file:
origen g list/regression.list -e environment/sim.rb --flow regression
To simulate a pattern sequence defined by a test program flow, it is necessary to setup your interface to support the simulation tester driver as if it were another ATE.
The simulation tester driver has no concept of test methods, suites or instances, so its interface setup is very simple -
once you have the pattern name simply pass that to the test
method:
# Example interface method
def func(name, options = {})
# Resolve the pattern name as required
pattern = extract_pattern_name(name, options)
if tester.sim?
test(pattern, options)
elsif tester.v93k?
t = test_suites.add(:vreg_func)
t.test_method = test_methods.origen.functional_test
t.pattern = pattern
test(t, options)
else
fail "The test program interface has not been setup for #{tester.class}!"
end
end
To simulate the flow, run the program generator as normal but with the simulation environment selected:
origen p program/my_flow.rb -e environment/sim.rb
The generated wave will be named after the flow, my_flow in this example.