Origen子流程和已通过的选项

时间:2018-06-20 13:06:51

标签: origen-sdk

test program docs中,我看到此代码位,表明将有一些默认选项传递给子流。

  # These are the option defaults that will be used unless specified by the caller
  options = {
    include_loaded_output_tests: true,
    index: 0,
  }.merge(options)

但是当我在子流中设置断点时,我看到的只是一个空哈希。如果我在子流中传递了一些选项,则会显示它们:

# In top-level flow
import 'scan_coverage_flow', test_modes: test_modes

# In the sub-flow
From: /users/user/origen/prod/scan/origen/_scan_coverage_flow.rb @ line 3 :

    1: Flow.create do |options|
    2:   binding.pry

[1] pry(#<AmdTest::Interface>)> options
=> {:test_modes=>
  {"mode1"=><Model: Origen::SubBlock:23972990241220>,

文档是最新的还是误读了?

thx

1 个答案:

答案 0 :(得分:1)

您误读了文档,它旨在显示如何设置特定于子流的默认选项。

说我们有一个空的子流程,只打印出选项:

# _my_sub_flow.rb
Flow.create do |options|
  puts options
end

这样调用应该会打印出一个空哈希值:

import "my_sub_flow"

# => {}

如果您添加一些默认选项:

Flow.create do |options|
  options = { a: 10,
              b: 20
  }.merge(options)

  puts options
end

然后它将按照您的期望进行操作:

import "my_sub_flow"

# => {a: 10, b: 20}

当然,拥有选项的原因是您可以在通话时覆盖它们:

import "my_sub_flow", b: 50

# => {a: 10, b: 50}