Specman 宏对 int_range_list 对象进行集合减法
我使用一堆集合来生成受约束的随机流量,但我希望能够调用 Specman 宏来计算集合的补集,其语法如下:
COMPLEMENT begin
domain=[0..10,24..30],
complementing_set=[2..3,27..30]
end
并让它生成:
[0..1,4..10,24..26]
每次我需要一个集合的补集时我使用完全填充的列表(例如 {0;1;2;3....} ),然后删除元素,而不是使用 Specman 的内置 int_range_list 对象。 我还在运行时而不是编译时进行了很多这些集合计算。
I work with a bunch of sets in order to generate constrained random traffic, but I want to be able to call a Specman macro that computes the complement of a set with syntax like:
COMPLEMENT begin
domain=[0..10,24..30],
complementing_set=[2..3,27..30]
end
and have it generate:
[0..1,4..10,24..26]
Every time I need the complement of a set I'm using fully populated lists (e.g. {0;1;2;3....} ) and then removing elements, instead of using Specman's built-in int_range_list object. And I'm also doing a lot of these set calculations at run-time instead of compile-time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试以下操作:
all
伪方法生成父列表中括号中的条件成立的所有元素的父列表的子列表。You can try this:
The
all
pseudo-method generates a sublist of the parent list of all the elements in the parent list for which the condition in the parentheses holds.在 Specman 的最新版本中,您可以使用预定义的
set
类型,它正是用于此目的。 例如,您可以执行以下操作:甚至可以执行以下操作: 等等
。
In the recent versions of Specman, you can use the pre-defined
set
type, that serves exactly this purpose. For example, you can do things like this:and even like this:
etc.
另一种方法可能是使用 uints,假设您有 500 个可能的值:
您可以稍后根据您的域与可能值的比率提取索引,
此方法可能会更快地计算
one more way may be to use uints, say you have a 500 possible values:
you can later extract the indices with
depending on your domain to possible values ratio this method may be quicker to calculate