sv之svlib2

2024-09-08 11:12
文章标签 sv svlib2

本文主要是介绍sv之svlib2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接上篇博客

systemverilog 的svlib的用法1-CSDN博客

已经介绍了关于解析固定格式文件到class里面,但是如果数据比较复杂,不规范,就需要用到一些特殊处理方法。

forexample 1:

获取如下txt的数据

2

#0;0 #2;1 #29;0

#1;0 #3;1 #40;0 #51;1

可以使用如下code去解析:

int file_handle;                // 文件句柄
int ret_val;                    // 返回值,用于存储$fgets的结果
string read_str;                // 存储从文件中读取的一行字符串
int num_vca_types;              // 存储vca类型数量
int counter = 0;                // 用于计数
int signal_values_array[][];    // 存储每个信号的值
int signal_times_array[][];     // 存储每个信号的时间
string split_line[$];           // 存储按#号分割后的字符串
string signal_data[$];          // 存储按逗号分割后的信号数据
Regex split_hash;               // 用于按#号分割字符串的正则表达式
Regex split_comma;              // 用于按逗号分割信号数据的正则表达式// 打开文件
file_handle = $fopen("test.txt", "r");
if (!file_handle)$display("Unable to open test file");// 读取文件并解析
while (! $feof(file_handle)) beginif (counter == 0) beginret_val = $fgets(read_str, file_handle);// 将读取的字符串转换为整数,获取vca类型的数量num_vca_types = read_str.atoi();// 动态分配数组大小signal_values_array = new[num_vca_types];signal_times_array = new[num_vca_types];endelse if (counter <= num_vca_types) begin// 初始化数组和正则表达式split_line = new[string]();signal_data = new[string]();// 读取文件中的一行ret_val = $fgets(read_str, file_handle);// 根据#号分割字符串split_hash = Regex::create("#");split_hash.setStrContents(read_str);split_line = split_hash.split();// 遍历split_line数组,处理信号和时间foreach (split_line[j]) beginif (j >= 1) begin// 按分号分割每个信号split_comma = Regex::create(";");split_comma.setStrContents(split_line[j]);signal_data = split_comma.split();// 将信号的时间和值存储到对应的数组中signal_times_array[counter-1][j] = signal_data[0].atoi();signal_values_array[counter-1][j] = signal_data[1].atoi();endendendelse begin// 读取下一行ret_val = $fgets(read_str, file_handle);end// 增加计数器counter++;
end// 关闭文件
$fclose(file_handle);

这篇关于sv之svlib2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147953

相关文章

评估SV模型的预测效果和性能因素

评估SV模型的预测效果和性能通常涉及多个方面的考量,以下是一些关键的评估方法和指标: 均方误差(Mean Squared Error, MSE):MSE衡量了模型预测值与实际值之间差异的平方的均值。较小的MSE值意味着模型预测更为准确。 均方根误差(Root Mean Squared Error, RMSE):RMSE是MSE的平方根,与MSE类似,用于评估预测误差,但RMSE的单位与原始数

挣值管理不是搞数字游戏(3)——进阶指标:CV、SV、CPI、SPI、EAC

摘要: 要考PMP(Project Management Professional ),挣值管理是必考的知识。软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目。挣值管理相关资料也比较超多,但一般都难以读懂,本文将会以轻松、易懂、实用的角度为你讲解。 大纲: 1.挣值管理无用论 2.从搬石头的故事说起 3.三大基本要素:PV,AC,EV 4.成本偏差(CV),进度偏差(SV) 5.成本

SV-7045VP sip广播网络草坪音箱 室外网络广播POE供电石头音箱

SV-7045VP sip广播网络草坪音箱 室外网络广播POE供电石头音箱 SV-7045VP SIP网络草坪音箱 sip POE石头音箱 描述18123651365 SV-7041VP是深圳锐科达电子有限公司的一款防水网络草坪音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率20W。用在公园,景区,高速服务区,园区等草地场所。SV-7041VP作为

sv中的task和function

sv中的task和function task和function的共同点task和function的不同点 task和function的共同点 verilog中task和function是相同的。将复杂代码分割成小段落,便于理解和调用,简化程序,功能单一;.端口参数默认都是输入,除非声明其他类型;数据类型默认是logic,除非声明为其他类型;可以存在多个语句,不用begin…end

SV-7011T 网络对讲广播终端

SV-7011T 网络对讲广播终端 产品介绍 18123651365微信 SV-7011T是一款IP网络广播对讲终端,主要作为网络播放器或对讲终端使用,其接收网络的音频数据,提供音频线路输出。 NA711T可实现对讲、广播等功能,作为网络广播对讲系统的终端,主要用于银行、部门机构、酒店等场所的网络广播、网络对讲。 产品信息 标准RJ45网络接口,提供固

平安城市 停车场 景区对讲SV-6201-T IP网络非可视对讲报警柱简介

平安城市 停车场 景区对讲SV-6201-T IP网络非可视对讲报警柱简介         18123651365微信 功能特点: 全金属外壳,户外防风雨,坚固耐用,易于识别单键呼叫,可通过软件指定呼叫目标,双向对讲广播喊话终端内置扬声器和话筒眯头,免提通话和接收广播公共广播功能,可定时打铃、分组、全局播放背景音乐采用 6.0mm 厚铝面板,带防刺戳保护和专用螺丝,防范人为破坏,嵌入

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能) 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率30W。同时它可以外接一个30W的无源副音箱,用在面积较大的场所。5寸进口全频低音喇叭、2.5寸进口高音喇叭。2.

POE 供电iP网络音箱2*15W 教学广播音箱 办公室背景音乐广播音箱SV-7041

SV-7041是一款IP网络音响,具有10/100M以太网接口,从网络接口接收网络的音频数据后播放,提供双路左右声道的音频输出。 该IP网络音响有主音箱和副音箱,主音箱为有源音箱,副音箱为无源音箱。该IP网络音响可以与其他广播终端、对讲终端、采播终端配合使用,实现音频的播放。 该IP网络音响可用于校园、银行、监狱、社区、酒店、商场等需要扬声和本地扩音的场所。

24届数字IC验证——SV+UVM基础知识汇总(九)

文章目录 前言57、module和program区别58、仿真调度区域59、fork-join、fork-join_none和fork-join_any的区别(经常问)60、D触发器输入高阻,输出是什么61、recovery time和removal time62、设置仿真退出时间62、$ time和$ realtime区别63、选择验证的原因(常问)64、验证工程师需要具有的品质65、FP

24届数字IC验证——SV+UVM基础知识汇总(四)

文章目录 前言16、约束的类型、solve…before(1)内嵌约束和class里面的约束有何区别(2)solve…before和if-else区别 17、断言(1)intersect、and、or、throughout、within区别(2)within和throughout的区别(3)并发断言主要组成有哪几个层次(4)如何检测随机化是否成功(5)什么时候随机失败(6)$rose和pos