【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 裁剪、放大…

Java设计模式之单例模式(Singleton)模式

单例模式(Singleton)确保一个类只有一个实例,且提供一个全局访问点。 什么是单例模式 单例模式是一种非常常用的设计模式,它可以确保一个类只有一个实例,并且提供一个全局访问点。在单例模式中,应用程序中…

java(springboot)对接elasticsearch8+

1、pom引用 注&#xff1a;jackson包es只用到了databind&#xff0c;之所以全部引用是因为actuator用到了其他&#xff0c;只升级一个会 导致版本冲突 <!-- https://mvnrepository.com/artifact/co.elastic.clients/elasticsearch-java --> <dependency><grou…

七大排序算法和计数排序

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

文章审核之敏感词过滤

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

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

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

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

废话不多说&#xff0c;开整 // 参数为寄件人经纬度和收件人经纬度 // 根据寄收件人经纬度弧度π进行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安装完毕以后&#xff0c;需要启动服务器进程&#xff0c;不然客户端无法连接数据库。 在前面…

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的调用生成数据批次和迭代器模型训练初始化拆分数据集并进行训练 预测 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&…

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

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

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

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

文件包含漏洞利用思路

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

海外服务器推荐:国外高性能服务器免费

对于寻找高性能的海外服务器&#xff0c;海外服务器推荐指导&#xff0c;我建议您考虑以下因素&#xff1a; 1. 可靠性和性能&#xff1a;选择信誉良好、可靠性好的服务器提供商。它们应该有稳定的网络基础设施和高性能的服务器硬件来满足您的需求。 2. 位置选择&#xff1a;…

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

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

医生出国访问交流,为什么要趁早申请访问学者?

在当前国内&#xff0c;有这样一类医生群体&#xff0c;他们四十岁上下&#xff0c;就职于国内大型三甲医院&#xff0c;受过良好教育&#xff0c;事业辉煌&#xff0c;属于是别人眼中的精英阶层&#xff0c;然而&#xff0c;随着岁月的沉淀&#xff0c;副高级别医生群体的人生…

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

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

Java实现根据商品ID获取1688商品详情数据方法

要通过1688的API获取商品详情数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品详情&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;并创建一…

【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…