在$ dut初始化過程中,我創建了許多測試接口參數。該應用以「加載」或「導入」模式進入模型,因爲我們從第三方獲得許多信息來源。爲參數,源是本地Ruby所以無論init方法(負荷或進口)的代碼需要這樣的:
send modeling_method, model_path # load_params or import_params
這裏是方法(或多個):
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'
這裏是該文件的內容上面要求:
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>>
我可以,不過,見$ DUT模型的其他部分,如腳和sub_blocks:
[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>,
看起來好像它們在模型初始化和測試流程生成之間有時會被擦除。因此,我在'on_load_target' callback中放置了一個斷點,並且每次觸發斷點時都會看到不同的結果。在第一次休息時,參數在那裏,隨後的休息時間他們沒有。
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>>
我相信有可能是2個問題在這裏:
1)測試流程生成過程中的$ DUT的重複初始化,記錄here
2)參數設置散列的排空,這是由於問題#1(和一些參數集初始化代碼
我相信它參數@owner被定義爲參數定義中的$ dut實例和@owner被重新定義在隨後的參數查詢中被定義爲$ dut ProductController實例。
THX
你能提供在哪裏/如何第一代碼片段(Origen.top_level.define_params ...)被調用的更多信息? – Ginty