VCS与Verdi联仿,简要万能工程模板,持续更新中...

news2024/11/26 2:38:19

VCS与Verdi联仿,简要工程模板,持续更新中…

文章目录

    • VCS与Verdi联仿,简要工程模板,持续更新中...
      • 背景
      • 编写工程模块
      • 使用工程模板
      • 仿真结果
      • 工程下载地址

背景

  1. 学习verilog,故用vcs来编译verilog,用verdi来查看波形。
  2. 提供一套简要verilog工程模板去执行教程中代码,并分析波形。

编写工程模块

  1. 建立工程在temp文件夹下新建文件夹/rtl、/sim、/tb,如下:
➜  CSDN cd temp
➜  temp ls
rtl  sim  tb
  1. 在/rtl文件夹下新建两个.v文件: template.v和timescale.v ,为模板rtl代码。
➜  rtl ls
template.v  timescale.v
  1. 在/tb文件夹下新建.sv文件:tb_template.sv,为test bench文件。
➜  tb ls
tb_template.sv
  1. 在/sim文件夹下新建Makefile、runtemp和file.f文件,来进行vcs编译以及verdi看波形。
➜  sim ls
Makefile  file.f  runtemp

其中Makefile为makefile脚本写的自动编译工具,runtemp为写的简易自动编译工具。
4.1 使用Makefile脚本来进行自动编译。
方法:在文件夹/sim下运行命令 make就会编译完成,并且生成波形文件,再用verdi查看即可。由vcs编译和verdi打开产生的文件可以用 make clean清除掉。
4.2 使用简易编译工具runtemp进行编译的命令为:source runtemp

至此,简要工程模板配置完成。

使用工程模板

设计一个如下图的四选一选择器,用模板去编译和仿真看波形来验证模板是否正确。
4to1
选择器的rtl代码:

module mux4to1(
        input [1:0]     sel ,
        input [1:0]     p0 ,
        input [1:0]     p1 ,
        input [1:0]     p2 ,
        input [1:0]     p3 ,
        output [1:0]    sout);

   reg [1:0]     sout_t ;

   always @(*) begin
      if (sel == 2'b00)
        sout_t = p0 ;
      else if (sel == 2'b01)
        sout_t = p1 ;
      else if (sel == 2'b10)
        sout_t = p2 ;
      else
        sout_t = p3 ;
   end
   assign sout = sout_t ;
   
endmodule

四选一选择器的testbench代码:

`timescale 1ns/1ps
module test ;
   reg [1:0]    sel ;
   wire [1:0]   sout ;
   initial begin
      sel       = 0 ;
      #20 sel   = 3 ;
      #20 sel   = 1 ;
      #20 sel   = 0 ;
      #20 sel   = 2 ;
   end
   mux4to1 u_mux4to1 (
        .sel    (sel),
        .p0     (2'b00),        //path0 are assigned to 0
        .p1     (2'b01),        //path1 are assigned to 1
        .p2     (2'b10),        //path2 are assigned to 2
        .p3     (2'b11),        //path3 are assigned to 3
        .sout   (sout));
        
   //finish the simulation
   always begin
         #100;
         if ($time >= 1000) $finish ;
   end

`ifdef FSDB
initial begin
	$fsdbDumpfile("tb_template.fsdb");
	$fsdbDumpvars;
end
`endif
endmodule 

其中,每个自己的tb一定要保留如下片段,来保存仿真产生的信号波形,然后才能用verdi打开。

`ifdef FSDB
initial begin
	$fsdbDumpfile("tb_template.fsdb");
	$fsdbDumpvars;
end
`endif

接下来编译修改后的模板工程,打开文件夹/sim,在sim文件夹下输入make,在sim文件下产生这些文件:
编译后产生的文件列表
其中,tb_template.fsdb文件就是verdi能打开的波形文件了。
然后通过下图中的步骤用verdi打开代码文件。
![用verdi打开代码](https://img-blog.csdnimg.cn/3cf3179a38fc4c10b6018e45059b12b4.png#pic_center = 600x)
再按照如下步骤打开波形文件:
打开波形
最后按如下步骤查看波形:
看波形步骤

仿真结果

如下结果显示四选一选择器正确,故也得出模板工程正确。
仿真结果

工程下载地址

模板工程下载地址

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

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

相关文章

一篇文章了解编译类成员定义

文章目录 一篇文章了解编译类成员定义 %Dictionary.CompiledClass - 编译类定义表简介索引示例表结构 %Dictionary.CompiledConstraint - 编译约束表简介索引示例表结构 %Dictionary.CompiledConstraintMethod - 编译约束表简介索引示例表结构 %Dictionary.CompiledForeignKey …

通过docker-Compose快速搭建OwnCloud网盘

目录 docker-compose文件信息 nginx文件信息 证书生成 查看文件有哪些!!! 在 .yml 文件目录运行 查看容器情况并访问网页 当然,以下是一个使用 MySQL 5.7、Nginx 和 ownCloud 的完整 Docker Compose 示例,同时启用…

《Zookeeper》源码分析(十六)之 Leader是如何运行的

目录 Leader创建Leader实例lead() Leader Leader选举结束后,成为leader的服务器开始进行leader的工作,过程如下: 从源码中看出,第一步先创建Leader实例,第二步调用Leader.lead()方法,Leader的所有工作都…

【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题

目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…

Ubuntu20.04搭建OpenGL环境(glfw+glad)

Ubuntu20.04搭建OpenGL环境(glfwglad) Linux环境搭建 本文在VMware安装Ubuntu20.04桌面版的环境下搭建OpenGL,按照本文搭建完成后可以执行LearnOpenGL网站上的demo。 关于VMware可自行到VMware Workstation Pro | CN下载 关于Ubuntu20.04桌面版可自行到官网或In…

MNIST手写数字数据集+7000张图片下载

MNIST手写数字图像数据集是一个经典的用于图像分类任务的数据集,其中包含了大量的手写数字图像样本 数据集点击下载: MNIST手写数字数据集7000张图片.rar

【MySQL】好好学习一下InnoDB中的页

文章目录 一. 前言二. 从宏观层面看页三. 页的基本内容3.1 页的数据结构3.2 用户空间内的数据行结构3.3 页目录 四. 问题集4.1 索引 和 数据页 有什么区别4.2 页的大小是什么决定的4.3 页的大小对哪些情况有影响4.4 一般情况下说的链表有哪几个4.5 如果页的空间满了怎么办4.6 如…

微服务中间件--Ribbon负载均衡

Ribbon负载均衡 a.Ribbon负载均衡原理b.Ribbon负载均衡策略 (IRule)c.Ribbon的饥饿加载 a.Ribbon负载均衡原理 1.发起请求http://userservice/user/1,Ribbon拦截该请求 2.Ribbon通过EurekaServer拉取userservice 3.EurekaServer返回服务列表给Ribbon做负载均衡 …

线性代数的学习和整理9(草稿-----未完成)

3.3 特征值和特征向量是什么? 直接说现在:特征向量这个块往哪个方向进行了拉伸,各个方向拉伸了几倍。这也让人很容易理解为什么,行列式的值就是特征值的乘积。 特征向量也代表了一些良好的性质,即这些线在线性变换后…

[LeetCode111双周赛LeetCode359周赛] DP双指针

参考灵神和闫总的讲解和代码: https://www.bilibili.com/video/BV1rP411s7Z5 https://space.bilibili.com/206214 7006. 销售利润最大化 https://leetcode.cn/problems/maximize-the-profit-as-the-salesman/ Solution 动态规划 哈希表 首先按照 end 的顺序分…

UGUI可视化组件Image, RawImage

一.组件Image 1.1 Image的属性 创建的Image对象自带Image组件,用来显示图片,其属性说明如下 属性:功能:Source Image表示要显示的图像的纹理(必须作为精灵导入)。Color要应用于图像的颜色,会和…

Vs code 使用中的小问题

1.Java在Vs code 中使用单元测试失败或者如何使用单元测试 创建Java项目,或者将要测试的文件夹添加进工作区 要出现lib包,并有两个测试用的jar包 编写测试文件 public class TestUnit{ public static void main(String[] args) {String str "…

伺服电机入门01

伺服电机入门01 伺服电机 电机编码器,电机闭环 电机 : pmsm bldc 有刷电机 acim电机 步进电机等, 编码器:绝对编码器和增量编码器等 编码器入门: 信号: 总线信号 RS422 RS485 基础上面的总线方式 以下面…

TouchGFX之LTDC显示屏

1.根据原理图配置LTDC的GPIO(接线方式为RGB565)

在线SHA1计算哈希(不可逆的加密又称摘要)工具

具体请前往: 在线计算Sha1摘要工具

图像特征提取与描述

目录 Harris和Shi-Tomas算法Harris角点检测优缺点 Shi-Tomasi⻆点检测SIFT算法 Harris和Shi-Tomas算法 Harris角点检测 dstcv2.cornerHarris(src,blockSize,ksize,k)优缺点 Shi-Tomasi⻆点检测 cornerscv2.goodFeaturesToTrack(image,maxCorners,qualityLevel,minDistance)S…

依赖预构建与静态资源处理

依赖预构建 vite是一个基于浏览器原生ES-Module的前端构建工具。 当你首次启动vite的时候,vite会在本地加载你的站点之前预构建项目依赖。 原因: CommonJS和UMD兼容性:在开发阶段中,Vite的开发服务器将所有的代码视为原生ES模块。…

湘大 XTU OJ 1345 素数字符串 题解:欧拉筛法 前缀和 ‘\0‘ sprintf

链接 素数字符串 题目 题目描述 我们将素数从小到大依次书写,可以得到一个字符串"23571113⋯",已知一个数码d(0≤d≤9),求字符串在区间[L,R]之间的多少个d? 输入 第一行是一个整数T(1≤T≤10000),表示样例的个数。 每个样例…

Next.js 13 你需要了解的 8 件事

目录 React 服务器组件 (RSC)服务器组件默认开启在 Next.js 中客户端组件也在服务器上呈现!组成客户端和服务器组件编译Next.js 13 渲染模式桶文件有点坏了库集成:WIP 仍在进行中Route groups 路由组总结 在本文中,我们…

外贸邮箱签名怎么写?改版提升点击率的关键技巧揭秘!

外贸业务常用的一种营销工具就是电子邮件,而电子邮件的签名作为邮件信任度和品牌价值的体现,同样也是非常重要的。那么如何写一份优秀的外贸邮箱签名呢? 下面是几点建议。 第一,突出品牌形象。在签名中加入公司标志或相关图片可以…