test_ids gem允许基于测试元数据进行bin分组吗?

时间:2019-06-24 13:10:20

标签: origen-sdk

test_ids gem是否可以对测试进行分组,以便分配相同的软箱?例如,以下是在流文件中通过的3个测试:

func :test1, speed: 1000, vdd: :vmin
func :test2, speed: 1200, vdd: :vmin
func :test3, speed: 1000, vdd: :vmax

希望能够告诉test_ids gem按:vdd分组并分配以下软bin(假定范围为200-299):

200, func_vmin
201, func_vmax

如果我通过速度作为分组arg,我将获得以下软bins:

200, func_1000
201, func_1200

上面显示的示例仅传递了一个元数据,但要问的是,可以使用测试元数据的任何组合来创建软bin组名称。

thx

1 个答案:

答案 0 :(得分:1)

没有特殊选项,测试ID插件将使用测试名称作为唯一ID。在这种情况下,名称不同的测试将被分配不同的测试编号,箱和软箱,而名称相同的测试将使用相同的编号。

有时候,像在这种情况下,希望名称不同的测试共享所有或部分测试编号分配,并且有一些选项可以控制这一点。

首先,您可以提供一个test_id:选项,该选项明确定义了分配编号时用于测试的ID,现在您的测试将具有相同的测试编号,bin和softbin:

func :test1, speed: 1000, vdd: :vmin, test_id: :t1
func :test2, speed: 1200, vdd: :vmin, test_id: :t1
func :test3, speed: 1000, vdd: :vmax, test_id: :t1

可以通过为number:bin:和/或softbin:选项提供符号值来进一步进行微调,并在分配该特定数字类型时将其用作测试ID。

例如,这将根据vdd根据需要分配软bin:

func :test1, speed: 1000, vdd: :vmin, softbin: :func_vmin
func :test2, speed: 1200, vdd: :vmin, softbin: :func_vmin
func :test3, speed: 1000, vdd: :vmax, softbin: :func_vmax

此文档涵盖在此处-https://origen-sdk.org/test_ids/#Multiple_Instances_of_the_Same_Test

使用您的测试程序界面,根据您的业务规则,例如通过func方法,以编程方式分配ID:

def func(name, options)
  options[:softbin] = "func_#{options[:vdd] || :nom}".to_sym
  # ...
end

建议将所有func方法这样的测试处理程序移交给一个方法,以将测试添加到流程-https://origen-sdk.org/origen//guides/program/interface/#Detecting_Changes_in_the_Execution_Context

这将使您有一个地方可以实施更多的全局规则,例如使用vdd。与分组速度。 例如,如果要按测试类型分组然后按速度分组,则可以执行以下操作:

def func(name, options)
  options[:softbin] = "func"
  # ...
  add_to_flow(my_test, options)
end

def add_to_flow(test, options)
  if group_by_speed?
    options[:softbin] = "#{options[:softbin]_#{options[:speed] || 1000}".to_sym
  else
    options[:softbin] = "#{options[:softbin]_#{options[:vdd] || :nom}".to_sym
  end
  # ...
end