前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手撕distributed ram类型同步FIFO

手撕distributed ram类型同步FIFO

作者头像
根究FPGA
发布2020-08-18 14:44:10
9540
发布2020-08-18 14:44:10
举报
文章被收录于专栏:根究FPGA根究FPGA

同步fifo设计的核心在于full与empty信号的控制,今天看网上发布的部分verilog代码,虽然可以完成读写操作,但是存在部分问题,就是最后一个数据的读取问题,该问题的导致是因为full与empty信号的控制失误。

Target

设计一个小型distributed FIFO(数据位宽8,地址位宽4,深度16),类型为FWFT(即读数据与读取信号同周期输出),该FIFO使用FPGA内部的LUT资源,不使用FPGA内部的Block memory资源(因为比较小,所以不使用容量较大的BRAM)。

此外,为了练习VCS、VERDI软件操作,熟悉波形dump、Coverage check,对代码进行检测。

对代码进行波形加载、对覆盖率进行检测,使用Verdi进行debug

DVE记录波形

在编译时打开vcdpluson选项($vcdpluson()),在编译脚本中设置生成的vpd文件名。

vpd是Synopsys公司VCS DVE支持的波形文件,可以使用$vcdpluson()产生。

在指令中设置生成的vpd文件名:

代码语言:javascript
复制
VPD_NAME=+vpdname+${OUTPUT}.vpd

在编译时打开-debug_all选项,同时打开VPD_NAME开关,存储编译生成的.vpd波形文件,其实此时生成的.vpd文件仅为一个空文件。

在运行仿真即运行生成的二进制可执行文件时,打开VPD_NAME选项,此时生成的.vpd文件中包含波形信息。

打开vpd文件有两种方式:

第一种:先打开dve(dve &),之后在dve中打开.vpd文件

第二种:直接打开,dve -vpd ${OUTPUT}.vpd &

覆盖率检测

代码质量的标准,在编译时打开行、状态、条件、翻转、分支统计选项,并设置保存覆盖率统计文件的文件夹,还可以设置包含覆盖覆盖率信息的文件名:

代码语言:javascript
复制
CM=-cmline+fsm+cond+tgl+tgl
CM_DIR=-cm_dir{OUTPUT}.vdb
CM_NAME=-cm_nameBaseFPGA

上述语句分别设置覆盖率文件的统计信息、文件目录、文件名

在编译和运行时打开上述选项,之后通过DVE查看覆盖率信息:

代码语言:javascript
复制
dve -covdir{OUTPUT}.vdb &
Verdi波形加载

verdi波形加载需要使用.fsdb文件,生成.fsdb文件有两种方式.

一种是在.v文件中嵌入函数:

代码语言:javascript
复制
$fsdbDumpfile(“xxx.fsdb”);  //指定生成的fsdb文件名字
$fsdbDumpvars(0,top);         //指定Dump波形层次,需要注意top没有.v后缀

另一种方式是调用-ucil/tcl接口,在脚本中进行设置

在编译时打开Verdi偏移选项,在仿真时调用ucli接口对波形进行Dump。

需要注意的是在仿真时需要设置+fsdb+autoflush即自动将波形转存到.fsdb文件中。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Target
    • DVE记录波形
      • 覆盖率检测
        • Verdi波形加载
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档