Specman - 将 uint 十进制数分配给序列
Specman - Assign uint decimal number to sequence
我有以下顺序:
extend CONFIG_ADC_CLK ocp_master_sequence_q {
divide_by : uint(bits:4);
align_by : uint(bits:4);
body()@driver.clock is {
var div : uint(bits:3);
case divide_by {
1 : { div = 0; };
2 : { div = 1; };
4 : { div = 2; };
8 : { div = 3; };
16 : { div = 4; };
default : { dut_error(divide_by," is not a legal Clock division for ADC"); };
};
gad_regs.gad_clk_gen.clk_algn = align_by;
gad_regs.gad_clk_gen.clk_dev = div;
do WR_REG seq keeping {.reg==gad_regs.gad_clk_gen;};
};
};//extend CONFIG_ADC_CLK ocp_master_sequence_q {
在测试中我使用序列:
做 CONFIG_ADC_CLK seq 保持 {.divide_by== 3;.align_by==0;};
出于某种原因,编译器将字段 divide_by
的编号引用为十六进制数而不是十进制数。
我怎样才能确保它将它引用为十进制?
这与序列无关,也与数字分配给字段的方式无关。它只是关于数值在打印和字符串操作中如何格式化。字段的实际值与其打印方式无关。
默认情况下,dut_error()
、message()
、out()
、append()
和其他字符串格式化例程使用 config print -radix
的当前设置。因此,您可能在您的环境中将其设置为 HEX
。
如果你需要这个特定的 dut_error()
总是使用十进制格式,无论配置设置是什么,你都可以使用 dec()
,像这样:
dut_error(dec(divide_by)," is not a legal Clock division for ADC");
顺便说一句,当使用这些例程的第二个变体时,例如 dut_errorf()
或 appendf()
,您可以通过提供正确的 %
参数来确定基数,例如, %d
表示小数或 %x
表示六进制,例如,上面的 dut_error()
可以重写为:
dut_errorf("%d is not a legal Clock division for ADC", divide_by);
这里也可以使用%s
,此时仍然使用config radix设置。
我有以下顺序:
extend CONFIG_ADC_CLK ocp_master_sequence_q {
divide_by : uint(bits:4);
align_by : uint(bits:4);
body()@driver.clock is {
var div : uint(bits:3);
case divide_by {
1 : { div = 0; };
2 : { div = 1; };
4 : { div = 2; };
8 : { div = 3; };
16 : { div = 4; };
default : { dut_error(divide_by," is not a legal Clock division for ADC"); };
};
gad_regs.gad_clk_gen.clk_algn = align_by;
gad_regs.gad_clk_gen.clk_dev = div;
do WR_REG seq keeping {.reg==gad_regs.gad_clk_gen;};
};
};//extend CONFIG_ADC_CLK ocp_master_sequence_q {
在测试中我使用序列: 做 CONFIG_ADC_CLK seq 保持 {.divide_by== 3;.align_by==0;};
出于某种原因,编译器将字段 divide_by
的编号引用为十六进制数而不是十进制数。
我怎样才能确保它将它引用为十进制?
这与序列无关,也与数字分配给字段的方式无关。它只是关于数值在打印和字符串操作中如何格式化。字段的实际值与其打印方式无关。
默认情况下,dut_error()
、message()
、out()
、append()
和其他字符串格式化例程使用 config print -radix
的当前设置。因此,您可能在您的环境中将其设置为 HEX
。
如果你需要这个特定的 dut_error()
总是使用十进制格式,无论配置设置是什么,你都可以使用 dec()
,像这样:
dut_error(dec(divide_by)," is not a legal Clock division for ADC");
顺便说一句,当使用这些例程的第二个变体时,例如 dut_errorf()
或 appendf()
,您可以通过提供正确的 %
参数来确定基数,例如, %d
表示小数或 %x
表示六进制,例如,上面的 dut_error()
可以重写为:
dut_errorf("%d is not a legal Clock division for ADC", divide_by);
这里也可以使用%s
,此时仍然使用config radix设置。