专栏首页Lauren的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。

本文分享自微信公众号 - Lauren的FPGA(Lauren_FPGA),作者:LaurenGao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vivado下不可不知的快捷键

    快捷键,ctrl+C, ctrl+V, win+D, win+L等等,顾名思义,使用它们可以脱离鼠标快速执行目标任务。同样地,Vivado也提供了很多快捷键。

    Lauren的FPGA
  • 列表:创建列表

    列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这...

    Lauren的FPGA
  • 列表长度与索引

    借助llength命令可获取列表的长度(列表所包含的元素的个数,不难发现很多跟列表相关的命令都是以英文单词l(其大写为L)开头的)。图1显示列表a的长度为3。

    Lauren的FPGA
  • 编写模块化CSS——BEM

    用户1687375
  • 看动画轻松理解「 堆 」

    本文通过堆的实现、最小堆(最大堆)、堆的时间复杂度、优先队列的实现、堆排序来介绍「 堆 」。

    五分钟学算法
  • centos 中nmap的用法

    -sT:扫描TCP数据包以建立的连接connect() -sS:扫描TCP数据包带有SYN数据的标记 -sP:以ping方式进行扫描 ...

    柴银磊
  • 【堆内存】动态图+代码来轻松理解!!!

    本文通过堆的实现、最小堆(最大堆)、堆的时间复杂度、优先队列的实现、堆排序来介绍「 堆 」。

    用户5224393
  • 学习python DAY 01-------列表-----简单的数据结构

    CODE-S
  • 如何对RTSP播放器做功能和性能评估

    好多开发者在做产品竞品分析的时候,不知道如何界定一个RTSP播放器,大牛直播SDK认为,一个RTSP播放器,不是说有几个类似于Open/Close接口就够了,好...

    daniulive
  • 如何对RTSP播放器做功能和性能评估

    好多开发者在做产品竞品分析的时候,不知道如何界定一个RTSP播放器,大牛直播SDK认为,一个RTSP播放器,不是说有几个类似于Open/Close接口就够了,好...

    daniulive

扫码关注云+社区

领取腾讯云代金券