赛灵思
直播中

王波

7年用户 270经验值
私信 关注
[问答]

有办法用一个Xdc命令获取端口0到9位吗?

假设我有一个端口A,它的宽度是30位。
所以就像A [29:0]。
在Xdc文件中,我尝试使用:
get_ports A [1 *]从10到19获取位,但是它会回退10到19,但它也会退回A [1]。
我不知道我能从A [0]返回到A [9]。
有没有办法用一个Xdc命令而不是:
get_ports A [0]
get_ports A [1]



逐个?
谢谢。

以上来自于谷歌翻译


以下为原文

Assume I have a port A, the width of it is 30 bits. So it is like  A[29:0].

In Xdc file, I try to use :

get_ports A[1*] to get bits from 10 to 19, but it retures 10 to 19, but it also retures A[1].

And I have no idea can I get return from A[0] to A[9]. Is there any approach to get these bits with one Xdc command instead of:

get_ports A[0]
get_ports A[1]
.
.
.

one by one?

Thanks.

回帖(12)

陈玉筠

2019-3-6 11:57:09
默认情况下,get_ports(和其他get_ *命令)使用“glob”通配符。
在“glob”通配符中,*表示“任意数量的任何字符”和一个?
意思是“任何一个角色”(+也做了一些事,但我从不使用它)。
因此,你可以使用
get_ports A [?];
#为0-9位
get_ports A [1?];
#为10-19位
get_ports(以及其他get_ *命令)可以更改其行为以使用正则表达式而不是glob通配符。
为此,您必须在命令中添加-regexp选项。
然后你可以做muzaffer建议的,但你必须小心“真正的”方形支架。
get_ports -regexp“A  [[0-9] ]”;
#对于0-9位
get_ports -regexp“A  [1 [0-9] ]”;
#为10-19位
Avrum
在原帖中查看解决方案

以上来自于谷歌翻译


以下为原文

By default, the get_ports (and other get_* commands) use "glob" wildcarding. In "glob" wildcarding, a * means "any number of any characters" and a ? means "any one character" (The + does something as well, but I never use it).
 
Thus, you can use
 
get_ports A[?];   # for bits 0-9
get_ports A[1?]; # for bits 10-19
 
 
The get_ports (and other get_* commands) can change their behavior to use regular expressions instead of glob wildcarding. To do this, you have to add the -regexp option to the command. Then you can do what muzaffer suggested, but you have to be careful with the "real" square brakets.
 
get_ports -regexp "A[[0-9]]";   # For bits 0-9
get_ports -regexp "A[1[0-9]]"; # for bits 10-19
 
Avrum
View solution in original post
举报

陈苏文

2019-3-6 12:04:07
你可以把它放在一个循环中。
我认为XDC支持主机TCL:for {set i 0} {$ i ... get_ports A [$ i]}另一种选择是使用更受限制的正则表达式。
我想你应该能够说get_ports A [[0-9]。],即给定列表中的单个字符。
您可能需要进行一些实验,因为我不确定Xilinx在XDC中支持哪种RE实现。
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。

以上来自于谷歌翻译


以下为原文

You can put it in a loop. I think XDC support hosts TCL:

for {set i 0} {$i < 10} {incr i} {
    ... get_ports A[$i]
}

Another option is to use a more restricted regular expression. I think you should be able to say
get_ports A[[0-9].]
ie a single character from the given list. You may need to experiment a little bit as I am not sure which RE implementation Xilinx supports in XDC.- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
举报

陈玉筠

2019-3-6 12:16:58
默认情况下,get_ports(和其他get_ *命令)使用“glob”通配符。
在“glob”通配符中,*表示“任意数量的任何字符”和一个?
意思是“任何一个角色”(+也做了一些事,但我从不使用它)。
因此,你可以使用
get_ports A [?];
#为0-9位
get_ports A [1?];
#为10-19位
get_ports(以及其他get_ *命令)可以更改其行为以使用正则表达式而不是glob通配符。
为此,您必须在命令中添加-regexp选项。
然后你可以做muzaffer建议的,但你必须小心“真正的”方形支架。
get_ports -regexp“A  [[0-9] ]”;
#对于0-9位
get_ports -regexp“A  [1 [0-9] ]”;
#为10-19位
Avrum

以上来自于谷歌翻译


以下为原文

By default, the get_ports (and other get_* commands) use "glob" wildcarding. In "glob" wildcarding, a * means "any number of any characters" and a ? means "any one character" (The + does something as well, but I never use it).
 
Thus, you can use
 
get_ports A[?];   # for bits 0-9
get_ports A[1?]; # for bits 10-19
 
 
The get_ports (and other get_* commands) can change their behavior to use regular expressions instead of glob wildcarding. To do this, you have to add the -regexp option to the command. Then you can do what muzaffer suggested, but you have to be careful with the "real" square brakets.
 
get_ports -regexp "A[[0-9]]";   # For bits 0-9
get_ports -regexp "A[1[0-9]]"; # for bits 10-19
 
Avrum
举报

李凤英

2019-3-6 12:34:59
非常感谢,你们俩。
它看起来像使用“?”
是一个更好的主意。
是否有任何文档可以在Xdc文件中学习这些语法?谢谢。

以上来自于谷歌翻译


以下为原文

Thanks very much, both of you. It looks like using "?" is a better idea.

Is there any document to learn these grammars in Xdc file?

Thanks.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分