$ dutの初期化中に多くのテストインターフェイスパラメータを作成します。アプリは、「ロード」モードまたは「インポート」モードのモデルを採用しています。これは、第三者から多くの情報源を得るためです。パラメータについては、ソースは、天然ルビーのでかかわらず、initメソッド(ロードまたはインポート)のコードは、このように必要とされる:
def load_params(path)
Origen.log.info("PPEKit: Modeling parameters from #{path}")
require path.to_s.chomp('.rb')
Origen.log.info("PPEKit: Modeling of parameters complete")
end
alias_method 'import_params', 'load_params'
ここで:ここ
send modeling_method, model_path # load_params or import_params
は、方法(複数可)ということですファイルの内容は、上記の必要:
Origen.top_level.define_params :default do |params|
params.bist.override = 1
params.bist.lev_equ_set = 1
params.bist.lev_spec_set = 1
params.bist.levset = 1
params.bist.seqlbl = 'mbist_cpu_hr_vnom_burst'
params.bist.override_tim_spec_set = 'bist_25Mhz'
params.bist.override_timset = '1,1,1,1,1,1,1,1'
params.bist.site_control = 'parallel:'
params.bist.site_match = 2
end
は、私は「原産地pがmyflowfile.rb」コマンドの実行中に私の$ DUTの初期化の最後にそれらを見ることができます。
[5] pry(#<PPEKit::Product>)> $dut.params
=> {:bist=>
{:override=>1,
:lev_equ_set=>1,
:lev_spec_set=>1,
:levset=>1,
:seqlbl=>"mbist_cpu_hr_vnom_burst",
:override_tim_spec_set=>"bist_25Mhz",
:override_timset=>"1,1,1,1,1,1,1,1",
:site_control=>"parallel:",
:site_match=>2}}
原産地は、テストインタフェースコードに遷移するときしかし、paramsははアクセスできない。
[1] pry(#<STP::Interface>)> $dut.params
=> #<Origen::Parameters::Missing:0x002aaab22dc378
@owner=<Model/Controller: PPEKit::Product:23456337817000/PPEKit::ProductController:23456355062960>>
Iが、しかし、そのようなピン及びsub_blocksとして$のDUTモデルの他の部分を見ることができる。
[2] pry(#<STP::Interface>)> $dut.sub_blocks
=> {"block0"=><Model: PPEKit::Product::Block0:23456336916760>,
"block1"=><Model: PPEKit::Product::Block1:23456336907380>,
"block2"=><Model: PPEKit::Product::Block2:23456336841100>,
モデルinitとテストフロー生成の間でいつか消去されるようです。そこで私は'on_load_target' callbackにブレークポイントを設定し、ブレークポイントに達するたびに異なる結果を見ました。最初の休憩では、パラームはそこにあり、それ以降の休憩ではパラームはなかった。私はここで2つの問題があるかもしれないと信じて
75: def on_load_target
=> 76: binding.pry
77: to_origen(path: vendor_path.to_s, instantiate_level: :sub_block) if @import
78: end
[1] pry(#<PPEKit::Product>)> $dut.params
=> {:bist=>
{:override=>1,
:lev_equ_set=>1,
:lev_spec_set=>1,
:levset=>1,
:seqlbl=>"mbist_ccx_hr_vnom_burst",
:override_tim_spec_set=>"bist_25Mhz",
:override_timset=>"1,1,1,1,1,1,1,1",
:site_control=>"parallel:",
:site_match=>2}}
[2] pry(#<PPEKit::Product>)>
Frame number: 0/25
From: /users/user/origen/ppekit/lib/ppekit/product.rb @ line 76 PPEKit::Product#on_load_target:
75: def on_load_target
=> 76: binding.pry
77: to_origen(path: vendor_path.to_s, instantiate_level: :sub_block) if @import
78: end
[1] pry(#<PPEKit::Product>)> $dut.params
=> #<Origen::Parameters::Missing:0x002aaab9f3ad48
@owner=<Model/Controller: PPEKit::Product:23456377300040/PPEKit::ProductController:23456379739240>>
:
1)テストフロー生成中の$ DUTの繰り返し初期化は、here
2)パラメータセットのハッシュの排出を文書化し、これは#1の問題が原因です(パラメータセット初期化コード
パラメータ定義中に$ dutインスタンスとして定義されているパラメータ@ownerと関係があり、パラメータ定義中に@ownerが再定義されていると考えられますそれ以降のパラメータのクエリで$ dut ProductControllerインスタンスとしてインジェクトされます。
THX
最初のコードスニペット(Origen.top_level.define_params ...)がどこで/どのように呼び出されていますか? – Ginty