VCS 杂记
文章平均质量分 71
本专栏,目的在于记录关于仿真工具VCS的使用、易错、易混淆、难理解等零碎用法。希望能够在实际工作和学习中,帮助到大家!
那么菜
仗剑天涯,谁来也不怕
展开
-
#VCS# 关于VCS 编译和仿真选项 force_list
验证环境中构造用例时可能会通过force内部的信号,达到测试的目的.为了方便后续环境检视,可以通过设置编译选项和运行选项的方式,获取force的信号.原创 2023-07-20 22:52:36 · 738 阅读 · 0 评论 -
#VCS#关于 simv 可执行返回结果的释义
VCS MX生成的simv可执行文件在出现错误,致命错误和断言失败时返回非零值。原创 2023-07-20 22:41:06 · 291 阅读 · 0 评论 -
#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸
前段时间,有时间整理了一下关于+vcs+initreg+random 编译和仿真选项的心得,草草写了两篇笔记。自觉得对该选项已经掌握了,后来实际应用中再次触及到了该知识点,不想又卡壳了。今天,继续追加一篇,希望对大家能有所帮助!不正之处,请指正。对于上述规则rule#2和 rule#3, 并没有什么可值得推敲的地方。今天我们着重看第一点,rule#1。原创 2023-07-06 23:16:23 · 1241 阅读 · 0 评论 -
#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(2)结果检查
从以上四个波形,我们看到,只有 ./simv +fsdb+delta +vcs+initreg+0/1 得到了我们预期的效果,但是 ./simv +fsdb+delta +vcs+initreg+z/x 却没有看到初始化成功。这里尚不清楚为什么?等待后续root cuase 吧。前面,我们已经对 VCS 编译选项 +vcs+initreg+random 做了讲解。今天,我们从另一个角度,去看该选项的具体作用时间阶段。对于如何启动仿真调度机制,大家可以参考之前的文章《原创 2023-05-14 20:42:34 · 849 阅读 · 0 评论 -
关于 Makefile,如何编译动态链接库.so和静态链接库.a
名词介绍静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动原创 2022-03-28 18:09:42 · 3616 阅读 · 0 评论 -
关于 Makefile,如何编写成型文件
工作原理:要生成终极目标,先检查依赖条件是否都具备,如果有依赖条件不存才则再寻找新的规则来生成依赖条件Makefile的编写Makefile文件命名为makefile或Makefile第一种形式app:main.c insert_sort.c select_sort.c gcc *.c -o app -std=c99直接使用命令生成目标文件,但是只要更新了其中的一个文件,所有文件都需要重新编译,大大浪费了时间app:main.c insert_sort.c select_sor..转载 2022-03-23 15:11:56 · 140 阅读 · 0 评论 -
关于 Makefile 伪目标的妙用
clean:rm *.o temp因为,我们并不生成“clean”这个文件。“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。当然,为了避免和文件重名的这种情况,我们可以使用一个特殊的标记“.PHONY”来显示地指明一个目标是“伪目标”,向make说明,不管是否有这个文件,这个目标就是“伪目标”。.PHON转载 2022-03-23 15:00:15 · 605 阅读 · 0 评论 -
关于 Makefile, 该知道这些
一 Makefile 的用途(1)可用做于管理工程文件的工具(2)make 是解释Makefile的解释命令工具(3)可以提高工作效率,减少出错的几率。二 基本规则2.1 目标:依赖 (tab)命令目标 --> 要生成的目标文件。(关于伪目标,请看最后补充说明。)依赖 --> 生成目标文件需要的一些文件。命令 --> 借助依赖文件生成目标文件的手段。忽略错误命令继续执行,不显示执行时候的命令细节。tab --> 缩进,有且只有...原创 2022-03-23 14:51:19 · 1794 阅读 · 1 评论 -
#VCS# VCS动态加载DPI shared lib (.so)方法
VCS动态加载DPI shared lib,在vcs compile之后,调用GCC执行C的编译,产生so文件。在vcs run的时候,手动加载so。包括以下2种种命令都行: 1) -sv_liblist,指定一个so的list文件bootstrap file,其中的so不需要加后缀名。 2) -sv_lib,加lib名,不需要加后缀。注意:-sv_root是指定DPI shared lib的根目录,可以识别环境变量$ENV,就很有用了。例子:以上先设置:-sv_root转载 2022-03-23 10:08:08 · 2346 阅读 · 0 评论 -
Linux基础——g++编译、静态库与动态库(共享库)
在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成与使用方式是不同的。刚开始可能会不适应,但是用多了应该会习惯这种使用,因为步骤上并没有VS下配置那么繁琐。下面就分别总结下linux下生成并使用静态库与动态库的方法:(由于是C++项目,所以编译器用的g++,但是与gcc的使用是相通的)。首先是准备工作,把我们需要封装转载 2022-03-23 09:43:15 · 1434 阅读 · 0 评论 -
Linux基础——gcc编译、静态库与动态库(共享库)
gcc 编译器1、gcc工作流程2、gcc常用参数参数 用途 -v 查看版本 -o 产生目标文件 -I+目录 指定头文件目录 -D 编译时定义宏 -00/-01/-03 没有优化/缺省值/优化级别最高 -Wall 提示更多警告信息 -c 只编译子程序 -E 生成预处理文件 -g 包含调试信息 静态库1、静态库的命名格式lib + 库的名字 + .a例:libMyTest.a (My.转载 2022-03-23 09:26:11 · 1029 阅读 · 0 评论 -
#VCS# 常用UCLI 命令汇总
以下,列出了常用的 UCLI 命令,均是synps 公司提供。原创 2022-03-15 17:58:40 · 8100 阅读 · 0 评论 -
#VCS# 关于fsdb波形记载的几种方法
This topic describes the use model to dump an FSDB file using VHDL procedures, Verilog system tasks, or UCLI.情形1:Using VHDL Procedures方法(1)You can use the VHDL procedures fsdbDumpfile() andfsdbDumpvars() in your VHDL code to dump an FSDB file.Note:..原创 2022-03-14 17:58:15 · 1239 阅读 · 0 评论 -
#VCS# 关于VCS 编译选项 《-v 、 -y 、+libext+》 的理解
我们知道VCS 提供了如下三个选项,今天我们一起拿好小黑板,坐稳小板凳,分析一下三个编译选项的含义和正确使用场景。还是有陷阱的哦(#^.^#)关于 -v 选项-v lib_file :表明我们的设计RTL代码里用到了这个工艺库文件里面定义的源。无图无真相!...原创 2022-02-05 22:53:58 · 6357 阅读 · 0 评论 -
#UVM# 关于多次TB中 include “uvm_macros.svh“的验证篇
上一节课,我们对提出的疑问,虽然一定程度上在心里上说服了自己。但是觉得还不够事实强硬。今天,我们花些时间来通过例子,验证一下。个人觉得哈,其实VCS 编译和仿真工具,同其它编程语言一样,都需要经过编译,链接,执行等类似步骤。我们只要记住这一点,就会心里上不惧怕它是个多么复杂的工具。我还是拿之前的系列文章中的例子来展示。仿真环境目录结构如下:tb_top.sv:`timescale 1ns/1psimport uvm_pkg::*;`include "uvm_macros.svh"m.原创 2022-01-24 15:33:30 · 949 阅读 · 0 评论 -
#UVM# 关于多次TB中 include “uvm_macros.svh“的疑问篇
笔者,作为ASIC 验证人员,虽然工作年限不多,经历了3家公司的TB验证环境。一直悬在心里的一个疑问就是:为什么 在TB验证文件中,发现多次`include "uvm_macros.svh"该行代码?追查了一下uvm_pkg::* 这个package . 源代码如下:我们发现,uvm_pkg.sv中,已经包含了 如下行:`include "uvm_macros.svh"既然,uvm_pkg.sv中已经包含了 上面一行,为什么我们还要自己手动去添加呢?...转载 2022-01-23 22:24:29 · 2238 阅读 · 0 评论 -
#VCS# 关于加速仿真的考虑方向
一 一些建议(1)合理使用debug_access对simulation database的访问权限。并配合debug_region使用。(2)波形的dump对仿真速度影响很大,根据需求做一些限制: 2.1 Limit the scope (例如:$fsdbDumpvars("+IO_Only")只dump端口信号) 2.2 Limit the Time 2.3 Limit Dumping of Memories 2.4 Li...转载 2022-01-23 19:01:26 · 5002 阅读 · 0 评论 -
#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(1)掌握要点
对于编译选项+vcs+initreg+random 的,突发奇想的想测试一下,它到底是一个什么东西。主要是看到一篇介绍博客,里面牵涉到该选项,但是博主介绍的并不彻底,今天,利用周末的时间,做个小实验,研究一下到底怎么运作的。我们先给出一个最简单的例子:`timescale 1ns/1psimport uvm_pkg::*;module tb_top();reg clk,rst;initial beginclk = 0; forever #5 clk = ~ clk;end原创 2022-01-23 12:20:50 · 5125 阅读 · 1 评论 -
#VCS# 关于常用选项的汇总(字典版本)(转载)
(感谢大佬的奉献!!!)目录ABCDEFGHIJLMNOPQRSTUVWY本文中所有命令基于VCS2014版编译时候的命令(按字母排序)A-ams:允许在VCS两步模式下使用Verilog-AMS代码。-ams_discipline <discipline_name>:在VCS两步模式下,指定VerilogAMS中的默认离散规则。-ams_iereport:在VCS 两步模式转载 2022-01-23 09:41:43 · 4242 阅读 · 1 评论 -
#VCS# 关于Verdi KDB 数据库
verdi加载的是Knowledge Database (KDB),这是一个 Elaboration Database elabDB。建议通过 vcs -kdb -lca 生成kdb.elab++,位于simv.daidir目录下。-lca Limited Customer Availability features are features available with the select functionality. These features will be ready for a gener翻译 2022-01-23 09:20:53 · 9242 阅读 · 0 评论 -
#VCS# 关于VCS 仿真内部运转
一 VCS 三步法三步法用于仿真混合语言,比如VHDL和Verilog。【Analysis】Analysis阶段vcs会Parse代码,检测是否有Syntax Error,然后将中间文件保存到指定库worklib目录下,供elaboration使用。(这里的库存放的是中间文件,上面提及的库是source code源代码,含义略有不同,但是内容一样。)vhdlan用于VHDL files,vlogan用于Verilog files。-work指定库,一般不需要指定,除非有需求。注意文件的摆放顺.转载 2022-01-23 09:14:56 · 3205 阅读 · 0 评论 -
#VCS# 《VCS、VCS-MX》编译和仿真工具
目录一 概述 VCS/VCS-MX二 VCS 的设置三 VCS 帮助文档四 利用SolvNet一 概述 VCS/VCS-MXVCS是Verilog Compiled Simulator的缩写。VCS MX®是一个编译型的代码仿真器。它使你能够分析,编译和仿真Verilog,VHDL,混合HDL,SystemVerilog,OpenVera和SystemC描述的设计。 它还为您提供了一系列仿真和调试功能,以验证您的设计。 这些功能提供了源码调试和仿真结果查看功能。v...转载 2022-01-23 08:35:08 · 3359 阅读 · 0 评论 -
#VCS#关于 <-debug*> 和 <-debug_access*> 切记晕头转向
为了仿真性能的提高,我们可以在编译时使用-debug_access+选项,来更好地控制仿真中调试的功能。与-debug_pp选项相比,-debug_access选项允许存储VPD和FSDB文件以进行后处理调试,并减少不必要的调试选项。可以使用-debug_access+指定其他选项,以有选择地启用所需的调试功能。 只启用所需的调试功能,即可优化仿真性能。语法: debug_access(+<option>)*-debug_access支持的选项:选项 描述 r The -d原创 2022-01-22 19:44:20 · 5047 阅读 · 0 评论 -
#VCS#《VCS 编译选项》说明
VCS 普遍被业界所使用,很多公司都对该EDA软件进行各自的封装设计和验证人员只要遵从公司的特定用法,便能很好的达到自己的设计和验证需求。本文对常见的“VCS编译选项”进行总结说明,欢迎大家踊跃批评指正!!!《VCS 编译选项》说明原创 2022-01-20 13:46:35 · 2050 阅读 · 0 评论 -
#VCS#《VCS 运行选项》说明
VCS 普遍被业界所使用,很多公司都对该EDA软件进行各自的封装设计和验证人员只要遵从公司的特定用法,便能很好的达到自己的设计和验证需求。本文对常见的VCS编译选型进行总结。 《VCS 编译选项》说明原创 2022-01-20 10:10:29 · 785 阅读 · 0 评论 -
#VCS# 关于fsdb波形加载的几个系统控制函数
1. $fsdbDumpfile 函数语法解析:$fsdbDumpfile(fsdb_name[,limit_size])含义:指定波形文件名,第二个参数可选择用来限制波形的大小(MB)。例如:$fsdbDumpfile(“tb_top.fsdb”,10240);其中文件名可能被$fsdbDumpvars覆盖。2. $fsdbDumpvars 函数语法解析:$fsdbDumpvars([depth, instance][, “option”])含义:..转载 2022-01-13 15:36:21 · 4641 阅读 · 0 评论 -
[Synopsys][vcs工具] vcs_xprop 学习
参考原始数据来源 synopsys 官方地址VCS Xprop1. 目的:提高 X 相关仿真和调试的 效率Verilog 和 VHDL 常用于数字设计建模。设计人员使用 RTL 构造描述硬件行为。然而,某些 RTL 仿真语义不足以准确地为硬件行为建模。因此,相比实际硬件行为,仿真结果要么太过乐观,要么太过悲观。因为这些语义限制,Verilog 和 VHDL RTL 仿真器会忽略掉控制信号上的X不定态,在输出上会分配一个固定的数值。这样造成的结果就是,由于缺少X的传播, RTL 仿真器往往无法检.原创 2021-04-14 19:30:24 · 976 阅读 · 0 评论