Verdi分析有限状态机

news2024/11/17 23:33:43

Verdi平台包括最先进的结构可视化和分析工具,其中,nTrace用于源代码,nWave用于波形,nSchema用于原理图/逻辑图,nState用于有限状态机(FSM)。本节将对nState的使用进行介绍。
为了简单起见,我们以一个序列检测器为例,介绍nState的使用过程。
设计代码:

module top(
   input logic clk,
   input logic rst,
   input logic bit_in,
   output logic detect
);

//detect seq:1101
parameter S0=0;
parameter S1=1;
parameter S11=2;
parameter S110=3;
parameter S1101=4;
//
logic [2:0] cs;
logic [2:0] ns;
//
always@(posedge clk,posedge rst)
if(rst)
    cs<=S0;
else
    cs<=ns;
//
always@(*)
case(cs)
    S0:ns=(bit_in)?S1:S0;
    S1:ns=(bit_in)?S11:S0;
    S11:ns=(bit_in)?S11:S110;
    S110:ns=(bit_in)?S1101:S0;
    S1101:ns=(bit_in)?S11:S0;
    default:ns=S0;
endcase
//
always@(posedge clk,posedge rst)
if(rst)
    detect<=0;
else if(cs==S110&&bit_in==1)
    detect<=1;
else
    detect<=0;
endmodule

测试平台(未对正确性作验证):

module tb;
logic bit_in;
logic rst;
logic clk;
logic detect;
//clk
initial
begin
   clk=0;
   forever begin
      #5 clk=~clk;
   end
end
//rst
initial
begin
   rst=1;
   #100
   rst=0;
end
//
always@(posedge clk,posedge rst)
if(rst)
    bit_in<=0;
else
    bit_in<={$random%2};
//
initial
begin
   #1000
   $finish;
end
//
initial begin
 $fsdbDumpfile("./top.fsdb");
 $fsdbDumpvars(0);
end
//inst
top U(.*);

endmodule

makefile脚本:

all: listfile com sim verdi clean

listfile:
	find -name "*.sv" > filelist.f

com:
	vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -sverilog -debug_access -timescale=1ns/10ps \
	-f filelist.f -l com.log -kdb -lca 

sim:
	./simv -l sim.log


verdi:
	verdi -sv -f filelist.f -ssf *.fsdb -nologo &

clean:
	rm -rf csrc *.log *.key *simv* *.vpd *DVE*
	rm -rf verdiLog *.fsdb *.bak *.conf *.rc *.f

依次输入make listfile, make com, make sim, 然后输入make verdi。(或者直接输入make listfile ; make com ; make sim ; make verdi)得到:
在这里插入图片描述
选中U(top),即1,然后点击2,得到:
在这里插入图片描述
双击nSchema方框中的状态机,得到
在这里插入图片描述
点击View,勾选下图所示的三项:
在这里插入图片描述
此时,会显示所勾选的三项的相关信息,如下图所示。
在这里插入图片描述
按住shift,选中S1, S11和S110三个状态,然后点击Tools–>Partial FSM。
在这里插入图片描述
可以得到由这三个状态所组成的部分状态机:
在这里插入图片描述
最后,点击FSM,选中State Animation,然后点击Analysis Report…。

在这里插入图片描述
状态机报告如下图所示:
在这里插入图片描述
该图给出了状态机的整体信息,包括输入、输出信号,时钟信号的名称及其极性,复位条件以及状态信号、初始状态和状态表。等等。
在这里插入图片描述
State栏则给出了每一个状态在仿真中出现的次数。同时会警告从未出现过的状态。

在这里插入图片描述

Transition栏则给出了每一种状态跳转情况出现的次数。

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

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

相关文章

软件测试(测试用例 )—— 写用例无压力

软件测试——用例篇 一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤&#xff1a; 测试…

企业数字化营销怎么做?企业数字化营销系统怎么选择?

数字化营销是在不改变原有营销本质的前提下&#xff0c;借助数字化平台&#xff0c;把营销集成在系统或者说平台&#xff0c;通过平台的整合发力&#xff0c;改变传统营销压力及规避一些营销困难&#xff0c;实现数据留痕平台&#xff0c;用数据反哺运营与营销&#xff0c;让营…

jdk动态代理案例和实现原理

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

visio插入mathtype保存时报错“DOS共享冲突”解决方案

软件版本 软件版本VisioMicrosoft Visio 专业版2019WordMicrosoft Office LTSC 专业增强版 2021MathType7.4.10.53WindowsWindows 10 家庭中文版 22H2 19045.3208 现象 无论是从Word直接“粘贴”到Visio或从Visio“插入→对象”插入“MathType 7.0 Equation”&#xff0c;在…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务&#xff1a;为陌生的SoC平台编写基础软件&#xff0c;适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日&#xff0c;我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发&#xff0c;一定会在厂家提供的标准…

运营工具篇

既然要做点事&#xff0c;至少要先做到万事俱备只欠东风。 我们也不用把研发产品看得太神圣&#xff0c;比如拿一张纸做出来一个会旋转的纸杯&#xff0c;碰巧有一群人喜欢它并且愿意为它付费&#xff0c;那么剩下要做的是什么&#xff1f;把这个纸杯量产并送到目标用户面前。…

Baklib团队拜访深证通,加强与合作企业沟通

2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09;。 2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09…

Java程序员需要掌握的前端知识(一)

对于前端知识&#xff0c;需要进一步巩固和加强&#xff0c;进入企业之后&#xff0c;要具备一定的接口调试&#xff0c;参数接收的能力&#xff0c;以及单体页面的开发&#xff0c;这里我学习一下前端知识巩固一下自身的技术栈和水平。本次笔记是跟学黑马的同名课程&#xff0…

2-5 构建聚合工程

父项目 新建 子模块 创建 父项目的pom文件 自动添加了模块引用 1. 聚合工程里可以分为顶级项目&#xff08;顶级工程、父工程&#xff09;与子工程&#xff0c;这两者的关系其实就是父子继承的关系 子工程在maven里称之为模块&#xff08;module&#xff09;&#xff0c;模…

redis和mongodb数据库的基本操作

目录 一、redis基本操作 1、 string类型数据的命令操作&#xff1a; 2、 list类型数据的命令操作&#xff1a; 3、 hash类型数据的命令操作 4、Keys相关的命令操作 二、MongoDB 基本操作作业 1. 查找练习 2.增加、更新、删除作业 &#xff1a; 3.使用之前的grade数据库…

【开发者指南】MyEclipse是如何支持AngularJS的?

MyEclipse在2015 CI 7版本中就引入了对AngularJS的支持&#xff0c;接着往下看&#xff0c;本文将介绍它包含的功能特性。 MyEclipse v2023.1.1离线版下载 1. 支持AngularJS MyEclipse对AngularJS的初始支持在MyEclipse 2015 CI 7中可用&#xff0c;后续版本将提供更多的Ang…

linux进程间通信的本质

因为进程间具有独立性&#xff0c;你们想用进行进程间通信&#xff0c;难度还是比较大的。 进程间通信的本质就是让不同的进程看到同一份资源。 为什么要进行进程间通信——交互数据、控制、通知等目标 进程间通信的技术背景 进程是具有独立性的。虚拟地址空间页表 保证进程运…

Java基础---常用类大全以及各数据结构的方法大全

目录 前言 一、Math类 二.Scanner类 三、String类、StringBuilder和StringBuffer类 &#x1f496;String类 &#x1f496;StringBuilder和StringBuffer 四.Arrays类 五.Random类 六.时间类 七.ArrayList顺序表 八、LinkedList与链表 九.Stack栈和Queue队列 十.Pri…

UE5 DLC

前言 在网上找了很多文档,并没有介绍DLC如何创建,但是对比多篇文档后,可以总结为DLC也是Pak包,本质上还是补丁包,B站上有一篇视频介绍了: [UE4]如何在虚幻4游戏里添加DLC的教程(中英机翻)_哔哩哔哩_bilibili 但是也感觉不对,因为要改Build.cs文件。故研究了一下插件式…

【python】python五月国内社会消费品零售总额数据分析(代码+数据+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…

ARM微控制器 AM2432BSEFHIALXR、AM2432BSFFHIALV技术参数(32位MCU)

1、AM2432BSEFHIALXR 32位MCU采用293引脚FCCSP封装&#xff0c;工作频率最高可达800MHz。该微控制器专为需要结合处理和实时通信的工业应用而构建&#xff0c;例如远程I/O模块和电机驱动器。 核心处理器&#xff1a;ARM Cortex-M4F&#xff0c;ARM Cortex-R5F 内核规格&#xf…

2.数据结构--空间复杂度

文章目录 一、空间复杂度讲解二、计算下列经典例题的空间复杂度1.冒泡排序的空间复杂度 O(1)2.斐波那契递归的空间复杂度 O(N)3.计算阶乘递归的空间复杂度 O(N) 三、时间复杂度和空间复杂度的对比四、常见的函数的时间复杂度和空间复杂度的总结 一、空间复杂度讲解 1.空间复杂…

复习第五课 C语言-初识数组

目录 【1】初识数组 【2】一维数组 【3】清零函数 【4】字符数组 【5】计算字符串实际长度 练习&#xff1a; 【1】初识数组 1. 概念&#xff1a;具有一定顺序的若干变量的集合 2. 定义格式&#xff1a; 数组名 &#xff1a;代表数组的首地址&#xff0c;地址常量&…

【iOS】ARC内存管理

内存管理 内存管理的思考方式iOS底层内存管理方式1. tagged pointer2. on-pointer iSA--非指针型iSA3. SideTables&#xff0c;RefcountMap&#xff0c;weak_table_t 内存管理有关修饰符__strong修饰符对象的所有者和对象的生命周期__strong对象相互赋值方法参数中使用__strong…

LeetCode 热题 100(一):哈希。49. 字母异位词分组、128. 最长连续序列。

LeetCode100链接&#xff1a;LeetCode 热题 100 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 一、49. 字母异位词分组 题目要求&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。…