$sformat在仿真中打印文本名的使用

news2024/11/24 16:00:01

在仿真中,定义队列,使用任务进行函数传递,并传递文件名,传递队列,进行打印
$sformat(filename, “./data_log/%0d_%0d_%0d_0.txt”, f_num, lane_num,dt);
使用此函数可以自定义字符串,在仿真的时候进行文件命名和传递数据的场景很多。

int file;
task writeQueueToFile(string filename, reg [7:0] queue[$]);
  if (filename == "") begin
    $display("Error: Invalid file name");
    return;
  end
  file = $fopen(filename, "w");
  if (file == 0) begin
    $display("Error: Unable to open file '%s'", filename);
    return;
  end
  foreach (queue[i]) begin
    $fwrite(file, "%d\n", queue[i]);
  end
  $fclose(file);
  $display("Queue contents written to file '%s'", filename);
endtask

创建一个data_log文件夹,存入文件,数据可以传入数字类型

    $sformat(filename, "./data_log/%0d_%0d_%0d_0.txt", f_num, lane_num,dt);
    writeQueueToFile(filename, dl0_data);

完整的测试方案

`timescale 1ns/1ns
module test_q_w (
    
);
reg [7:0]dl0_data[$];

string filename;

bit [1:0] lane_num;
bit [10:0] f_num;

reg [07:00] dt   ;
reg [31:00] data_in;


initial begin
    dl0_data.delete();
end

int file;
task writeQueueToFile(string filename, reg [7:0] queue[$]);
  if (filename == "") begin
    $display("Error: Invalid file name");
    return;
  end
  file = $fopen(filename, "w");
  if (file == 0) begin
    $display("Error: Unable to open file '%s'", filename);
    return;
  end
  foreach (queue[i]) begin
    $fwrite(file, "%d\n", queue[i]);
  end
  $fclose(file);
  $display("Queue contents written to file '%s'", filename);
endtask

bit clk;
bit wr_en;

int wc= 'd500;
initial begin
    clk = 0;
    forever begin
        #10ns; clk = ~clk;
    end
end

always @(posedge clk) begin
    if(wr_en=='d1)begin
        dl0_data.push_back(data_in);
        data_in =data_in+1'b1;
        if (data_in== wc)begin
            wr_en='d0;
        end
    end
end

always @(negedge wr_en) begin
    $sformat(filename, "./data_log/%0d_%0d_%0d_0.txt", f_num, lane_num,dt);
    writeQueueToFile(filename, dl0_data);
    dl0_data.delete();
end
initial begin
    wr_en =1;
    data_in =0;
    // #10us
    f_num='d1;
    lane_num ='d1;
    dt = 'd1;



end


initial begin
    $display("fsdbDumpfilrs is start at %d",$time);
    $fsdbDumpfile("verilog.fsdb");
    $fsdbDumpvars();
    #1e9;
    $finish;
end
endmodule

仿真结果
往文本中写入了500个数据
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础(二、必备知识,不用背,用用就会了~)

一、基础知识 1.标识符 在Python中,标识符是用来标识变量、函数、类、模块或其他对象的名称。一个有效的标识符由字母、数字和下划线组成,且不能以数字开头。Python是区分大小写的,因此myVariable和myvariable被视为不同的标识符。 下面是…

Redis数据已经删除了,为什么内存占用还是很高?

Redis数据已经删除了,为什么内存占用还是很高? Redis做了数据删除操作,为什么使用top命令时,还是显示Redis占了很多内存? 没做相关功课的人觉得这个问题有问题,删了数据还说占着内存,面试官不…

QQ2023备份

需要修改的路径(共3处) 这三处路径中,只有一处是需要修改的 QQPC端-主菜单-设置-基本设置-文件管理 点击上面的“”自定义“”,然后修改路径即可 修改路径后提示 然后等一会才会关干净QQ的相关进程,关闭后才会有自动…

Windows的C盘爆掉了怎么办?

本文参考: C盘太满怎么办?亲测8种好用方法! 如果C盘的分区爆掉了,变红色了,是时候该处理这个问题了,解决你的C盘焦虑! 第一招:删除C盘文件 首先你会想到清理C盘里面的文件&#x…

Flink入门之核心概念(三)

任务槽 TaskSlots: 任务槽,是TaskManager提供的用于执行Task的资源(CPU 内存) TaskManager提供的TaskSlots的个数:主要由Taskmanager所在机器的CPU核心数来决定,不能超过CPU的最大核心数 1.可以在flink/conf/flink-c…

【C++】map/multimap/set/multiset的经典oj例题 [ 盘点&全面解析 ] (28)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.前K个高频单词【mutiset】二.左右符…

云服务器Centos中安装Docker

云服务器Centos中安装Docker 1 简介DockerCentosCentos和Ubuntu区别 2 安装3 测试hello-world的镜像测试 1 简介 Docker Docker是一个开源的应用容器引擎,利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它支持将软件编译成…

虚拟机-桥接模式连接

文章目录 1.查看宿主机再用的IP信息2.桥接模式-虚拟机设置VMware设置虚拟机设置重启网络服务 1.查看宿主机再用的IP信息 ipconfig /all 注: 在虚拟机中要设置同网段的ip设置同一个子网掩码设置同一个网关设置同一个DNS服务器 2.桥接模式-虚拟机设置 VMware设置 虚…

整数在内存中的存储

整数和浮点数在内存中的存储方式是不一样的,今天,我们来具体学习一下 文章目录 整数在内存中的存储浮点数在内存中的存储 整数在内存中的存储 我们在之前就已经了解过了整数有原码,反码,补码的形式,这三种方式都是二进…

cache教程 2.单机并发缓存

0.对原教程的一些见解 个人认为原教程中两点知识的引入不够友好。 首先是只读数据结构 ByteView 的引入使用是有点迷茫的,可能不能很好理解为什么需要ByteView。 第二是主体结构 Group的引入也疑惑。其实要是熟悉groupcache,那对结构Group的使用是清晰…

LangChain学习二:提示-实战

文章目录 上一节内容:LangChain学习一:模型-实战学习目标:提示词及提示词模板的运用学习内容一:什么是提示词?学习内容二:提示词模板2.1 聊天提示模板实战:首先需要声明和定义一个模板实战:把提示词模板放入…

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测 目录 分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.GASF-CNN格拉姆角场-卷积神经网络的数据分类预测(完整源码和数据) 2.自…

Leetcode2477. 到达首都的最少油耗

Every day a Leetcode 题目来源:2477. 到达首都的最少油耗 解法1:贪心 深度优先搜索 题目等价于给出了一棵以节点 0 为根结点的树,并且初始树上的每一个节点上都有一个人,现在所有人都需要通过「车子」向结点 0 移动。 对于…

os.walk()遍历文件夹/文件

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

智能优化算法应用:基于人工蜂鸟算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工蜂鸟算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工蜂鸟算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂鸟算法4.实验参数设定5.算法结果6.参考…

Qt槽函数不响应不执行的一种原因:ui提升导致重名

背景: 一个包含了组件提升的ui,有个按钮的槽函数就是不响应,于是找原因。 分析: 槽函数的对应一是通过connect函数绑定信号,二是on_XXX_signal的命名方式。界面上部件的槽函数通常是第二种。 我反复确认细节&#…

正则表达式:字符串处理的瑞士军刀

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

图的搜索(一):广度优先搜索算法和深度优先搜索算法

图的搜索(一):广度优先搜索算法和深度优先搜索算法 本章主要记录了图的搜索算法,和可以解决图的基本问题——最短路径问题的算法。本章主要对图搜索的相关算法进行了介绍:广度优先搜索算法、深度优先搜索算法。 下一…

蓝牙物联网开发应用实例|「蓝牙道钉」规范共享单车停放

为进一步改善城市环境,解决共享单车乱停乱放、随意占道等顽疾,引导骑行者文明停放,近期,铜陵市试点启用共享单车“蓝牙道钉”技术。 共享单车“蓝牙道钉”是通过在人行便道的停放区域内安装“道钉”设备,凭借蓝牙高精…

电视节目中活动灭灯系统是如何实现的

活动灭灯系统主要用于各种需要亮灯或灭灯的活动节目,如招聘灭灯、相亲灭灯等。有多种灯光颜色供选择,本设备通过按钮灯软件组合实现,用户可以自己设置亮灯或灭灯规则。 软件功能: 1、后台统一控制亮灯,重新开始下轮…