- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个测试用例,其中的行为似乎是错误的。我看到在所有世代中,num_of_red_shoes 都很高,而我希望分布更均匀。这种行为的原因是什么?如何解决?
<'
struct closet {
kind:[SMALL,BIG];
num_of_shoes:uint;
num_of_red_shoes:uint;
num_of_black_shoes:uint;
num_of_yellow_shoes:uint;
keep soft num_of_red_shoes < 10;
keep soft num_of_black_shoes < 10;
keep soft num_of_yellow_shoes < 10;
keep num_of_yellow_shoes + num_of_black_shoes + num_of_red_shoes == num_of_shoes;
when BIG closet {
keep num_of_shoes in [50..100];
};
};
extend sys {
closets[100]:list of BIG closet;
};
'>
生成结果:
item type kind num_of_sh* num_of_re* num_of_bl* num_of_ye*
---------------------------------------------------------------------------
0. BIG closet BIG 78 73 1 4
1. BIG closet BIG 67 50 8 9
2. BIG closet BIG 73 68 0 5
3. BIG closet BIG 73 66 3 4
4. BIG closet BIG 51 50 0 1
5. BIG closet BIG 78 76 1 1
6. BIG closet BIG 55 43 7 5
7. BIG closet BIG 88 87 1 0
8. BIG closet BIG 99 84 6 9
9. BIG closet BIG 92 92 0 0
10. BIG closet BIG 63 55 3 5
11. BIG closet BIG 59 50 9 0
12. BIG closet BIG 51 44 2 5
13. BIG closet BIG 82 76 1 5
14. BIG closet BIG 81 74 2 5
15. BIG closet BIG 97 93 2 2
16. BIG closet BIG 54 41 8 5
17. BIG closet BIG 55 44 5 6
18. BIG closet BIG 70 55 9 6
19. BIG closet BIG 63 57 1 5
最佳答案
当存在相互矛盾的软约束时,Specman 不会随机化强制执行的软约束,而是优先考虑最后写入的约束。由于 soft on red shoes 在测试中排在第一位,因此它总是被覆盖。
如果已知软件是相互排斥的(这里不是这种情况),您可以使用一个简单的标志来随机选择应该保留哪个软件。例如代码看起来像这样:
flag:uint[0..2];
keep soft read_only(flag==0) => num_of_red_shoes < 10;
keep soft read_only(flag==1) => num_of_black_shoes < 10;
keep soft read_only(flag==2) => num_of_yellow_shoes < 10;
但是,由于这里事先并不知道有多少个软件需要保存(并且有可能满足两个或所有三个),因此应该制定更复杂的解决方案。这是执行此随机化的代码:
struct closet {
kind:[SMALL,BIG];
num_of_shoes:uint;
num_of_red_shoes:uint;
num_of_black_shoes:uint;
num_of_yellow_shoes:uint;
//replaces the original soft constraints (if a flag is true the correlating
//right-side implication will be enforced
soft_flags[3]:list of bool;
keep for each in soft_flags {
soft it == TRUE;
};
//this list is used to shuffle the flags so their enforcement will be done
//with even distribution
soft_indices:list of uint;
keep soft_indices.is_a_permutation({0;1;2});
keep soft_flags[soft_indices[0]] => num_of_red_shoes < 10;
keep soft_flags[soft_indices[1]] => num_of_black_shoes < 10;
keep soft_flags[soft_indices[2]] => num_of_yellow_shoes < 10;
keep num_of_yellow_shoes + num_of_black_shoes + num_of_red_shoes == num_of_shoes;
};
关于specman - 矛盾软约束的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558580/
在 E (specman) 中,我想声明作为列表的变量,并且我想修复它们的长度。 对于结构体的成员很容易做到: thread[2] : list of thread_t; 而对于函数中的“常规”变量,
specman 是否有类似 lex_lt(s1,s2) 的方法? (即按字典顺序比较字符串)。如果没有,是否有推荐的方法来实现相同的目标? 最佳答案 好像没有。你可以在这里做两件事。您可以在 e 中实
我制作了 2 个记录器,每个线程一个,如下所示 (THREAD=2): lsd_logger[THREADS] : list of message_logger is instance;
我想计算 Specman 中 uint 中设置的位数: var x: uint; gen x; var x_set_bits: uint; x_set_bits = ?; 最好的方法是什么? 最佳答案
我需要向specman指定测试中dut_errors的最大数量,在该限制之后测试应终止。目前,我可以选择在出现错误时终止测试或从不终止测试。 最佳答案 您还可以将check_effect更改为ERRO
我想定义一个返回大小列表的方法。例如。 my_method(): list of my_struct is { ... }; 显然会返回一个未知大小的列表。在线文档没有将大小列表作为返回值的语法定义。
我有一个测试用例,其中的行为似乎是错误的。我看到在所有世代中,num_of_red_shoes 都很高,而我希望分布更均匀。这种行为的原因是什么?如何解决? 生成结果: item type
你好, 我扩展了一个现有的 specman 测试,其中出现了一些像这样的代码: struct dataset { !register : int (bits:16); ... other me
假设我有这个单位 unit agent { init_all_regs() @clock is {…}; }; 我有一个代理列表,代理的数量各不相同。我想调用所有代理的 init_all_re
我使用一堆集合来生成受约束的随机流量,但我希望能够调用一个 Specman 宏来计算一个集合的补充,语法如下: COMPLEMENT begin domain=[0..10,24..30],
我有一个返回 const char * 的 c 方法,我将这个函数导入到我的 specman 代码中。在“e”中执行更多语句后,字符串中的值已损坏。我猜可能是因为它指的是 C 空间中的指针。 C 签名
我已将变量名称存储在另一个变量中,我想从原始变量中检索值。 例如: var var_A: list of uint = {1,3,2}; var var_A_str:string = "var_A";
在我的验证环境中,我们使用 vr_ad UVM 包,其中有一个寄存器 vr_ad_reg 的通用结构,它已扩展为环境中每个寄存器的不同类型等: reg_def TIMER_LOAD_0 TIMER 2
我有这样定义的 my_list: struct my_struct { comparator[2] : list of int(bits:16); something_else[2]
我正在为 e 使用 vr_ad 包。我在 vr_ad_reg_file my_reg_file 中定义了一个寄存器 my_reg: reg_def MY_REG MY_REG_FILE 20'h000
我有一个这样定义的 my_list_1(结构列表): struct my_struct { something[2] : list of int; something_else[2]
我是一名优秀的程序员,十分优秀!