Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何对列表进行搜索

如何对列表进行搜索

作者头像
Lauren的FPGA
发布于 2019-10-30 11:25:44
发布于 2019-10-30 11:25:44
3.1K0
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

思考空间

代码第17行对RAM的初始化是否可综合?

logic [31:0] ram_block[1024] = '{default:0}

该语句是可以综合的,可在综合后的网表中选中该RAM,在相应的属性窗口中可看到初始值。

对列表搜索的目的是查找特定的元素,这些元素应该与指定的模式相匹配。此时,可用命令lsearch。该命令接收两个参数,第一个参数为列表,第二个参数为匹配模式。

lsearch有三种搜索模式,分别由选项-glob、-exact和-regexp指定。其中默认模式为-glob。该模式按照string match的命令规则进行搜索。

lsearch的返回值是列表中第一个与指定模式匹配的元素的索引。看一个案例,如下图所示。匹配模式为A*,故返回元素AFF对应的索引值3。选项-all可返回所有匹配结果。因此,对于匹配模式[AB]FF,返回的是AFF和BFF对应的索引3和4。

-exact是严格匹配,如下图所示案例。如果匹配模式为LUT*,则会返回为-1,表明列表中没有匹配的元素。

如果需要返回匹配元素而非该元素的索引,可以添加选项-inline,如下图所示。只有-inline的情况下,返回第一个匹配结果;如果同时使用-all,则可返回所有匹配结果。

选项-not可实现对匹配结果取反,以下图所示案例为例。匹配模式为LUT*,-not就会使得lsearch的返回值为所有不与之匹配的元素。-not可以与-inline或-all联合使用。

另一方面,如果仅仅是为了确定指定列表中是否包含某个特定元素,可以用in;如果要确定指定列表中不包含某个特定元素,则可以用ni(not in)。看如下图所示案例。显然,此时使用in或者ni比lsearch更高效。

思考空间

给定列表{RAMB18 RAMB36 LUTRAM RAMB},要求从中找出RAMB18和RAMB36。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tcl三部曲(二)、变量与列表
1、 无需声明定义,直接使用set进行创建,使用unset进行移除,变量包含变量名和变量值两部分。
根究FPGA
2020/08/18
1.9K0
tcl三部曲(二)、变量与列表
列表排序其实不难
借助命令lsort可对列表进行排序。该命令可提供多个选项,从而实现不同的排序方式。lsort接受一个列表作为参数,返回值为排序后的结果,默认情形下,返回的新列表按照-ascii-increasing顺序排序。例如:
Lauren的FPGA
2019/10/30
8610
再看Byte Write Enable
给定列表{RAMB18 RAMB36 LUTRAM RAMB},要求从中找出RAMB18和RAMB36。
Lauren的FPGA
2019/10/30
1.6K0
tcl三部曲(三)、数组、流控制与函数
感谢公众号《IC小迷弟》提供的视频讲解与学习资源,谢谢大哥耐心的讲解!推送内容是对视频讲解的部分整理,关于详细内容,大家可以关注IC小迷弟获取全部学习资料。
根究FPGA
2020/08/19
2.2K0
tcl三部曲(三)、数组、流控制与函数
Python文件处理实用指南
对文件的操作算是Python中一个基础又重要的知识点了,无论是在爬虫、数据分析、Web开发,还是在编写图形界面、进行数据分析,都有可能需要用到文件相关的操作。
州的先生
2020/09/08
1.6K0
Python文件处理实用指南
针对UltraScale/UltraScale+芯片DFX应考虑的因素有哪些(1)
对于UltraScale/UltraScale+芯片,几乎FPGA内部所有组件都是可以部分可重配置的,这包括CLB中的查找表(LUT)、触发器(FF)、移位寄存器(采用LUT实现)、分布式RAM/ROM等,Block如BRAM、URAM、DSP、GT(高速收发器)、PCIe、CMAC、Interlaken MAC等,SYSMON(XADC和System Monitor),时钟单元如BUFG、MMCM和PLL等,I/O相关单元如ISERDES、OSERDES和IDELAYCTRL等。只有与配置相关组件必须在静态区,包括BSAN、CFG_IO_ACCESS、EFUSE_USR、ICAP、FRAME_ECC、MASTER_JTAG、STARTUP、和USR_ACCESS。
Lauren的FPGA
2023/12/17
4280
针对UltraScale/UltraScale+芯片DFX应考虑的因素有哪些(1)
tcl三部曲(一)、替换、引用与匹配
Tcl最早被称为工具命令语言,“Tool command language”,是一种脚本语言。
根究FPGA
2020/08/13
3.9K0
tcl三部曲(一)、替换、引用与匹配
selenum参考手册中文翻译
Added by SpringSideTeam, last edited by SpringSideTeam on 2006-11-23  (view change) Labels:  sel
阿新
2018/04/12
2.7K0
HLS最全知识库
高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。
碎碎思
2023/02/14
2K0
HLS最全知识库
如何利用BRAM实现数据延迟
实际上,在Tcl 8.5版本以前,大家常利用foreach命令的副作用将列表中的元素分发给独立的变量。例如,将列表xx中的值分别赋给变量x、y和z。这里break命令作为一个失效安全保障,以处理xx中包含了多余3个元素的情况。
Lauren的FPGA
2019/10/30
1.7K0
14.linux 文件管理命令:apropos搜索关键字- locate搜索
度假的小鱼
2025/01/04
1260
14.linux 文件管理命令:apropos搜索关键字- locate搜索
HLS中如何控制流水程度
Vivado HLS会自动决定函数内部操作的流水级数,但用户也可以通过其他方法控制流水程度。
Lauren的FPGA
2020/05/28
1.7K0
真香系列之2-自动录制回放的Hoverfly-java-Junit5
在之前的文章《真香系列之1-Hoverfly服务虚拟化,你不2的选择》中简单介绍了Hoverfly。本文将介绍如何在JUnit5中使用Hoverfly,并讨论入参匹配、延迟、特性增强等话题。
Antony
2021/06/28
1.3K0
真香系列之2-自动录制回放的Hoverfly-java-Junit5
LinuxShell命令grep
其中,OPTIONS 为指定的选项参数,PATTERN 为匹配模式(可以为固定字符串、基础正则表达式 BRE 、扩展正则表达式 ERE 以及 Perl 兼容正则表达式 PCRE),FILE 为指定文件输入(FILE 为 - 代表从标准输入读入)。PATTERN 指定为 BRE 或 ERE 可参照 LinuxShell正则表达式 。
hotarugali
2022/02/28
7860
Perl正则表达式:文本处理
在正则表达式中s/正则表达式/替换字符/模式可以对特定字符串进行匹配查找并替换(substitution),如果匹配失败则不替换。其中s///可以理解为正则表达式的模式,也可以理解为操作符,其要修改的数据必须储存在变量,使用绑定操作符指定替换操作(不指定则使用默认变量$_),中如下所示:
SYSU星空
2022/05/05
4.9K0
Perl正则表达式:文本处理
Linux笔记
sed d 删除行 [address]d sed a/i 插入 [address]a(或 i)\新文本内容
菜鸟雷
2020/10/23
1.6K0
Linux笔记
元祖+列表
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 如下实例: tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; 创建空元组 tup1 = (); 元组中只包含一个元素时,需要在元素后面添加逗号 tup1 = (50,); 元组与字符串类似
老七Linux
2018/05/09
1.5K0
C语言函数大全--l开头的函数
上述示例程序中,首先通过 open() 函数打开一个名为 test.txt 的文件,并设置文件访问模式为可读写。接着,调用 lock() 函数对该文件进行加锁操作,保护写入数据的过程。然后,通过 write() 函数将数据写入到文件中。最后,调用 lock() 函数对该文件进行解锁操作,释放锁定的资源。
huazie
2025/04/29
1180
C语言函数大全--l开头的函数
Linux通配符和正则表达式通配符 区别_linux正则表达式语法
通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
全栈程序员站长
2022/10/02
5.2K0
Linux通配符和正则表达式通配符 区别_linux正则表达式语法
如何快速查找目标cell
在用Vivado时,必然会用到Tcl。一方面描述约束时要用到,另一方面执行各种操作典型的如生成各种定制化报告等也会用到。这其中涉及到一个重要问题:如何快速且高效地找到目标单元(cell)。什么是cell可以阅读这篇文章:一张图看懂cell, pin, net, port。
Lauren的FPGA
2020/01/14
2.7K0
如何快速查找目标cell
相关推荐
tcl三部曲(二)、变量与列表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档