目录

一、问题

二、验证方案及效果

1、路径数量分析:

(1)计数模式:

(2)复位模式:

(3)置数模式:

2、路径验证方案及仿真

(1)验证1:计数模式的验证

(2)验证2:状态0的置数模式和复位模式的验证

(3)验证3:状态1、2、……、254、255的置数模式的验证

3、仿真结果分析

【附录】

testbench.v源码

一、问题

模256计数器(传统状态机)Verilog代码如下:

构造验证方案,使用最少的周期覆盖所有的路径。

二、验证方案及效果

1、路径数量分析

由always块种条件判断语句可以得知:状态跳变由复位模式rst、置数模式load或计数模式下上升沿来控制,可以分类讨论:

(1)计数模式:

从0->1->2->……->255->0为一个循环,一共有256条路径。

(2)复位模式:

可以从任意一个状态跳回0状态,一共有256条路径。

(3)置数模式:

可以从任意两个状态之间跳变(当然自己也可以向自己跳变),因此一共有256*256种状态。

综上所述,整个状态机一共的路径有:256*256+256+256 = 66048种。

2、路径验证方案及仿真

经过对代码的分析可以得到状态机的状态转移有四种条件,分别是:

①rst == 1:从任何一种状态跳到0状态;

②load == 1:从任何一种状态跳到in决定的状态;

③(rst ==0 && load == 0 && counter == 255):从255状态跳变到0状态;

④(rst ==0 && load == 0 && counter < 255):状态编码由上升沿触发依次递增;

本着使用最少的周期来完整覆盖所有路径的原则,我试着用“一笔画”的思想用最少的重复路径的验证来实现所有路径的覆盖,我的方案如下:

(1)验证1:计数模式的验证

在条件(rst == 0 && load == 0 && counter < 256)下仿真256个时钟周期即可得到0->1->2->……->255->0循环的总共256条路径。状态转移图如下:

部分代码如下:

在(rst == 0 && load == 0 && counter < 256)的条件下延时256个周期,得到仿真波形如下:

复位后起始从状态0开始:

第256个周期从状态255回到状态0:

可以看到,测试1验证了0->1->2->……->255->0的循环。测试1总共仿真5140ns,周期PERIOD = 20ns,起始复位20ns,因此测试1总共用周期个。

(2)验证2:状态0的置数模式和复位模式的验证

为了验证在各个状态下rst复位的有效性,先使用load=1跳转到各个状态,再使用rst=1将状态复位为0。有状态转移图如下:

部分代码如下:

仿真结果截图:

可以看到,counter先是被置位in的状态,然后在rst信号的作用下回到状态0。测试2总共覆盖了256*2 = 512种路径。测试2仿真结束时间15380ns,总共消耗了个周期。

(3)验证3:状态1、2、……、254、255的置数模式的验证

在load=1的条件下,将状态1、2、3、……、254、255向其他255个状态和自身状态跳变,以验证load信号的有效性。状态转移图如下:

部分代码如下:

为了避免重复,上一层循环跳转过的状态再下一次循环不再重复,具体到代码就是j从i开始递增,而非从0开始。

仿真结果截图:

可以看到在循环过程种状态先从状态0跳转到待检测的状态,再通过load将状态跳到另一个状态,然后再通过load跳回待检测状态,遍历完所有256种状态,最后再load跳回状态0进行下一次循环。

这里有一个有意思的地方是:虽然检测3中待检测状态load回到状态0和检测2中某状态rst回到状态0看上去是相同的两个状态之间的跳转,但是它们所使用的条件是不同的,因此属于不同的路径。

测试3总共覆盖了256 + (255+254+253+……+1)*2 = 256 + 65280 = 65535条路径。测试3结束时总共仿真了1326080ns,消耗了(1326080/20)-512-256-1 = 65535个周期,理论和仿真结果两者相符合。

3、仿真结果分析

通过仿真发现,总共仿真了1326080ns,其中有20ns的初始化复位,总共消耗(1326080-20)/20 = 66303个周期,并且再测试3有状态0load到待检测状态重复的255个周期,所以真实覆盖到的路径有66303-255 = 66048条,恰好完整覆盖了所有的路径。

综上所述,受“一笔画”思想的启发,我提出的验证方案通过66303个周期实现了总共66408条路径的完整验证,但是还是有冗余周期255个。

【附录】

testbench.v源码

模256计数器的路径验证相关推荐

  1. EDA实验(Quartus Ⅱ+fpga) (二)---时序电路的设计-模可变计数器设计

    前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码.使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6. (一)实验目的 (1)进一步熟悉E ...

  2. quartus仿真33:74161级联实现模60计数器

    将60分解成6*10,分别用74161实现模6和模10计数器,再级联成模60计数器 利用OC进位端反相得到的信号输入到置位端,模6计数器的实现15-X+1=6,解得置数端需要准备的数为X=10=101 ...

  3. 对时序逻辑电路采用不同描述方式,ISE综合出来的电路(RTL Schematic)比较(以模5计数器为例)

    目录 前言 行为级描述 Verilog HDL设计代码为: ISE综合 RTL Schematic Technology Schematic 状态机描述状态转移图 Verilog HDL代码 测试文件 ...

  4. 级联模60计数器(Verilog HDL语言描述)(仿真与综合)

    目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...

  5. 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)

    目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...

  6. multisim仿真D触发器设计的模六计数器并在数码管显示0-5

    D触发器设计的模6计数器 设计思路从000计数到101,并用卡诺图进行化简,没有输出为摩尔型 用quartus仿真看波形 BCD译码 选择74LS48芯片,将D触发器输出Q2Q1Q0对应接到输入管脚C ...

  7. quartus仿真25:JK触发器构成的模7计数器(分析)

    分析是给出电路图分析逻辑功能 根据驱动方程写出状态转移方程绘制状态转移表 犯得两个错误 Q2Q1‾≠Q2‾⋅Q1‾\overline{Q_2Q_1}\neq\overline{Q_2} \cdot \ ...

  8. revit翻模中需要绘制路径和边界的构件(楼板,屋顶)怎么做不出错?

    revit翻模中需要绘制路径和边界的构件(楼板,屋顶)怎么做不出错?在项目中新建楼板.屋顶时最好不要在其创建状态下进行,容易出错.具体操作如下: 这种情况下想保存新建的屋顶必须在编辑完成后绘制一个屋顶 ...

  9. 【数电】如何使用74LS112(或74LS74)构成一个十四分频器(模七计数器)

    IT精英们,大家都学过数字电子技术吧,尽管这东西没用,不过这些基础课程对思维的培养还是很有好处的,我不爱上课,但不代表我不喜欢数电.我们实验课老师为了加强实验难度,把实验题改掉了,用74LS112(或 ...

最新文章

  1. 沈向、洋周明:神经自然语言处理进展综述:建模,学习,推理
  2. 技术社区_如何加入技术社区
  3. 2017.10.23 卡牌游戏 失败总结
  4. 谷歌Pixel 4“浴霸”相机模组细节曝光:包含一枚长焦镜头
  5. What’s the difference between system.web and system.webServer?
  6. 教你如何显示出文本文档的后缀名
  7. iOS开发从appStore下载历史版本
  8. 进程上下文切换 – 残酷的性能杀手(上)
  9. Industry工业软件开发平台设计A-1
  10. G.703接口和E1接口区别
  11. 【机器学习】使用 IQR、Z 分数、LOF 和 DBSCAN 检测异常值
  12. 基于ssm的网上问卷调查系统的实现与设计
  13. Chrome浏览器关闭地址栏的搜索记录
  14. OnePlus一加手机:测试
  15. 苹果史上8款最失败产品
  16. MSP430 单片机 SHT30 SHT31 温湿度传感器 MSP430F5529 MSP430G2553 程序
  17. 一个淘宝搜索接口,可接爬虫
  18. shell之if和else
  19. 这就是所谓的历史剧?
  20. 一个Linux下的网络模拟工具 Core

热门文章

  1. Java程序员必备的6款最佳开发工具, 你的最爱是哪款?
  2. wphone 开发 跳转应用市场 全景透视效果
  3. 多种解决:“Word无法启动转换器mswrd632.wpc”方法
  4. 码牛FFmpeg/直播/WebRtc音视频会议/视频编辑/音视频
  5. vivo手机光环助手下载游戏怎么打不开_全新5G自拍手机 vivo S6正式发布
  6. 天天静听ASMR-3.2.0——各种声音治疗你的失眠
  7. 苏州大学计算机复试python_2017年上岸苏州大学计算机,872考研经验,初复试经验分享贴!...
  8. 将Unicode编码转换为汉字
  9. 服务器清理虚拟内存工具,服务器清理虚拟内存工具
  10. 【附上解释】爬取A股所有上市公司的信息并存储到数据库或者是csv文件中