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

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

3天内不再提示

浅谈VCS的两种仿真flow

ruikundianzi 来源:ICer消食片 2023-01-10 11:20 次阅读

几乎所有的芯片设计、芯片验证工程师,每天都在和VCS打交道,但是由于验证环境的统一化管理,一般将不同的编译仿真选项集成在一个文件里,只需要一两个人维护即可。所以大部分人比较少有机会去深入地学习VCS的仿真flow。基于此,本文将介绍VCS仿真的两种flow,概述这两种flow分别做了哪些事!

VCS是一个高性能、高容量的编译代码仿真器,它将高级抽象的验证技术集成到一个开放的本地平台中。它能够分析、编译和编译Verilog、VHDL、SystemVerilog和OpenVera所描述的design,并且还提供了一组仿真和调试功能来验证design,这些特性提供了源代码级debug和仿真结果。支持原生测试平台、SystemVerilog、验证规划、覆盖率分析和收敛。

除了标准Verilog、VHDL和混合HDL和SystemVerilog编译和仿真功能,VCS包括以下集成的功能和工具集:

SystemC

Verdi

Unified Command-line Interface (UCLI)

Built-In Coverage Metrics

DirectC Interface

VCS还可以与第三方工具集成,如Specman、Denali和其他加速和仿真系统。

下面介绍VCS的两种仿真flow:two-step flowthree-step flow

two-step flow

只支持Verilog HDL和SystemVerilog设计,包括两个步骤:

compilation 编译

simulation 仿真

compilation:编译是仿真design的第一步,此时VCS构建实例层次结构并生成一个二进制可执行的simv,之后用于仿真。 在此阶段,我们可以选择以优化模式调试模式编译design。

使用vcs,语法如下:

VCS [编译选项] Verilog_files

常用选项如下:

-h 或 -help

列出最常用的VCS编译和运行时选项的描述

-标识

返回有用的信息,如VCS版本和构建日期,VCS编译器版本,以及工作站名称、平台和主机ID

-v 文件名

指定Verilog库文件,VCS在这个文件中查找模块定义和在源代码中找到的UDP实例

-y 目录

指定Verilog库目录,VCS在这个目录的源文件中搜索模块定义和UDP实例。 VCS在这个目录中搜索与实例中模块或UDP标识符同名的文件(不是实例名)。 如果找到了这个文件,VCS会在文件中搜索模块或UDP定义来解析实例

ps:如果你在不同的库中有多个同名的模块,VCS会选择用第一个-y选项指定的库中定义的模块

+incdir+目录+

指定VCS搜索包含文件的directory目录,可以使用加号(+)字符指定多个目录

+扩展+扩展+

指定VCS只在库目录中搜索具有指定文件扩展名的文件,可以指定多个扩展名,用加号(+)分隔扩展名。 例如,+libext+ .v+ . V+,指定在库中搜索扩展名为.v或.V的文件

+图书馆

指定在VCS找到实例的库的剩余部分中搜索未解析的模块实例的模块定义

-全64

支持64位模式下的编译和仿真

-文件名

指定包含文件列表和编译时选项的文件

-给

启动verdi

-R

编译后立即启动仿真

-p值+parameter_hierarchical_name=值

将指定的参数更改为指定的值

-参数文件名

将文件中指定的参数更改为文件中指定的值

-通知

启用详细诊断消息

-q

quiet模式; 抑制消息,例如关于VCS使用的C编译器、VCS解析的源文件、顶层模块或指定的timescale的消息

-在

verbose模式; 打印消息,例如编译器驱动程序在运行C编译器、汇编器和链接器时打印它执行的命令

-l 文件名

指定VCS记录编译消息的文件,如果还有-R选项,VCS将在同一个文件中记录编译和仿真的消息

+定义+宏=值+

将源代码中的文本宏定义为值或字符串,可以在Verilog源代码中使用`ifdef编译器指令来测试这个定义

simulation:在编译过程中,VCS生成一个二进制可执行文件simv,使用simv来运行仿真。 根据编译的方式,可用两种模式运行仿真:

交互模式

在初始阶段以交互模式(调试模式)编译design。 在这个阶段,可以使用GUI或通过命令行调试design问题。 通过GUI进行调试可以使用Verdi,通过命令行进行调试可以使用UCLI (Unified command line interface)

批处理模式

当大多数design问题解决后,可以使用批处理模式(优化模式)编译design。 在这个阶段,可以以最小的debug性能来换取更好的性能来运行回归

使用下面的命令行来仿真设计:

simv_executable [runtime_options]

缺省情况下,VCS生成可执行的二进制文件simv,但也可以在vcs命令行中使用编译时间选项-o来生成具有指定名称的二进制可执行文件

-图形用户界面

当设置了VERDI_HOME时,此选项启动Verdi

-乌克利

该选项在UCLI模式下启动simv

三步流程

支持Verilog、VHDL和混合HDL设计,包括三个步骤:

analysis 分析

elaboration 细化

simulation 仿真

analysis:分析是仿真design的第一步,在此阶段将使用vhdlanvlogan分析VHDL、Verilog、SystemVerilog和OpenVera文件。 下面的部分包括几个分析设计文件的示例命令行:

分析 VHDL 文件:

vhdlan [vhdlan_options] file1.vhd file2.vhd

分析您的 Verilog 文件:

vlogan [vlogan_options] 文件1.v 文件2.v

分析您的系统Verilog文件:

vlogan -sverilog [vlogan_options] file1.sv file2.sv file3.v

分析您的 OpenVera 文件:

vlogan -ntb [vlogan_options] file1.vr file2.vr file3.v

分析您的SystemVerilog和OpenVera文件:

vlogan -sverilog -ntb [vlogan_options] file1.sv file2.vr file3.v

由于一般使用Verilog,故本文只介绍vlogan常用选项:

-帮助

显示vlogan的使用信息

-q

忽略所有vlogan消息

-f 文件名

指定包含源文件列表的文件

-全64

分析 64 位仿真设计

-忽略keyword_argument

根据指定的关键字参数,忽略警告消息

-l 文件名

指定VCS记录分析器消息的日志文件

-sverilog

启用分析SystemVerilog源代码

-sv_pragma

指示VCS在单行或多行注释中编译sv_pragma关键字后面的SystemVerilog断言代码

-时间刻度=time_unit/time_precision

为不包含timescale编译器指令的源文件指定unit和precision,并在包含时间表的源文件之前指定时间表

-v library_file

指定用于搜索模块定义的Verilog库文件

-作品库

将设计库名称映射到接收vlogan输出的逻辑库名称work

**elaboration:**细化是仿真design的第二步,在这个阶段,使用分析过程中生成的中间文件,VCS构建实例层次结构并生成一个二进制可执行的simv,该二进制可执行文件之后用于仿真。 可选择优化模式或调试模式来细化design。

常用选项如下:

-h 或 -help

列出最常用的VCS编译和运行时选项的描述

-标识

返回有用的信息,如VCS版本和构建日期,VCS编译器版本,以及工作站名称、平台和主机ID

-全64

支持64位模式下的编译和仿真

-文件名

指定包含文件列表和编译时选项的文件

-l 文件名

指定VCS记录编译消息的文件,如果还有-R选项,VCS将在同一个文件中记录编译和仿真的消息

simulation:仿真是最后一步,在细化过程中,使用生成的中间文件,VCS创建了一个二进制可执行文件simv。 使用simv来运行仿真。 可以使用以下两种模式运行仿真:

交互模式

在初始阶段以交互模式(调试模式)细化design。 在这个阶段,可以使用GUI或通过命令行调试design问题。 通过GUI进行调试可以使用Verdi,通过命令行进行调试可以使用UCLI (Unified command line interface)

批处理模式

当大多数design问题解决后,可以使用批处理模式(优化模式)编译design。 在这个阶段,可以以最小的debug性能来换取更好的性能来运行回归

使用下面的命令行来仿真设计:

simv_executable [runtime_options]

缺省情况下,VCS生成可执行的二进制文件simv,但也可以在vcs命令行中使用编译时间选项-o来生成具有指定名称的二进制可执行文件

-图形用户界面

当设置了VERDI_HOME时,此选项启动Verdi

-乌克利

该选项在UCLI模式下启动simv

以上内容介绍了使用两种仿真flow的基本步骤,其余功能需要用的时候再查VCS® User Guide就行了!

审核编辑:汤梓红

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

    关注

    50

    文章

    3872

    浏览量

    132166
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109312
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    127691
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9497
  • Flow
    +关注

    关注

    0

    文章

    10

    浏览量

    8769

原文标题:浅谈VCS的两种仿真flow

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

收藏 人收藏

    评论

    相关推荐

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

    包括两种调试界面:Text-based:Command Line Interface(CLI) 和 GUI-based(VirSim);仿真主要的个步骤是编译,运行: VCS
    发表于 12-15 10:27

    VCS DVE 仿真工具讲解

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

    萌新求助关于VCS仿真指南

    VCS有哪几种调试模式?萌新求助关于VCS仿真指南
    发表于 04-29 06:52

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

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

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

    testbench中加入$stop语句。这样仿真可以在该处停下来,这样可以查看各个信号的值。如我再testbench中加入个$stop语句。执行命令 vcs
    发表于 07-18 16:18

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

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

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

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

    VCS独立仿真Vivado IP核的一些方法总结

    些许改进,所以写这篇文章补充下。 在仿真Vivado IP核时分两种情况,分为未使用SECURE IP核和使用了SECURE IP核。 对于没有使用SECURE IP核的IP核仿真,只需要在V
    的头像 发表于 03-22 10:31 3511次阅读

    使用VCS两种仿真flow的基本步骤

    VCS是一个高性能、高容量的编译代码仿真器,它将高级抽象的验证技术集成到一个开放的本地平台中。它能够分析、编译和编译Verilog、VHDL、SystemVerilog和OpenVera所描述
    的头像 发表于 05-07 14:20 4094次阅读

    SpinalHDL运行VCS+Vivado相关仿真

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

    使用VCS仿真Vivado IP核时遇到的问题及解决方案

    前年,发表了一篇文章《VCS独立仿真Vivado IP核的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP核时遇到的一些问题及解决方案,发表之后经过一
    的头像 发表于 08-29 14:41 1621次阅读

    VCS实用技巧分享

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

    VCS独立仿真Vivado IP核的一些方法总结

    最近,需要使用VCS仿真一个高速并串转换的Demo,其中需要用到Vivado的SelectIO IP核以及IDELAYCTRL,IDELAY2原语。而此前我只使用VCS仿真过Quart
    的头像 发表于 06-06 11:09 1739次阅读
    <b class='flag-5'>VCS</b>独立<b class='flag-5'>仿真</b>Vivado IP核的一些方法总结

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

    使用VCS仿真Vivado里面的IP核时,如果Vivado的IP核的仿真文件只有VHDL时,仿真将变得有些困难,VCS不能直接
    的头像 发表于 06-06 11:15 1443次阅读
    记录<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 542次阅读