【VCS】(5)Fast RTL-level Verification

Fast RTL-level Verification

  • General Coding Guidlines
  • Lab --- simprofile
  • $display() 输出彩色内容

前面的内容都是在说怎样进行仿真和验证,即如何使用 VCS 。
但是,仿真和验证是不是也有所讲究? 有没有一些标准来衡量设计代码和验证代码的质量?代码写不好导致仿真时间慢、占用资源多?
对于大规模SoC而言,如果代码写的不好的时候,会对仿真的性能影响很大。

为了提升 RTL仿真的性能,可以从两个角度出发:

① 良好的编码风格 (主导)

② 编译的时候,使用+rad选项 (辅助)

此外,就是要合理的控制编译和仿真的开关选项,以及减少重新编译的次数(一次修改尽可能多的源代码问题)。

在这里插入图片描述

General Coding Guidlines

在这里插入图片描述

(这里用不好用行数来限制,反正就是尽可能写的小一些就好。)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(这个好像用的不多)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

+prof统计分析代码各部分内容的的仿真时间和占用的内存大小,可以帮助找出仿真的瓶颈,优化代码。)

在这里插入图片描述
现在的 VCS 使用的统计分析命令是 -simprofile (+prof已经完全不能使用了)

Lab — simprofile

这里还是用了前面使用的 fsm 的例子。

首选需要在Makefile的编译指令中添加 -simprofile选项
在这里插入图片描述

因为该选项是用于大规模设计的仿真的,但是当前的设计规模太小了,可能统计不到内容,所以首先要扩大设计。

① 在testbench中实例化 1000个模块。
在这里插入图片描述在这里插入图片描述

(这里必须使用 genenrate + for 循环来实现,也要用 genvar 来定义变量 index。)

② 对 DPI 也进行适当的修改

在这里插入图片描述
(因为只输出一次的时候,统计不到信息,所以后面就改为10000次,增加 C 程序的执行时间。)

完成上述修改之后,执行编译仿真。

仿真结束之后,增加了如下内容:

在这里插入图片描述

profileReport.txt 的内容如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

$display() 输出彩色内容

在这里插入图片描述

在这里插入图片描述

基本语法格式:

$display("\033[31;41m Hello error!\033[0m");

\033 : Esc 键的ACSII 码
[31 : 字体颜色
41 : 底色
除了字体颜色和底色,还可以设置其他参数,如加粗、下划线等。多个参数之间以 ; 隔开
m : 结束表示符,终端以设定的格式输出内容后面的内容
\033[0m : [0m 表示后面的内容以终端默认的方式显示

这个其实是终端的功能,在 display 里面也可以使用。同样的 echo 也可以使用。

在这里插入图片描述
可以看出:
① 不同格式参数之间没有顺序要求,也就是说每一种各种对应了一种代码
\033[30m这个整体是格式化输出的起止标志

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

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

相关文章

62. 不同路径

题目链接:力扣 解法一:动态规划 定义状态:对于m*n的网络,从最后一行到右下角,以及从最后一列到右下角,都只有一条不同路径:一直向右或一直向下,所以可以定义状态:dp[i][…

OpenCV系列__chapter2

这里写目录标题 1 图像加减乘除位运算1.1 加法 img cv2.add(img1, img2)1.2 减法 img cv2.subtract(img1, img2)1.3 乘法 img cv2.multiply(img1, img2)1.4 除法 img cv2.divide(img1, img2)1.5 位运算 2 图像增强2.1 线性变换2.2 非线性变换 3 图像几何变换3.1 裁剪、放大…

七大排序算法和计数排序

文章目录 一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序6.1递归实现快速排序6.2非递归实现快速排序 七、归并排序7.1递归实现归并排序7.2非递归实现归并排序 八、计数排序 以下排序以从小到大排序为例 一、直接插入排序 时间复杂度&#x…

文章审核之敏感词过滤

技术选型 DFA实现原理 DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。 存储:一次性的把所有的敏感词存储到了多个map中,就是下图表示这种结构 敏感词:冰毒、大麻、大坏蛋 工具类 最下面的main方法是测试用的&a…

Java版本电子招标采购系统源代码—企业战略布局下的采购寻源

智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明,可…

微信小程序-地图上的图标计算旋转值朝向经纬度计算

废话不多说,开整 // 参数为寄件人经纬度和收件人经纬度 // 根据寄收件人经纬度弧度π进行rotate旋转计算 const getRotate (po1, po2) > {if (!(po1 && po2)) return 0const lng_a po1.longitudeconst lat_a po1.latitudeconst lng_b po2.longitud…

MySQL使用

目录 1 MySQL的登录 1.1 服务的启动和终止 1.2 自带客户端的登录与退出 2 MySQL演示使用 2.1 MySQL的使用演示 2.2 MySQL的编码设置 1 MySQL的登录 1.1 服务的启动和终止 MySQL安装完毕以后,需要启动服务器进程,不然客户端无法连接数据库。 在前面…

vue-cli项目中,使用webpack-bundle-analyzer进行模块分析,查看各个模块的体积,方便后期代码优化

一、安装 npm install --save-dev webpack-bundle-analyzer 二、在vue.config.js中配置 const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin plugins: [new BundleAnalyzerPlugin({analyzerMode: server,analyzerHost: 127.0.0.1,analyze…

Word2Vec实现文本识别分类

深度学习训练营之使用Word2Vec实现文本识别分类 原文链接环境介绍前言前置工作设置GPU数据查看构建数据迭代器 Word2Vec的调用生成数据批次和迭代器模型训练初始化拆分数据集并进行训练 预测 原文链接 🍨 本文为🔗365天深度学习训练营 中的学习记录博客&…

探析国内数字孪生引擎技术现状

在数字孪生软件来发中,渲染引擎是一个关键点,国内大多数字孪生平台引擎通常使用的是自研的渲染引擎或者采用开源的渲染引擎。下面通过一些常见的渲染引擎在国内数字孪生引擎中的应用带大家了解数字孪生软件开发的方式。 自研渲染引擎:许多数…

HTTPS安全套接字层超文本传输协议

HTTPS安全套接字层超文本传输协议 HTTPS简介HTTPS和HTTP的主要区别客户端在使用HTTPS方式与Web服务器通信时的步骤SSL/TLS协议的加密(握手)过程为什么数据传输阶段使用对称加密HTTPS 的优点HTTPS 的缺点HTTPS 的优化证书优化会话复用 HTTPS简介 HTTP协议…

文件包含漏洞利用思路

简介 通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,导致意外的文件泄漏甚至恶意代码注入。 常见的文件包含函数 php中常见的文件包含函数有以下四种: include()require()include_once()re…

苍穹外卖day05——Redis(被病毒入侵)+店铺营业状态设置

Redis被病毒入侵了 数据删光光然后只剩这四个玩意,乱下东西乱删东西,还好是docker部署,不然就寄了。 在服务器上部署redis记得一定要设置密码,不然被人扫肉鸡注入病毒整个服务器给你崩掉。 使用配置类的方式搭建相关程序 配置数…

实现简单Spring基于XML的配置程序

定义一个容器,使用ConcurrentHashMap 做为单例对象的容器 先解析beans.xml得到第一个bean对象的信息,id,class,属性和属性值使用反射生成对象,并赋值将创建好的bean对象放入到singletonObjects集合中提供getBean(id)方…

【Redis】剖析RDB和AOF持久化原理

文章目录 前言1、AOF日志1.1、概述1.2、日志文件1.3、写回策略1.4、策略实现原理1.5、重写机制1.6、AOF 后台重写1.6.1、介绍1.6.2、实现原理 1.7、优缺点 2、RDB快照2.1、概述2.2、实现方式2.3、实现原理2.4、极端情况2.5、优缺点 3、混合体实现4、大Key问题4.1、何为大key4.2…

profinet 调试记录

一、 树莓派运行codesys runtime 1. 用户名称要以 root 登录 若是普通用户,会提示:脚本必须以 root 身份运行 2. codesys报错: 在树莓派config.txt文件添加:arm_64bit0 3. 扫描设备需开启PLC 图标变红,则开启成…

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比 一、数据介绍 基于UCI葡萄酒数据集进行葡萄酒分类及产地预测 共包含178组样本数据,来源于三个葡萄酒产地,每组数据包含产地标签及13种化学元素含量,即已知类…

STM32H5开发(1)----总览

STM32H5开发----1.总览 概述样品申请STM32H5-2MB 框图产品列表STM32H5-2MB 框图STM32H5-128KB框图功能对比STM32H5-128KB vs H5-2MB组员对比STM32H5 亮点 概述 STM32H5系列微控制器是意法半导体公司推出的一款高性能MCU, CortexM33内核的微控制器产品。 他和STM32F2、F4、F7、…

论文精度系列之详解图神经网络

论文地址:A Gentle Introduction to Graph Neural Networks 翻译:图表就在我们身边;现实世界的对象通常根据它们与其他事物的连接来定义。一组对象以及它们之间的连接自然地表示为图形。十多年来,研究人员已经开发了对图数据进行操作的神经网络(称为图神…

CentOS 7.9 安装 mydumper(RPM方式)

链接:https://pan.baidu.com/s/1sGhtiKPOmJw1xj0zv-djkA?pwdtaoz 码:taoz 开始正文啦: rpm -ivh mydumper-0.14.5-3-zstd.el7.x86_64.rpm 问题如下: 解决: yum -y install epel-release yum install -y libzstd …