0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VCS仿真软件的基本使用方式

电子工程师 来源:ZYNQ 作者:ZYNQ 2022-08-10 11:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、前言

毕业论文答辩结束,闲下来写篇文章。芯片研发人员都在Linux系统下借助各种EDA工具和代码语言完成工作,因此提高代码开发效率,熟练运用开发工具是十分必要的。本文讲述VIM编辑神器的verilogHDL自定义模板调用以及VCS仿真软件的基本使用方式。

二、VIM编辑器自定义模板调用

在之前的博文中谈到过GVIM编辑器中可以通过调用模板来生成重复性代码,但没有介绍自定义模板的方式。关于VIM的安装与配置详细内容,见参考文献1。这里主要用到VIM的用户配置文件:.vimrc(若没有新建该文件并编辑),我们在用户目录下使用ls -al命令可以看到该文件:

59743198-17df-11ed-ba43-dac502259ad0.png

使用VIM编辑器打开VIM配置文件,以下部分是在文件底部自行添加的命令:

:ab Shixu always@(posedge clk or negedge rst_n)beginif(~rst_n)beginendelse beginendend :ab Zuhe always@(*)beginend :ab Counter always@(posedge clk or negedge rst_n)beginif(~rst_n)begincnt <= 0;endelse if(add_cnt)beginif(end_cnt)cnt <= 0;elsecnt <= cnt + 1'b1;endendassign add_cnt = ;assign end_cnt = add_cnt && cnt == - 1; :ab Width_func function integer clogb2 (input integer bit_depth);beginfor(clogb2=0;bit_depth>0;clogb2=clogb2+1)bit_depth = bit_depth >> 1;endendfunction :ab Clock initial beginclk = 0;forever begin#(CYC/2.0);clk=~clk;endend :ab Reset initial beginrst_n = 1;#1;rst_n = 0;#(RST_TIM*CYC) rst_n = 1;end

自定义模板的格式为 :ab

其中com是调用指令,code是当前指令生成的代码。我们新建一个.v文件测试下就能看出模板调用的妙处了。

编辑(插入)模式下,输入Shixu后按下回车生成:

598b5d6e-17df-11ed-ba43-dac502259ad0.png

输入Zuhe后按下回车生成:

59a5bc5e-17df-11ed-ba43-dac502259ad0.png

输入Counter后按下回车生成:

59b641fa-17df-11ed-ba43-dac502259ad0.png

这三个是最常用到的代码,三者相互组合可以完成很多功能了。但若状态或工作模式较多,一般采用状态机完成。输入FSM后按下回车生成:

59d7cee2-17df-11ed-ba43-dac502259ad0.png

在设计时,经常要根据数值范围设定变量的位宽。此时经常用到一个位宽计算到函数。输入Width_func后按下回车生成:

59e7a218-17df-11ed-ba43-dac502259ad0.png

在设计文件里常用的重复性代码基本就这些了,可以根据自己的coding style灵活调整。接下来说说testbench部分。输入Test后按下回车生成:

59f6aa4c-17df-11ed-ba43-dac502259ad0.png

里边包括了testbench中的时钟和复位相关的参数与信号定义。实际上时钟和复位信号的产生也是可以复用的。输入Clock_rst后按下回车生成:

5a07dba0-17df-11ed-ba43-dac502259ad0.png

自定义模板还没有灵活到可以生成模块例化代码,这一部分功能得借助其他脚本语言完成了,笔者还没有尝试过。

三、VCS软件仿真

光说这个软件没什么意思,我们来举个栗子~设计一个计数器,输出位宽固定32位。当使能信号拉高则开始从0计数直到最大值后再次从0开始递增。设计代码counter.v:

5a296392-17df-11ed-ba43-dac502259ad0.png

测试代码 counter_tb.v:

5a3a7f7e-17df-11ed-ba43-dac502259ad0.png

VCS仿真大体分为三步:编译、仿真以及调试。编译命令:vcs *.v -debug_all 命令行界面会显示些信息:

5a5c8222-17df-11ed-ba43-dac502259ad0.png

之后文件夹内会生成simv文件,执行该文件进行仿真。./simv -gui 这里使用-gui选项打开DVE图形界面。

5a778a40-17df-11ed-ba43-dac502259ad0.png

接下来的操作和常用的Modelsim差不多了。把要观测的信号添加到波形窗口:

5a80e720-17df-11ed-ba43-dac502259ad0.png

点击左上角按钮运行仿真:

5a9b39fe-17df-11ed-ba43-dac502259ad0.png

按下红色箭头所指位置观察全局波形:

5ab62368-17df-11ed-ba43-dac502259ad0.png

按住鼠标左键拖动来局部放大数据波形,计数器与输出从0到19周期性递增,功能正确。

5adb4e54-17df-11ed-ba43-dac502259ad0.png

复杂的操作后续用到再学。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • VCS
    VCS
    +关注

    关注

    0

    文章

    80

    浏览量

    10234
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73136
  • 仿真软件
    +关注

    关注

    21

    文章

    274

    浏览量

    31618
  • 编辑器
    +关注

    关注

    1

    文章

    826

    浏览量

    32646

原文标题:数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例

文章出处:【微信号:ZYNQ,微信公众号:ZYNQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    vcs实用技巧

    VCS是编译型verilog仿真器,VCS先将verilog/systemverilog文件转化为C文件,在linux下编译生成的可执行文./simv即可得到仿真结果。
    的头像 发表于 10-25 17:22 3020次阅读
    <b class='flag-5'>vcs</b>实用技巧

    vcs和vivado联合仿真

    我们可能就需要用到vcs核vivado联合仿真。 1.Vivdao仿真库编译 打开vivado软件,点击Tools–&gt;Compile Simulation Librar
    发表于 10-24 07:28

    VCS仿真指南(第二版).pdf

    VCS-verilog compiled simulator是synopsys公司的产品.其仿真速度相当快,而且支持多种调用方式;使用的步骤和modelsim类似,都要先做编译,再调用仿真
    发表于 12-15 10:27

    VCS DVE 仿真工具讲解

    VCS是Synopsys公司的数字逻辑仿真工具,DVE是一个图形界面,便于调试RTL代码,查看波形。本视频简要介绍VCS的常用概念。 欢迎大家加入启芯SoC QQ群: 275855756。共同交流和学习SoC芯片设计技术。
    发表于 10-04 13:07

    nanosim和vcs混合仿真的过程是怎样的?

    nanosim和vcs为什么可以联合起来进行数字模拟混合仿真?nanosim和vcs混合仿真的过程是怎样的?
    发表于 06-18 08:28

    基于linux系统的VCS使用及仿真说明

    最近在学习VCS,现将VCS的一些使用心得记录下来。VCS是synopsys的仿真verilog的仿真器。基于linux系统。有命令行模式和
    发表于 07-18 16:18

    基于linux系统实现的vivado调用VCS仿真教程

    在linux系统上实现vivado调用VCS仿真教程 作用:vivado调用VCS仿真可以加快工程的仿真和调试,提高效率。 前期准备:确认安
    的头像 发表于 07-05 03:30 1.2w次阅读
    基于linux系统实现的vivado调用<b class='flag-5'>VCS</b><b class='flag-5'>仿真</b>教程

    如何使用Synopsys VCS仿真器进行ZYNQ BFM IPI设计仿真

    了解如何使用Vivado中的Synopsys VCS仿真器使用ZYNQ BFM IPI设计运行仿真。 我们将演示如何编译仿真库,为IP或整个项目生成
    的头像 发表于 11-29 06:59 5644次阅读

    如何使用Vivado中的Synopsys VCS仿真器进行仿真

    了解如何使用Vivado中的Synopsys VCS仿真器使用MicrBlaze IPI设计运行仿真。 我们将演示如何编译仿真库,为IP或整个项目生成
    的头像 发表于 11-29 06:57 8215次阅读

    SpinalHDL运行VCS+Vivado相关仿真

    本篇文章来源于微信群中的网友,分享下在SpinalHDL里如何丝滑的运行VCS跑Vivado相关仿真。自此仿真设计一体化不是问题。
    的头像 发表于 08-10 09:15 3548次阅读

    浅谈VCS的两种仿真flow

    几乎所有的芯片设计、芯片验证工程师,每天都在和VCS打交道,但是由于验证环境的统一化管理,一般将不同的编译仿真选项集成在一个文件里,只需要一两个人维护即可。所以大部分人比较少有机会去深入地学习VCS
    的头像 发表于 01-10 11:20 5899次阅读

    如何用vcs+verdi仿真Verilog文件

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件内容如下:
    的头像 发表于 05-11 17:03 2713次阅读
    如何用<b class='flag-5'>vcs</b>+verdi<b class='flag-5'>仿真</b>Verilog文件

    VCS实用技巧分享

    VCS是编译型verilog仿真器,VCS先将verilog/systemverilog文件转化为C文件,在linux下编译生成的可执行文./simv即可得到仿真结果。
    的头像 发表于 05-30 09:26 3121次阅读
    <b class='flag-5'>VCS</b>实用技巧分享

    记录VCS仿真的IP核只有VHDL文件的解决方法

    使用VCS仿真Vivado里面的IP核时,如果Vivado的IP核的仿真文件只有VHDL时,仿真将变得有些困难,VCS不能直接
    的头像 发表于 06-06 11:15 3478次阅读
    记录<b class='flag-5'>VCS</b><b class='flag-5'>仿真</b>的IP核只有VHDL文件的解决方法

    VCS 仿真option 解析

    VCS仿真选项分编译(compile-time)选项和运行(run-time)选项。编译选项用于RTL/TB的编译,一遍是编译了就定了,不能在仿真中更改其特性,例如define等等。
    的头像 发表于 01-06 10:19 6476次阅读