verilog $test$plusargs和$value$plusargs
#学习记录#
目录
Abstract
1 使用宏定义的条件编译
2 $test$plusargs
3 $value$plusargs
参考文献
Abstract
我们在进行verilog仿真时,经常喜欢采用宏定义,来做条件判断,但是通过宏定义做条件判断的这种方法,存在很大的弊端,就是条件改变的时候,需要重新编译,这样会导致,在项目后期进行回归测试和后仿的时候,很多时间都浪费在重复编译上面,效率非常低下。
$test$plusargs和$value$plusargs作为进行Verilog和SystemVerilog仿真运行时调用的系统函数,可以在仿真命令中直接通过进行赋值的方式将参数传递进入到设计中,并且不局限于不同仿真器对于参数在仿真命令中定义格式不同的限制,也避免了调换参数带来的频繁编译等问题。
1 使用宏定义的条件编译
initial
begin`ifdef dump_fsdb$dumpfile("test.fsdb");$dumpvars;`endif
end
如果要能够成功调用$dump等函数,需要在编译(compile)时指定`define的宏定义,其使用方法如下:
<compile-option> -define dump_fsdb
但是这种宏定义的方式,实现条件编译,当条件改变时,需要重新编译,这样会造成仿真效率底下,特别在项目后期,对测试用例进行回归的时候,会有相当一部分时间浪费在编译上。
2 $test$plusargs
使用条件编译函数$test$plusargs的代码如下:
initialbeginif($test$plusargs("test1"))$readmemh("test1.dat",mem1);if($test$plusargs("test2"))$readmemh("test2.dat",mem2);end
仿真运行命令如下,如果仿真不需要test1,只需要在运行命令中去掉test1。
<run-options> +test1 +test2
3 $value$plusargs
$value$plusargs可以将运行命令(run-options)中的参数值,传递给指定的信号或者字符,其语法格式如下:
$value$plusargs(“string”,signalname);
其中string="plusarg_format"+"format_string","plusarg_format"指明了用户定义的要进行传递的值。"format_string"指定了要传递的值的格式(类似$display中定义的%s、%h等)。并且在string中"plusarg_format和"format_string"的格式应该为"plusarg_format"=/+"plusarg_format"。如果转换后的位宽和传递的值不一致,则按照如下规则转换:
| plusarg位宽与sigalname的关系 | signalname值 |
| < | plusarg左补零 |
| > | plusarg截位 |
| plusarg为负数 | 按照正数处理 |
| 不匹配 | 若为指定默认值,则reg类型为x |
代码如下:
if($value$plusargs("finish=%d", finish))
beginrepeat(finish); $display("finish=%d", finish);$finish;
endif($value$plusargs("freq=%f",frequency))
begin$display("freq=%f", frequency);
endif($value$plusargs("testname=%s"testname))
begin$display("testname=%s",testname);
end
运行命令:
<run-options> +finish=100 +freq=1.23 +testname=test1
结果:
finish:100
freq:1.23
testname=test1
参考文献
[1] verilog仿真测试中的参数传递——$test$plusargs和$value$plusargs-CSDN博客
[2] Verilog之“$test$plusargs和$value$plusargs用法小结“ - 知乎 (zhihu.com)
相关文章:
verilog $test$plusargs和$value$plusargs
#学习记录# 目录 Abstract 1 使用宏定义的条件编译 2 $test$plusargs 3 $value$plusargs 参考文献 Abstract 我们在进行verilog仿真时,经常喜欢采用宏定义,来做条件判断,但是通过宏定义做条件判断的这种方法,存在很大的弊端…...
Linux设置open files
临时设置 ulimit -n 1025 查看是否成功 ulimit -n 永久设置,网上很多说添加* soft nofile 65535 * hard nofile 65535但设置后不生效 vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 然后重新…...
Linux下安装JDK并配置环境变量
一、Oracle官网下载jdk 1、官网地址 https://www.oracle.com/java/technologies/downloads/#java17 2、命令下载 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 3、解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz 4、配置环境变量 ec…...
擎天科技与禅道合作,打造统一的项目管理平台
统一、全面的项目管理平台能够帮助企业优化管理流程,提升业务效率。擎天集团选择与禅道软件合作,打造统一的项目管理平台,在降低自研软件的研发成本、打破团队信息孤岛、保障数据全面性等方面效果显著,大大提高了团队沟通协作效率…...
ansible报错解决:Failed to import the required Python library (netaddr)
ansible报错解决:Failed to import the required Python library (netaddr) 问题情况 今天我在做实验的时候出现了一个问题,以下是我的playbook,这个playbook是验证变量ip_address是否是一个合法的IP地址,并打印相应的信息的一个…...
盛邦安全拟战略收购卫星通信加密厂商天御云安
近日,远江盛邦(北京)网络安全科技股份有限公司(以下简称“盛邦安全”,股票代码:688651)对外公布,拟使用自有资金不超过人民币3000万元持有北京天御云安科技有限公司(以下简称“天御云安”&#…...
iOS MRC那句话
混编时使用MRC文件需要使用这句话 -fno-objc-arc在下图中显示的位置添加...
macOS DOSBox 汇编环境搭建
正文 一、安装DOSBox 首先前往DOSBox的官网下载并安装最新版本的DOSBox。 二、下载必备的工具包 在用户目录下新建一个文件夹,比如 dosbox: mkdir dosbox然后下载一些常用的工具。下载好了后,将这些工具解压,重新放在 dosbox 这个文件夹…...
Python深度学习基于Tensorflow(1)Numpy基础
文章目录 数据转换和数据生成存取数据数据变形和合并算数计算广播机制使用Numpy实现回归实例 numpy的重要性不言而喻,一般不涉及到GPU/TPU计算,都是用numpy,常见的np就是这个玩意。其特点就是快!其实如果不涉及到深度学习…...
体验GM CHM Reader Pro,享受高效阅读
还在为CHM文档的阅读而烦恼吗?试试GM CHM Reader Pro for Mac吧!它拥有强大的功能和出色的性能,能够让你轻松打开和阅读CHM文件,享受高效、舒适的阅读体验。无论是学习、工作还是娱乐,GM CHM Reader Pro都能成为你的得…...
校园网拨号上网环境下多开虚拟机,实现宿主机与虚拟机互通,并访问外部网络
校园网某些登录客户端只允许同一时间一台设备登录,因此必须使用NAT模式共享宿主机的真实IP,相当于访问外网时只使用宿主机IP,此方式通过虚拟网卡与物理网卡之间的数据转发实现访问外网及互通 经验证,将centos的物理地址与主机物理…...
cpu常用命令
1.平台信息 # 读节点 adb shell "cat proc/cpuinfo" # 读属性 adb shell getprop ro.hardware 2.负载信息 # 负载信息 adb shell dumpsys cpuinfo 3.原生定频 # 频率档位 adb shell "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies&q…...
Vue3实战笔记(06)--- Axios 基本用法
文章目录 前言一、发送get请求二、发送post请求三、另一种写法总结 前言 今天学习Vue官方推荐的请求工具Axios ,Axios 是一个基于 promise 的 HTTP 库,可用于浏览器和 node.js 中。它简洁、易用且功能强大,支持多种请求类型(GET、…...
使用单片机在图形点阵LCD上绘制波形图
使用单片机在图形点阵LCD上绘制波形图 需求: 假如有一组浮点数据,是通过AD转换得到的,保存在数组MyArray[]中,采集点数为len,采集周期为T,现在想用单片机在LCD上绘制出这组数据对应的波形图,该…...
生信人写程序1. Perl语言模板及配置
生物信息领域常用语言 个人认为:是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛,我常用的有…...
【Android】Kotlin学习之数据容器 -- 集合
一. 定义 List : 是一个有序列表, 可通过下标访问元素. 元素可以在list中出现多次, 元素可重复 Set : 是元素唯一的集合, 一般来说Set中元素的顺序并不重要, 无序集合. Map : 是一组键值对, 键是唯一的, 每个键刚好映射到一个值, 值可以重复 二. 集合创建 三. 示例 mutabl…...
超详细 springboot 整合 Mock 进行单元测试!本文带你搞清楚!
文章目录 一、什么是Mock1、Mock定义2、为什么使用3、常用的Mock技术4、Mokito中文文档5、集成测试和单元测试区别 二、API1、Mockito的API2、ArgumentMatchers参数匹配3、OngoingStubbing返回操作 三、Mockito的使用1、添加Maven依赖2、InjectMocks、Mock使用3、SpringbootTes…...
国产操作系统下Chrome的命令行使用 _ 统信 _ 麒麟
原文链接:国产操作系统下Chrome的命令行使用 | 统信 | 麒麟 Hello,大家好啊!今天我们来聊聊如何在国产操作系统上使用命令行操作Google Chrome。无论是进行自动化测试、网页截图还是网页数据抓取,使用命令行操作Google Chrome都能…...
linux性能监控之slabtop
slabtop命令是以实时的方式显示内核slab缓冲区的细节信息,是linux自带的命令 [rootk8s-master ~]# slabtop --helpUsage:slabtop [options]Options:-d, --delay <secs> delay updates-o, --once only display once, then exit-s, --sort <char&…...
Allure 在 Python 中的安装与使用
Allure 是一个灵活轻量级的测试报告工具,它能够生成详细且富有洞察力的测试报告。在 Python 中,Allure 通常与 Pytest 结合使用,以提供更加丰富的测试结果展示。下面我将介绍关于如何在 Python 中使用 Allure 的详细操作。 一、环境准备 在…...
rag 进行 全局聚合的结构性失败 解析
rag 进行 全局聚合的结构性失败 解析 目录 rag 进行 全局聚合的结构性失败 解析 一句话核心结论 逐句拆解原文含义 1. 前提:什么是"全局聚合"? 2. 致命问题:采样引入不可纠正的选择偏差 农情任务实例:直观感受结构性偏差 真实数据分布(12M农情CSV,共12000条上…...
从MATLAB函数到Python字典:一个脚本搞定MATPOWER数据格式转换与可视化
从MATLAB函数到Python字典:电力系统数据跨平台处理实战 电力系统分析领域长期依赖MATLAB生态,而MATPOWER作为经典工具包更是以.m函数文件作为标准数据载体。但当我们需要结合Python强大的数据处理和可视化能力时,这种数据格式就成为了技术栈融…...
YOLOv8推理性能跃迁:从CPU到GPU的实战迁移指南
1. 为什么要把YOLOv8推理从CPU迁移到GPU? 第一次用YOLOv8做目标检测时,我盯着屏幕上蜗牛般的推理速度差点崩溃——一张1080P的图片要处理3秒!直到把环境切换到GPU,速度直接飙升到30帧/秒,这种性能飞跃让我彻底明白了硬…...
宏裕塑胶代理新日铁住金日本工程塑料全系列产品服务详解
宏裕塑胶代理新日铁住金系列产品专注于为制造业企业提供高性价比、稳定可靠的通用工程塑料原料,依托源头直采及技术赋能,为塑胶制品厂、汽车零部件厂等客户降低采购成本并保障全流程供应。宏裕塑胶代理新日铁住金核心功能与服务模块覆盖多个维度…...
终极指南:Original Prusa i3 MK3S 3D打印机的完整构建与定制方案
终极指南:Original Prusa i3 MK3S 3D打印机的完整构建与定制方案 【免费下载链接】Original-Prusa-i3 Original Prusa i3 MK2 3D printer printed parts 项目地址: https://gitcode.com/gh_mirrors/or/Original-Prusa-i3 Original Prusa i3 MK3S是一款由PRUS…...
cstore_fdw迁移指南:从传统表到列式存储的无缝切换
cstore_fdw迁移指南:从传统表到列式存储的无缝切换 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implementation bui…...
【习题01】喝汽水问题
题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。 1、题目解析: 通过分析,我们可以得到以下流程图:20元钱,&…...
别再折腾gcc版本了!Ubuntu 20.04下用Docker一键搞定OLLVM编译环境
用Docker容器化技术快速搭建OLLVM混淆编译环境 在逆向工程和移动安全研究领域,代码混淆是一项基础而重要的技术。传统搭建OLLVM环境需要处理复杂的依赖关系、版本冲突等问题,往往让初学者望而却步。本文将介绍如何利用Docker技术,在Ubuntu 20…...
RK3568扩展模块实战:4G/Wi-Fi 6/多串口集成与Linux驱动适配
1. 项目概述:当“小”模块遇上“大”平台最近在折腾一块瑞芯微的RK3568开发板,这板子性能不错,四核A55加上独立的NPU,做边缘计算、多媒体网关或者轻量级服务器都挺合适。但在实际项目落地时,我遇到了一个几乎所有硬件开…...
第七章:LLM输出质量评估方法——从指标到流程
本章难度:★★★★☆ | 预计阅读时间:10分钟 你将学到:LLM评估的四大核心维度、三大评估框架对比、LLM-as-Judge的用法与局限、人工评估设计方法、红队测试流程、以及如何建立完整的评估体系 引言:为什么评估是AI产品的核心竞争力 你上线了一个RAG聊天机器人,工程师说&qu…...
