如何获取值数组作为 plusargs?

2024-01-11

如何获取值数组作为参数。我需要从命令行获取一组未定义大小的命令。如何将这些参数放入数组或队列中?

Eg:

+CMDS=READ,WRITE,READ_N_WRITE

它应该被带到一个数组中。


$value$plusargs不支持数组,但支持字符串。看IEEE 标准 1800-2012 https://standards.ieee.org/findstds/standard/1800-2012.html§ 21.6“命令行输入”。在 SystemVerilog 中解析字符串虽然有点麻烦,但仍然非常可行,特别是当分隔符表示为单个字符时。这是一个通用字符串解析器,使用 SystemVerilog 队列重新编码索引和字符串方法substr定义于IEEE 标准 1800-2012 https://standards.ieee.org/findstds/standard/1800-2012.html§ 7.10“队列”和§ 6.16.8“子字符串”

function void parse(output string out [], input byte separator, input string in);
    int index [$]; // queue
    foreach(in[i]) begin // find commas
        if (in[i]==separator) begin
            index.push_back(i-1); // index before comma
            index.push_back(i+1); // index after comma
        end
    end
    index.push_front(0); // first index
    index.push_back(in.len()-1); // last index
    out = new[index.size()/2];
    foreach (out[i]) begin
        out[i] = in.substr(index[2*i],index[2*i+1]);
        /*$display("cmd[%0d] == in.substr(%0d,%0d) == \"%s\"",
                         i, index[2*i],index[2*i+1], out[i]);  */
    end
endfunction : parse

然后将其与$value$plusargs解析输入:

string cmd[];
string plusarg_string;
if ( $value$plusargs("CMDS=%s",plusarg_string) ) begin
    parse(cmd, ",", plusarg_string);
end
foreach(cmd[i])
    $display("CMD[%0d]:'%s'",i,cmd[i]);

完整的工作示例:http://www.edaplayground.com/s/6/570 http://www.edaplayground.com/s/6/570

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取值数组作为 plusargs? 的相关文章

  • 从命令行输入

    我有一个 C 程序 我运行它来获取多个参数值 我想做的是 假设我有两个参数 int main double a double b some more lines of codes 现在 在我编译之后 我想将其运行为 output out 2
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 开始后跟冒号和变量是什么意思?

    什么是data mux意思是这里 它只是块的名称吗 if PORT CONFIG 32 P0 1 b1 begin data mux end 这些是块名称 它们特别适用于generate块 例如 您可以定义一个generate块如 genv
  • 命令行参数的第二个参数的格式不是 char** argv 或 char* argv[] [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 解决我的问题here https stackoverflow com q 60040665 4999991 我想知道是否 如何可以以除cha
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 如何解析 C# 的命令行输出?

    我想从 C 执行一个应用程序 命令行应用程序 并且我想在执行该应用程序并向其提供输入后 我想解析将产生它的输出 因为 它会输出很多东西 而我想从中获取我需要的东西 我怎样才能做到这一点 我怎样才能得到c 中的输出 然后只从中获取我需要的东西
  • 标识符必须用端口模式声明:busy。 (Verilog)

    我有如下所示的 Verilog 代码 当我编译它时 我收到以下错误消息 并且代码的第一行突出显示 Error 标识符必须用端口模式声明 busy Code module main clk rst start busy ready cnt s
  • 自动任务和静态任务有什么区别,为什么我们不能通过引用传递静态任务

    静态任务和自动任务有什么区别 program class ref int index value class holding values int ass array task assign value int value int inde
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • VIM 高亮匹配开始/结束

    我正在尝试找到一个插件 它将突出显示与 Verilog 匹配的开始 结束语句 VIM 可以使用花括号 方括号 但不能使用它的开始 结束 我希望 VIM 突出显示正确的开始到正确的结束 在我看来 最好的选择是使用 matchit 该脚本是 v
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • POSIX 风格的操作系统中的命令行选项应该是下划线风格吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 POSIX 风格操作系统中程序的命令行选项名称是否应该是下划线风格 例如 cure world hunger 或者也许是其他风格 curewor
  • verilog 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • 使用正则表达式进行 Verilog 端口映射

    我有一个很长的端口映射 我想在其中替换一堆 SignalName i with SignalName SignalName i 我想我可以用正则表达式轻松地做到这一点 但我无法弄清楚如何做到这一点 有任何想法吗 假设 SignalData
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • 通过 ant 构建脚本将命令行参数传递给 Java

    运行以下命令时 ant targetname Dk1 v1 Dk2 v2 我想要将命令行参数传递给java like java whatever Dk1 v1 Dk2 v2 我需要从 Java 代码访问这些参数System getPrope
  • 如何在命令提示符下运行Java程序

    我创建了一个 Java 项目来调用 Web 服务 它有一个主 java 文件和另一个类文件 我已经为 HTTP 客户端使用了一些 jar 文件 在 Eclipse 中运行良好 我需要通过传递一些参数在命令提示符下运行 Java 程序 在命令
  • NSIS - 在命令行安装期间打印提示

    我正在使用 NSIS 为 Windows 制作安装程序 并且有许多用户可以使用命令行指定的自定义安装选项 例如 installer exe IDPATH c Program Files Adobe Adobe InDesign CS5 S
  • 如何使用 Python Argparse 制作所需参数的短版本和长版本?

    我想指定一个名为的必需参数inputdir但我也想要它的简写版本i 我没有看到一个简洁的解决方案来做到这一点 而不使用两个可选参数 然后进行我自己的检查 是否有我没有看到的首选做法 或者唯一的方法是将两者设为可选并进行我自己的错误处理 这是

随机推荐

  • 自动筛选 Excel VBA 后删除隐藏/不可见行

    我想这很简单 但由于某种原因 它似乎对我不起作用 我有以下代码 它根据我指定的条件自动过滤数据 Dim lastrow As Long lastrow Sheet2 Cells Sheet2 Rows Count A End xlUp Ro
  • 在 TypeScript 中调用泛型类的静态函数

    给定一个泛型类Foo
  • 如何使用 PHP 打开新的 CMD 窗口

    在过去的几天里 我正在用 PHP 编写一些代码来弹出一个CMD窗户和这个CMDwindows有一个像 ping google com 并处理它我不需要 PHP 代码来读取结果 我只希望它运行它 我尝试过类似的东西
  • 如何在 Javascript 中比较日期?

    我有以下情况 我有一个运行循环并执行某些操作的函数 错误条件可能会使其退出该循环 我希望能够检查循环是否仍在运行 为此 我正在为每个循环运行执行以下操作 LastTimeIDidTheLoop new Date 在另一个每 30 秒运行一次
  • IIS 8.5应用程序初始化和Windows身份验证

    我正在尝试使用 IIS 8 5 上的应用程序初始化模块来预热 Intranet 应用程序 设置正确并且预热有效 但是一旦我禁用匿名身份验证 应用程序就不再预加载 内存使用量仅为 20mb 而初始化访问站点时内存使用量约为 200mb 由于这
  • Node.js:高效读取一系列行

    我目前正在使用 Node js 并且想知道如何从大型文本文件中读取一系列行 一个明显的解决方案如下所示 var fs require fs fs readFile file function err data var lines data
  • Javascript 数字和货币本地化 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 JavaScript 中遇到了数字和货币本地化问题 我需要的是一个方便的library为了那个原
  • Spark BlockManager 在本地主机上运行

    我有一个简单的脚本文件 我试图在模仿教程的 Spark Shell 中执行here https spark apache org examples html import org apache spark SparkConf import
  • 为什么要用“FragmentDefinition”包装“Dialog”?

    UI5 对话框可以直接定义为Dialog
  • Gmail、Yahoo、Facebook、Twitter 联系人 PHP 中的导入器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • iOS:在后台更新媒体信息

    我目前在我的应用程序中使用 MPNowPlayingInfoCenter 来显示正在播放哪首歌曲 但我希望将 HTTP Live Streaming 合并到我的应用程序中 该应用程序将在后台出现任意数量的不同曲目 有没有办法在应用程序处于后
  • 使用第三方库

    我想集成一个Timeline http visjs org docs timeline 在我的镀铬扩展中 我已经下载了这个插件的js文件和css文件 并将它们放在我的chrome扩展的根目录中 chrome 扩展本身只是向现有页面注入JS并
  • Hibernate 中 load() 与 get() 相比有何优势?

    谁能告诉我有什么好处load vs get 在休眠状态下 这些方法的语义解释并不能解释它们之间的实际差异 实际规则如下 Use get 当你想加载一个对象时 Use load 当您需要获取对象的引用而不发出额外的 SQL 查询时 例如 创建
  • 将单独的日志级别记录到 log4j2 属性文件中的单独文件

    有什么办法可以为不同的日志级别创建单独的日志文件吗 我想要的只是记录error记录到一个文件并info记录到另一个文件 我没有找到任何解决方案来做到这一点log4j2 properties 这里是log4j2 xml我得到了并且效果很好 谁
  • 如何在vim中在新窗口中打开新文件

    有没有办法在新的 shell 窗口或选项卡中打开 vim 我习惯做 mate file 这会在新窗口中打开文件 我更喜欢有一个 中央外壳 我可以根据需要在其他窗口或选项卡中发出命令并编辑文件 人们通常如何在本地打开 vim 文件 从 vim
  • 如何使用 Google App Engine Blobstore 保存网页图像

    UPDATE 这个问题最初是在不支持编程文件创建 例如通过 url 的情况下提出的 这已经改变了 请参阅 http code google com appengine docs java blobstore overview html Wr
  • 电容器推送通知和 FCM 生成不同的令牌,导致 android 崩溃

    带有 Capacitor 推送通知和 FCM 插件的 Ionic 5 应用程序 import FCM from capacitor community fcm import ActionPerformed PushNotificationS
  • 厨师从模板和刀搜索中创建逗号分隔的字符串

    我正在尝试从 Knife 查询创建动态创建的以逗号分隔的 Splunk 索引器列表 数据端口附加到每个主机名 该查询将返回的主机列表提供给模板和相应的 erb 然而 尽管当我聚合到测试 Docker 实例时没有抛出任何错误 但 conf 文
  • 登录多线程应用程序,在构造函数中使用互斥体

    我一直在编写一个基于 RAII 的 C 方法入口 出口记录器 用法是这样的 void Class Method METHOD NAME Class Method I know I could use FUNCTION instead lt
  • 如何获取值数组作为 plusargs?

    如何获取值数组作为参数 我需要从命令行获取一组未定义大小的命令 如何将这些参数放入数组或队列中 Eg CMDS READ WRITE READ N WRITE 它应该被带到一个数组中 value plusargs不支持数组 但支持字符串 看