verdi 订阅
居塞比·威尔第 (Giuseppe Verdi,1813-1901),意大利伟大的歌剧作曲家。曾投考米兰音乐院,未被录取,后随拉维尼亚学习音乐。 展开全文
居塞比·威尔第 (Giuseppe Verdi,1813-1901),意大利伟大的歌剧作曲家。曾投考米兰音乐院,未被录取,后随拉维尼亚学习音乐。
信息
逝世日期
1901年
职    业
歌剧作曲家
国    籍
意大利
中文名
居塞比·威尔第
外文名
Giuseppe Verdi
出生日期
1813年
VERDI简介
1842年,因歌剧《那布科》的成功,一跃而成意大利第一流作曲家。当时意大利正处于摆脱奥地利统治的革命浪潮之中,他以自己的歌剧作品《伦巴底人》、《厄尔南尼》、《阿尔济拉》、《列尼亚诺战役》等以及革命歌曲等鼓舞人民起来斗争,有“意大利革命的音乐大师”之称。五十年代是他创作的高峰时期,写了《弄臣》、《游吟诗人》’《茶花女》、《假面舞会》等七部歌剧,奠定了歌剧大师的地位。后应埃及总督之请,为苏伊士运河通航典礼创作了《阿伊达》。晚年又根据莎士比亚的剧本创作了《奥赛罗》及《法尔斯塔夫》。一生创作了26部歌剧,善用意大利民间音调,管弦乐的效果也很丰富,尤其能绘声绘色地刻划剧中人的欲望、性格、内心世界,因之具有强烈的感人力量,使他成为世界上最受欢迎的歌剧作曲家之一。
收起全文
精华内容
下载资源
问答
  • Verdi波形变颜色.pdf

    2021-01-05 21:09:43
    Verdi波形变颜色.pdf
  • uvm+vcs+verdi基本平台搭建,也许平台不是很难,但是网上没有 UVM 在 VCS 中的详细教程,但是对于初学者就是一道屏障,我探索了几天,下文将一步一步的举例子说明 UVM+VCS+Verdi 的 liunx 平台搭建过程
  • vcs+verdi 遇到的问题

    2020-08-04 02:52:40
    本文介绍verdi软件在升级之后遇到的问题及对应的解决办法。
  • Verdi培训整理笔记.rar

    2020-04-04 08:00:52
    技术背景 建立环境 理解FSDB Dumping(存储)任务和重用性 输入设计 在源代码界面调试 在波形界面调试 在原理图界面调试 在FSM界面调试 在时序界面调试 附录:常用参数 ...送给有需要的朋友
  • 分布式共识协议的实现,已使用Verdi框架在Coq中进行了验证。 要求 定义和证明: (8.7或更高版本) 可执行的vard键值存储: (4.02.3或更高版本) 客户为vard : vard集成测试: 单位未经验证测试vard代码: ...
  • 该脚本用于Verdi自动查看信号波形,只需要在一个文本文件中简单写入需要查看的信号名称,执行脚本文件,产生一个Verdi内部命令文件,在命令行运行即可自动打开Verdi软件显示波形,波形窗口中的信号会按照模块名重新...
  • https://blog.csdn.net/howard789/article/details/116928636 博客
  • 从零开始VCS+Verdi 安装过程-附件资源
  • ubuntu 19 安装vcs+verdi教程-附件资源
  • verdi

    2020-06-09 18:36:30
    Verdi使用技巧——非连续有效信号量测方法 IC君 公众号 icstudy 数模混合设计工程师 10 人赞同了该文章 IC君的第42篇原创文章 (欢迎关注公众号 icstudy ,顺便在微信文章中点点广告) 上一篇文章IC君跟大家...

    首发于跟IC君一起学习集成电路

    写文章

    Verdi使用技巧——非连续有效信号量测方法

    Verdi使用技巧——非连续有效信号量测方法

    IC君

    IC君

    公众号 icstudy 数模混合设计工程师

    10 人赞同了该文章

    IC君的第42篇原创文章 (欢迎关注公众号 icstudy ,顺便在微信文章中点点广告)

    上一篇文章IC君跟大家分享了Verdi使用技巧——连续有效信号量测方法有不少网友在文章后留言或者微信给我留言,提供了一些其它方法。不得不说广大人民群众的智慧才是无穷无尽的,大家一起交流才能取得更大的进步!

    首先补充一下其他网友给我提供的测量连续有效信号的一些方法。

    网格法:

    点击菜单里面的view选项,选择Grid Options,如下图所示:

    选中选项Grid on 以及选项 Grid Counter with Start Number,如下图所示,点击Apply或者OK之后,就可以看到波形里面出现了网格,最下面有数字出现。这种方法还有一个好处是鼠标左键点到CLK信号的任意位置,计数都是从新的地方开始,具有很强的灵活性。

    自动添加计数器:

    右击CLK信号,选择Add Counter Signal by,选择上升沿、下降沿、任意沿中的一个,

    就会自动产生一个16进制的计数信号,不过它的计数起点是从CLK的0时刻开始,不能选择任意时刻,所以缺乏灵活性。

    这两种方法更推荐第一种网格法,看起来很强大,大家可以继续探索探索。

    但是实际debug过程中,更常遇到的场景是非连续有效的信号,如下图所示:CLK并不是在每个时刻都是有效的,这时我们又该如何比较快速准确的获知某个时间段内有效信号(CLK)个数呢?

    跟获取连续有效信号个数一样,如果某个时间段内有效信号个数较少(比如少于10个),直接手动数就可以了。当有效信号toggle次数比较多时,肉眼无法快速看出数量的时候,我们可以利用Verdi nWave里面的Logical operation 和Signal Event report 这两个功能来实现。

     

    对于非连续有效数据传输,通常会有一个信号来标志哪笔数据是有效的,如上图中的valid_in信号为1时表示data_in数据有效。利用这个标志信号跟时钟进行“与”操作,就得到一个新的时钟。这个新的时钟只有在数据有效时才有,在数据无效时被遮掉了。再通过Signal Event report获知指定时间内新的时钟个数,就可以知道有效数据的个数了。

     

    具体操作步骤如下:

    1.鼠标选中时钟信号clk和数据有效标志信号valid_in;

    2.点开nWave 菜单里面的Signal,再选择下拉菜单里的Logical Operation,如下图:

    3.在弹出的对话框里面,如下图所示,确认Expression 里的信号操作是”&”;把Name 改成valid_in_clk;然后点击Create/Modify按钮;

    再回来看波形,如下图所示,就会发现多了一个信号valid_in_clk,这个信号就是我们需要的新时钟信号。

    4.接下来就是Signal Event Report闪亮登场了。选中valid_in_clk, 然后在View下拉菜单里面选Signal Event Report。如下图所示,在弹出的对话框里,找到Falling#这一列,里面列的数字16就是我们指定的时间段内有效的数据个数了。

    如果还是半信半疑的同学,可以手动数一数,看看Logical Operation加Signal Event Report这套组合拳的结果是否正确,哈哈~

     

    用Logical Operation和Signal Event Report来量测非连续有效信号的方法就介绍到这里了,大家都学会了吗?

     

    这篇文章还是抛砖引玉,如果大家有好的方法分享,可以留言一起探讨学习。

     

    编辑于 2019-05-18

    芯片(集成电路)

    芯片设计

    数字集成电路

    ​赞同 10​​添加评论

    ​分享

    ​收藏

    文章被以下专栏收录

    跟IC君一起学习集成电路

     

    跟IC君一起学习集成电路

    记录一个或者一群集成电路IC工程师的成长轨迹,分享IC设计和验证的技术,包括数字、FPGA、模拟、数模混合、版图等设计及验证的方方面面,或者其它感兴趣的内容。希望大家在技术的路上不断成长!

    进入专栏

    推荐阅读

    Verdi使用技巧——连续有效信号量测方法

    Verdi使用技巧——连续有效信号量测方法

    IC君发表于跟IC君一...

    芯片设计进阶之路——跨时钟信号处理方法

    芯片设计进阶之路——跨时钟信号处理方法

    烓围玮未发表于芯片设计进...

    简单优雅的总线协议——I2C

    简单优雅的总线协议——I2C

    IC君发表于跟IC君一...

    数字IC笔试题(9) ——汇顶设计验证2019(续)

    如下图所示的一个LFSR结构,初值如图所示,在4个时钟周期之后,寄存器中的值从左到右的16进制表示为 变化前:X[16]、X[15]、X[14] 、X[13] 、X[12]、X[11] 、X[10]、X[9] 、X[8]、X[7]、X[6…

    wonde...发表于数字芯片实...

    还没有评论

    评论由作者筛选后显示

     

     

    发布

     

     

    展开全文
  • Verdi User Guide and Tutorial.pdf April 1, 2009 350页,全英文高清晰
  • 从零开始VCS+Verdi 安装过程-CentOS7-附件资源
  • 该方法可以解决verdi中无法跟踪vhdl和verilog混合信号驱动的问题。
  • vcs和verdi联合仿真(初学者可以用来熟悉脚本写法),有一些脚本教程
  • Verdi教程

    2021-09-02 15:07:17
    VerdiTut
  • VERDI-开源

    2021-04-27 23:11:01
    VERDI是一种灵活,高效且基于Java的模块化可视化软件工具,用于可视化多维4维网格化环境数据集,例如空气质量模型输出的数据集。
  • Verdi_advance

    2020-12-24 17:45:52
    verdi advance用法
  • ubuntu18安装VCS、verdi、dve软件亲测有成功运行截图,本人总结网上各自文章,并修改其中的错误,可以成功运行,有成功运行的截图!
  • VCS+Verdi联合仿真教程

    2021-11-14 16:19:07
    最近由于在一家FPGA公司实习,公司的FPGA仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,也因此真切地感受到,与在学校仅仅使用vivado软件跑整个流程相比,真的是小巫见大巫。 因此便在...

    最近由于在一家FPGA公司实习,公司的FPGA仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,也因此真切地感受到,与在学校仅仅使用vivado软件跑整个流程相比,真的是小巫见大巫。

    因此便在自己电脑的虚拟机中试着建立VCS+Verdi的仿真环境,写下这篇文章记录自己的使用过程。

    参考文章: Linux下VCS与Verdi联合仿真简易教程及例子示范

    文章内容主要分两部分:

    1. VCS、Verdi介绍
    2. Linux下VCS+Verdi仿真demo演示

    1. VCS、Verdi介绍

    VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。  VCS结合了节拍式算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到Sign-Off等各个阶段。VCS已经将CoverMeter中所有的覆盖率测试功能集成,并提供VeraLite、CycleC等智能验证方法。VCS和Scirocco也支持混合语言仿真。VCS和Scirocco都集成了Virsim图形用户界面,它提供了对模拟结果的交互和后处理分析。

    Verdi最初是由Novas Softwave公司设计的,后属于了SpringSoft公司,最终SpringSoft被Synopsys公司收购,Verdi正式属于Synopsys。可以调用第三方工具进行编译仿真产生波形文件并可以查看、可查看源代码对应的电路图,最强大之处在于可以在源代码、原理图、波形图和状态图之间进行即时跟踪,协助工程师debug。

    相信大家都用过Vivado,Quartus等,这里以Vivado为例,他包含了RTL,编译,仿真,综合,看波形,烧板子等,集大成为一体。相比之下,VCS和Verdi就很专一了,VCS专注于编译及仿真,Verdi专注于看波形,仅此而已,安分守己。那Vivado这种功能这么全,工业界直接全用一个Vivado走天下不就行了,为何要大费周折用VCS和Verdi呢?

    按我公司老板的话来讲,Vivado其实只能算个写Verilog的(而且还很慢),只不过集成了综合,仿真,看波形等功能,如果要真正做Asic设计,还是得在各个步骤用上用更加专业的软件,用那些在领域中做到顶峰的EDA,对,那就是Synopsys的VCS,Verdi这种(毕竟Vivado的优化大多也只针对于自家FPGA)。首先VCS编译仿真速度极快,效率极高,为大家节约时间,Verdi看波形也十分方便debug,它支持信号追溯,无缝增加信号波形等功能。虽然上手比Vivado难,但学习之后能感受到其美丽之处的。

    2. Linux下VCS+Verdi仿真demo演示 

    环境:Linux

    编写Verilog:gvim

    编译仿真:VCS

    波形查看:Verdi

    1. 首先得在Linux下配置好VCS和Verdi的环境,这个方面我就不再这里赘述了,默认大家VCS和Verdi环境都已经配好,你可以在命令行输下vcs和verdi看有没有信息,有信息的话就说明已经安装。
    • 终端输入vcs显示如下:

    •  终端输入verdi,会直接打开Verdi的GUI界面

    要想在Linux下使用VCS进行编译仿真并使用Verdi观察波形,需要有4个文件:RTL设计文件,也就是利用Verilog设计的.v文件,或者利用Systemverilog设计的.sv文件;testbench文件,产生激励信号提供给设计模块,用来对设计模块的功能进行验证,也是.v文件;filelist.f文件,用来列写出testbench文件和RTL文件,这样比较方便,不用对所有的文件一个一个的在shell中敲出来,它可以自己根据列表文件自己去找;makefile文件,通过makefile脚本的编写,可以极大的节省效率,编译仿真VCS时可以不用一次又一次的敲命令,直接通过Linux内置的make命令来执行编译控制命令。

          2.新建一个src、tb和sim的文件夹,并把脉冲计数器的.v文件和testbench的.v文件分别放在src和tb文件夹

    mkdir pulse_counter
    cd pulse_counter
    mkdir src tb sim
    
    
    

          3. 分别在对应文件夹建立.v文件

    gvim /src/pulse_counter.v
    `timescale 1ns/1ps
    module pulse_counter(
    	input i_clk,
    	input i_rst_n,
    	input i_pulse,
    	input i_en,
    	output reg[15:0] o_pulse_cnt
        );
    
    reg[1:0] r_pulse;
    wire w_rise_edge;
    
    //
    //脉冲边沿检测逻辑
    
    always @(posedge i_clk)	
    	if(!i_rst_n) r_pulse <= 2'b00;
    	else r_pulse <= {r_pulse[0],i_pulse};
    
    assign w_rise_edge = r_pulse[0] & ~r_pulse[1];	
    
    //
    //脉冲计数逻辑
    
    always @(posedge i_clk)	
    	if(i_en) begin
    		if(w_rise_edge) o_pulse_cnt <= o_pulse_cnt+1;
    		else /*o_pulse_cnt <= o_pulse_cnt*/;
    	end
    	else o_pulse_cnt <= 'b0;
    
    
    endmodule
    
    
    gvim /tb/tb_pulse_counter.v
    `timescale 1ns/1ps
    
    module tb_pulse_counter();
    	
    
    //参数定义
    
    `define CLK_PERIORD		10		//时钟周期设置为10ns(100MHz)	
    
    
    //接口申明
    	
    reg clk;
    reg rst_n;
    reg i_pulse;
    reg i_en;
    wire[15:0] o_pulse_cnt;
    
    	
    //对被测试的设计进行例化
    	
    pulse_counter		uut_pulse_countern(
    	.i_clk(clk),
    	.i_rst_n(rst_n),
    	.i_pulse(i_pulse),
    	.i_en(i_en),
    	.o_pulse_cnt(o_pulse_cnt)
        );	
    	
    
    //复位和时钟产生
    
    	//时钟和复位初始化、复位产生
    initial begin
    	clk <= 0;
    	rst_n <= 0;
    	#1000;
    	rst_n <= 1;
    end
    	
    	//时钟产生
    always #(`CLK_PERIORD/2) clk = ~clk;	
    
    
    //测试激励产生
    integer i;
    
    initial begin
    	i_pulse <= 1'b0;
    	i_en <= 1'b0;
    	@(posedge rst_n);	//等待复位完成
    	
    	@(posedge clk);
    	repeat(10) begin
    		@(posedge clk);
    	end
    	#4;
    	
    	i_en <= 1'b1;
    	for(i=0; i<50; i=i+1) begin
    		#500;
    		i_pulse <= 1'b1;
    		#300;
    		i_pulse <= 1'b0;
    	end
    	i_en <= 1'b0;	
    	#10_000;
    	
    	i_en <= 1'b1;
    	for(i=0; i<69; i=i+1) begin
    		#500;
    		i_pulse <= 1'b1;
    		#300;
    		i_pulse <= 1'b0;
    	end
    	i_en <= 1'b0;	
    	#10_000;	
    	
    	i_en <= 1'b0;
    	for(i=0; i<15; i=i+1) begin
    		#500;
    		i_pulse <= 1'b1;
    		#300;
    		i_pulse <= 1'b0;
    	end
    	i_en <= 1'b0;	
    	#10_000;
    
    	
    	$stop;
    end
    
    //dump fsdb 
    initial begin 
        $fsdbDumpfile("fifo.fsdb");
        $fsdbDumpvars(0);
    end 
    
    endmodule
    
    

          4. 编写filelist.f

    目录切换到sim目录,并新建一个filelist,f文件

    cd sim
    gvim filelist.f

    在filelist.f文件中输入如下内容

    ../src/pulse_counter.v
    ../tb/tb_pulse_counter.v

          5.编写makefile文件

    新建一个makefile文件

    gvim makefile

    在makefile文件中输入如下内容

    #************parameter input*************
    #※prepare the source list file  and then make add the soucefile name 
    #for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list
    src_list =  filelist
    simv_name = simv
    vpdpluse_name = vcdpluse
    cov_file_name = coverage
    vdb_name = $(simv_name)
    #************constant command************
    #compile
    NOR_VCS = vcs -full64 -sverilog +v2k -timescale=1ns/1ns            \
          -debug_all                               \
          +notimingcheck                                   \
          +nospecify                                       \
          +vcs+flush+all                                   \
          -o $(simv_name)   \
          -l compile.log	\
    	  -f $(src_list).f 
    
    #coverage compile switch 
    COV_SW = -cm line+cond+fsm+branch+tgl
    
    #verdi dump wave compile option 
    VERDI_SW = -P /tools/synopsys/verdi/Verdi3_L-2016.06-1/share/PLI/VCS/linux64/novas.tab \
    	/tools/synopsys/verdi/Verdi3_L-2016.06-1/share/PLI/VCS/linux64/pli.a
    
    #run option
    RUN_GUI = -R -gui -l run.log
    RUN_VPD = -R +vpdfile+$(vpdpluse_name).vpd -l run.log
    RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./$(cov_file_name) -l run.log
    RUN_VER = -R +fsdb+autoflush -l run.log
    #************command************
    #normally sim
    norsim: 
    	$(NOR_VCS) $(RUN_GUI) 
    
    #post-process
    postsim:
    	$(NOR_VCS)  $(RUN_VPD) 
    	dve -vpd $(vpdpluse_name).vpd
    
    #coverage
    covsim:
    	$(NOR_VCS) $(COV_SW) $(RUN_COV) 
    	dve -covdir $(cov_file_name).vdb
    
    #verdi
    #versim:
    run_vcs:
    	$(NOR_VCS) $(VERDI_SW) $(RUN_VER)
    
    vd:
    	verdi -sv -f $(src_list).f -ssf *.fsdb -nologo
    
    
    #rm 
    clr:
    	rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf

          6. 调用vcs仿真并调用Verdi查看波形

    万事俱备,现在开始调用两个文件并进行仿真,在终端中输入

    make run_vcs

    终端显示下图,表示VCS已经仿真完成,并在文件夹中建立了fsdb文件

    之后输入如下命令来打开Verdi查看波形

    make vd

    鼠标点击图中位置,并按住滚轮拖动到如图箭头所指位置

     接着就会出现对应的波形

     接下来便可以利用Verdi快乐的查看波形并进行debug啦!

     至此,我们利用VCS+Verdi进行编译仿真并查看波形就大功告成,开心!

    总结

    十分感谢能够看到这里,这样整个教程就已经告一段落,教程中对于makefile文件的编写,以及vcs和Verdi的一些常用指令并没有详细的介绍,如果大家想深入了解具体的内容,欢迎移步到synopsys的官方指导文档,同时如果想了解Verdi的详细使用方法,这里也推荐一个我看后觉得很有收获的一个up主Verdi基础使用自学记录_哔哩哔哩_bilibili,有兴趣的朋友可以看看~

    展开全文
  • Verdi 知识体系

    千次阅读 2019-10-03 21:02:47
    1. verdi 加强了active anotation, active trace和trace this value的能力,并且引入了Temperal flow view。在trace X的时侯面对很多选项,推举的快速定位的方法是: 1) 找出来自于信号源的明显的错误,譬如...

    1. verdi 加强了active anotation, active trace和trace this value的能力,并且引入了Temperal flow view。在trace X的时侯面对很多选项,推举的快速定位的方法是:

       1) 找出来自于信号源的明显的错误,譬如(uninitialize,setup, hold time voilation, no drivers)

             •Stop at black box output signal (ON)
             • Stop at fanin that is X but no transition in its last cycle (OFF)
             • Snap to value change and continue (ON)  -----------找出第一个X

             // 尽量放开了跑,遇到黑盒子才停止。

     

       2) 准确找出active X源

             • Stop at black box output signal (ON)
             • Stop at fanin that is X but no transition in its last cycle (ON)  -----找出从此向前来源是固定的X(activeX)

             • Snap to value change and continue (OFF)

     

       3) 设置number of cause

             • Use the default setting : Stop after finding 1 cause

              • 如果遇到很多类似的cause,那么设为trace all causes

     

    2. 当碰到ntrace和fsdb的hierarchy层次不一样时,不能联动。解决方案 set virtual top

        vritual top/map file:         CPU = system.i_cpu

     

     

    3. 在VMM中引入fsdbLog

    [c-sharp] view plaincopyprint?

    1. `ifdef FSDB  
    2. class log2fsdb extends vmm_log_format;   
    3.     virtual function string format_msg(string name, string inst, string msg_typ, string severity, ref string lines[$]);   
    4.          string text = "";   
    5.          string stream = $psprintf("%s(%s)", name, inst);  
    6.          string label = $psprintf("%s[%s]", severity, msg_typ);   
    7.          foreach(lines[i]) text = {text, "/n", lines[i]};   
    8.          $fsdbLog(label, text, , stream );   
    9.          format_msg = super.format_msg(name, inst, msg_typ, severity, lines);   
    10.     endfunction  
    11. endclass  
    12. `endif  
    13. `ifdef FSDB   
    14.        if($test$plusargs("fsdb=")) begin   
    15.            log2fsdb l2f = new;   
    16.            this.log.set_format(l2f);   
    17.        end   
    18. `endif  

     

     

     

    4. 波形比较找出mismatch point, 然后在定位发生mismatch的原因

    如果是相同的design view,    Waveform comparison -> behavior trace for fsdb mismatch 

       ---》 适合RTL和RTL的比较,定位引起错误的源头

    如果是不同的design view,    Waveform comparison -> Trace this value in flow view for different design

     

    5. 利用siloti减少波形记录文件大小,进而加快仿真速度

    步骤如下:

        1. 生成主要信号的列表文件

          esa -bas tb_CPUsystem -f run.f -all_eslist fullchip.list

          //  -bas 指明了work scope,即一旦design 加载就立刻进行behavior analyse的范围

          //  -all_eslist 指明了生成 hierachy 和 plain list 两种形式的信号列表文件

     

         2. dump 主要信号的波形

          • $fsdbDumpfile("ess.fsdb");
          • $fsdbDumpvarsToFile("fullchip.list");

     

         3. 启动verdi,在必要时打开visibility的相关选项

             Tools -> Visibility -> Data Expansion -> Enable Data Expansion

     

    6. ntrace 可以吃进prime time 的STA report 文件并自动将其转为XML文件,用以形象的debug timing的关键路径为何出现问题

              File -> Import Path Data File -> Select the violate_path.rpt    

     

             • Show this path on nSchema
             • Show this path on File Viewer
             • D&D the 42.860 delay from File Viewer into nSchema
             • Debug the reason of this huge delay on schematic window
             • Tools-> New Schematic ->Connectivity

     

    7. 当gate level和rtl level 的波形不一致时可以采用“trace triggering path,based on transition,来找到由于时序问题产生错误的根源”

             steps:

             1. compare rtl and gate simulation mismatch,以gate wave form 为主导

             2. 在产生变化的地方(transition发生处),产生TFV

             3. trace triggering path 并设为stop at Register Boundary

             4. 找到源头后,ctrl+K把clock放入waveform中加以分析。

     

    8.  如何dump assertion的波形

     

     

    [cpp] view plaincopyprint?

    1. vcs +vpi /  
    2.     -sverilog /  
    3.     -Mupdat /  
    4.     -assert enable_diag /  
    5.     -assert vpiSeqBeginTime /  
    6.     -assert vpiSeqFail /  
    7.     +systemverilogext+.sv+.SV+ /  
    8.     -l vcs.log /  
    9.     -f run.f  
    10. +vpi 和 -sverilog是不能缺少的。 -assert enable_diag  指出可以进一步的通过runtime option来控制systemverilog assertion  
    11. -assert vpiSeqBeginTime 指出允许debussy显示assertion sequence开始的时间, -assert vpiSeqFail 指出允许debussy显示assertion fail时对应的simulation time。  
    12. ./simv +vcs+lic+wait -assert success -s -i ./sim_sva_fsdb.do -l ./simv.log   
    13. -assert success  指出不仅仅报告失败,还指出成功的次数。  
    14. //===========sim_sva_fsdb.do 内容如下==========   
    15. $fsdbDumpfile("sv.fsdb")  
    16. $fsdbDumpSVA  
    17. $fsdbDumpvars 0 system  
    18. tbreak #12500ns  
    19. continue  
    20. quit  
    21. //=============================================   
    22. 其实一般都是用最简单的方法,即在testbench中加入   
    23. initial  
    24.    begin  
    25.         $fsdbDumpfile("sv.fsdb");  
    26.         $fsdbDumpSVA;  
    27.         $fsdbDumpvars(0, system, "+all");  
    28.         #12500 $finish;   
    29.    end  
    30. 然后直接用simv -assert success -l ./simv.log 就行了。  

     

     

     

    verdi的assertion evaluation组件还能自动推算出修改或新增的assertion的行为,主要是在property tools界面下启动evaluator,然后修改store to all。就能自动推算出新的assertion,并生成新的波形文件。

     

    9. Import SVTB with VMM library

        1) 用户用自己的VMM library

              verdi –sv –f run.f +incdir+your_vcs_vmm_library_path

        2) 用户没有VMM library

              verdi –sv –f run.f -ntb_opts vmm

     

    10. Import SVTB with OVM library

            1.) 在源代码中加入 `include "ovm.svh"

            2.) verdi -sv -f run.f +incdir+${IUS81_HOME}/tools/ovm/src +define+INCA -ignorekwd_config

     

     

    11. 现在很多verilog 的filelist 文件中用如下形式来指定文件所在的目录就行了,而不必指定具体文件

                   

    [c-sharp] view plaincopyprint?

    1. ./testbench/ppc460_PLB4/p464s_test_top_tb.v  
    2. ../hdl/p460s_defines.v  
    3. +incdir+$SYNOPSYS/dw/sim_ver  
    4. +incdir+./vera/ver_shell/ppc460_PLB4  
    5. +incdir+./testbench/ppc460_PLB4  
    6. +incdir+./testbench/IBM_models/DCR3X  
    7. -y ../hdl  
    8. -y ../hdl/CPU  
    9. -y ../hdl/SYNC4  
    10. -y ../hdl/behav_models/custom  
    11. -y ../hdl/behav_models/rams  
    12. -y $SYNOPSYS/dw/sim_ver  
    13. -y ./testbench/ppc460_PLB4  
    14. -y ./vera/ver_shell/ppc460_PLB4  
    15. -y ./testbench/IBM_models/DCR3X  
    16. +libext+.v  
    17. +define+VCS_DUMPON=1  

     

     

    上面通过-y 指定library目录, +libext+.v指定library后缀名。 有时候还用-v 来指定library文件。但是这样直接被verdi吃进去以后不能显示hierarchy和文件。verdi提供了解决的办法:   -ssy  (用来取消-y指定的library为library cell)     -ssv (用来取消-v 指定的library为library cell)

                   

    [c-sharp] view plaincopyprint?

    1. ./testbench/ppc460_PLB4/p464s_test_top_tb.v  
    2. ../hdl/p460s_defines.v  
    3. -ssy  
    4. -ssv  
    5. +incdir+$SYNOPSYS/dw/sim_ver  
    6. +incdir+./vera/ver_shell/ppc460_PLB4  
    7. +incdir+./testbench/ppc460_PLB4  
    8. +incdir+./testbench/IBM_models/DCR3X  
    9. -y ../hdl  
    10. -y ../hdl/CPU  
    11. -y ../hdl/SYNC4  
    12. -y ../hdl/behav_models/custom  
    13. -y ../hdl/behav_models/rams  
    14. -y $SYNOPSYS/dw/sim_ver  
    15. -y ./testbench/ppc460_PLB4  
    16. -y ./vera/ver_shell/ppc460_PLB4  
    17. -y ./testbench/IBM_models/DCR3X  
    18. +libext+.v  
    19. +define+VCS_DUMPON=1  

     

     

     

     

    12.  新的fsdb dumper 的应用

    Verdi 從2010.04之後提供全新架構的FSDB PLI。新的FSDB PLI針對System Verilog有更完整的support,有比較好的performance。另外也支援同時dump不同的fsdb檔案。

     

    1. Synopsys VCS simulator link新dumper的方式:  
    2. Set share library path  
    3. setenv LD_LIBRARY_PATH ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}  
    4. Compile design and run simulation  
    5. vcs –f run.f -debug_pp +vcsd +vpi -P ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}/novas.tab /  
    6. ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}/pli.a  

     

     

    現在已經可以在new dumper上,以parallel dumping的方式來加快dump fsdb的速度。使用方法就是在執行simulation的指令上,加上+fsdb+parallel的參數。例如:

    For VCS==> simv <+original_options> +fsdb+parallel
    For IUS==> irun <+original_options> +fsdb+parallel

     

    什麼是「-debug_pp」?

    1. VCS的debug options有三個levels:-debug_all、-debug、-debug_pp。

    2. -debug_pp是三種level當中,performance最好的。

    3. -debug_pp是+memcbk, +vcsd, +vpi, -ucli 這些options的集合。

    展开全文
  • 四、VCS+Verdi的使用   为了实现VCS仿真和Verdi查看波形的效果,需要在VCS仿真时产生Verdi所需的fsdb波形文件,dump fsdb文件,再使用Verdi打开fsdb文件。下面解析步骤: 1.编译   这里可以有两种方式来生成...


    注:主要侧重于Makefile调用VCS和Verdi联合仿真。


    一、快速入门

      Makefile带来的好处就是自动化编译和仿真,只需要一个 make 命令。make是Linux下的二进制程序,在shell命令行键入make命令时,将自动寻找名称为“Makefile”的文件作为编译文件。

    • 格式:make [option] [target] …

    二、Makefile的语法

    1.语法格式

    形式一:
    target : prerequisites
    		command
    形式二:
    target : prerequisites;command
    		command
    

    其中:

    • prerequisites是目标所依赖的文件
    • command是命令行。命令行如果与prerequisites不在一行,那么命令行必须以Tab键开头。如果命令过长,可以使用反斜杠“\”作为换行符。

    例如:

    clean: 
    		rm -f  tb.sv
    

    2.命令执行

    (1)make会按顺序一条一条的执行命令。每条命令必须以Tab键开头。

    (2)而当一个target下有多条命令时,就会有两种可能:

    • 当希望后一条命令是接在上一条命令执行之后,再执行。此时需要用分号 ; 连接两个命令,这与管道 | 类似。
    • 当希望两条指令并行执行,直接换行即可。

    例如,下面两次pwd时显示的文件路径是否相同?

    exe1:
    	cd /home/verifier/
    	pwd
    
    exe2:
    	cd /home/verifer/; pwd
    
    // exe1中pwd显示的为 根目录 ~
    // exe1中pwd显示的为 /home/verifer/
    

    (3)如果命令执行到当期行,发现命令出错了(如cd命令时不存在目标目录)。假如我们不希望整个make动作因为命令错误而停止,可以再命令行TAB键之后加一个减号“-”,表示不管命令是否出错,都认为是成功的。例如下面:

    exe2:
    	- cd /home/verifer/; pwd
    

    3.变量

    Makefile中变量的使用:

    • 变量的命名是可以包含字符、数字、下划线,在变量声明时需要赋初值;
    • 在使用变量时,可以使用 $ ( 变量 )$ {变量} 的方式。如果真的需要使用 "$"符号时,可以使用 $ $的方式。
    • 操作符“:=”表示,只能使用前面定义好的变量,不能使用后面的变量。
    • 操作符“?=”表示如果变量没有被定义过,那么变量的值是操作符右边的。如SEED ?= 300。

    例如:

    PATH = ~/project/vip/
    sim :
    	cd ${PATH}
    

    三、VCS仿真

      VCS仿真分为两个步骤:编译 + 仿真。VCS在编译 Verilog 文件后,默认会产生一个名为 simv 的二进制可执行文件,然后执行这个simv文件就可以进行仿真。如下例子:

    [verifier]$ vcs +v2k top_tb.v -debug_all
    ...
    [verifier]$ ./simv -gui &  
    

    解释上面两行指令:

    1. 用VCS编译 top_tb.v 的 Verilog 文件,+v2k 是支持 Verilog 2001 语法,-debug_all 选项是为了 debug 程序。
    2. 编译后会产生一个可执行simv文件,/simv是执行当前目录的simv文件。-gui是打开图形界面。&是表示在后台运行。

    1.VCS常用命令

    编译时常用的option,如下:

    命令描述备注
    vcs -help打开vcs帮助文档可以重定向生成一个文件,例如采用 vcs -help > vcs_help.txt
    -sverilog支持systeverilog语法
    +v2k支持 Verilog 2001 语法
    -l 文件名设置生成的log文件的文件名l是小写的L
    -R编译完自动地去仿真,不需要手动执行simv文件
    -Ppli.tab定义PLI的列表(表)文件配置Verdi时需要
    -gui <=dve 或 verdi>打开仿真图形化界面
    –fsdb调用Verdi PLI 库,支持fsdb 波形
    -ucli在运行时指定UCLI模式,即命令行模式
    -Mupdate如果修改了文件,VCS可以只编译修改了的文件,节省编译时间
    -v 文件名告诉VCS是哪个定义好的Verilog工艺库
    -y 路径告诉VCS这个Verilog工艺库上哪去找
    +libext+< extension >与-y配合,用来指定查找的文件的后缀例如查找.v文件,可以用+libext+.v
    +incdir+< dir >告诉VCS去哪找 `include的文件
    -f 文件列表指定一个包含所有文件路径的filelist文件(.flist)
    -o 文件名默认编译后产生一个simv文件,-o可以指明这个文件的文件名
    +define+名字 = 值定义宏
    -timescale = 时间单位/精度设置仿真的时间单位、精度;
    -debug对应TB中的$vcdpluson加载波形函数,使能DVE、Verdi 波形调试和UCLI命令行调试等
    -debug_all使能所有的debug调试功能
    -debug_pp使能debug调试功能,可以dump fsdb和vpd,使能DVE、VERDI波形调试和UCLI命令行调试
    -cm [option]覆盖率收集选项,option包括: line(行)、cond(条件)、fsm(状态机)、tgl(翻转)、branch(分支)、assert(断言)常用命令如: -cm line+cond+fsm+tgl
    -cm_dir < dir >指定覆盖率文件放置的路径

    仿真时常用的option,如下:

    命令描述备注
    -l 文件名输出log文件l是小写的L
    +notimingcheck关闭时序检查
    -vpd_file 文件名生成vpd文件vpd是VCS的产生的波形文件

    注,对几种波形文件介绍:

    • vpd是VCS的DVE支持的波形文件,可以在Verilog中用$vcdpluson产生。
    • VCD (Value Change Dump)是一个通用的波形格式。它主要包含了头信息,变量的预定义和变量值的变化信息,就相当于记录了整个仿真的信息。通过Verilog的系统函数$dumpfile 来生成波形,通过$dumpvars的参数来规定抽取仿真中某些特定模块和信号的数据。
    • fsdb(Fast Signal DataBase)是 Verdi 所支持的波形文件。相对于VCD波形文件,fsdb只对仿真过程中有用的信号进行存储,所占存储空间较小。fsdb是通过verilog的PLI接口来实现的,在Verilog中加入 $fsdbDumpfile 和 $fsdbDumpvars等函数。fsbd 的使用可以看:fsdbfsdb dump参数传递
    • shm 是Cadence公司 NC verilog 和Simvision支持的波形文件;WLF(Wave Log File) 是Mentor Graphics 公司Modelsim支持的波形文件。

    2.Makefile实现自动化仿真

      上面我们知道VCS仿真可以分为两步:编译+仿真。下面我们就实现一个最简单的Makefile脚本启动VCS仿真。

    comp:
    	vcs +v2k top_tb.v -debug_all -l comp.log
    sim:
    	./simv -l run.log -gui &  
    clean:
    	rm -r *.log *.vpd  *.vcd *.fsdb 
    

    根据上面的脚本,可以在Terminal中输入make comp 和 make sim 命令就可以直接启动仿真。

    四、VCS+Verdi的使用

      为了实现VCS仿真和Verdi查看波形的效果,需要在VCS仿真时产生Verdi所需的fsdb波形文件,dump fsdb文件,再使用Verdi打开fsdb文件。下面解析步骤:

    1.编译

      这里可以有两种方式来生成fsdb文件:可以参考fsdb dump。下面介绍其中一种,如下:首先在TB中添加Verilog的函数首先在VCS编译脚本上,需要用-P选项配置verdi,找到目录中对相应的 Synopsys/Verdi/ 的文件夹,指定需要加载的动态库(.so)、表格文件(.tab)和静态库(.a)。如下:

    NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/     # 这是我电脑上Verdi的目录
    NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \    # 这部分基本是固定的
    ${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a  \
    	
    vcomp:
    	vcs -full64-debug_pp -LDCLASS -rdynamic -P ${NOVAS_ARGS} \
    	-f complie.f \
    	-l compile.log
    

    解释一下上面的命令:

    • debug/debug_pp/debug_all ,使能ucli命令。
    • -LDFLAGS ,传递参数给VCS的linker,与后面的-rdynamic和-P配合使用
    • -rdynamic,指定需要加载的动态库
    • -P ${NOVAS_ARGS},指定需要加载的表格文件(.tab)和静态库(.a)

    2.仿真

    相应地仿真时的脚本文件,如下:

    sim:
    	./simv  \
    	-ucli -i dump_fsdb.tcl	\
    	+fsdb+autofulsh 	\
    	-l sim.log
    

    解释上面的命令:

    • simv 是 VCS编译Verilog后生成的二进制可执行文件,./simv执行这个文件,进行仿真;
    • -ucli 是启动UCLI命令行模式,-i 吃进去 tcl 脚本文件;
    • +fsdb+autofulsh,一边仿真,一边dump 波形;

    dump_fsdb.tcl的脚本如下:

    global env
    fsdbDumpfile "$env(file_name).fsdb"
    fsdbDumpvars 0  "top_tb"
    run
    

    解释上面的tcl脚本:

    • TCL脚本引用环境变量;
    • 设置波形文件名称,名称受 $env(file_name)控制;注:这个file_name 是从仿真的 Makefile文件中,通过 export file_name = top_tb
    • fsdbDumpvars(0) 表示会 dump 所有层次的信息;注:0代表dump所有层次,非0代表dump的最高层次;
    • 设置完dump 信息,启动仿真。此时仿真器受UCLI命令行控制;
    • 其他的有关fsdb生成时的函数调用可以看:fsdb

    3.Verdi 查看fsdb文件的命令

    verdi -f file.f -ssf *.fsdb & 
    

    解释上面的命令行中:

    • -f 代码的文件列表
    • -ssf 指定fsdb文件
    • & 表示后台运行

    4.Makefile启动VCS+Verdi的实例

    下面是一个简单的makefike脚本,如下:

    export  file_name = top_tb
    
    FILE_LIST = compile.f
    TB_DIR = 
    SIMV_FILE = simv
    LOG_DIR = ./log
    
    #----Coverage----
    CM_TYPE = line+cond+fsm+branch+tgl
    CM_DIR = ./coverage
    
    #----Verdi-----
    NOVAS_HOME = /share/eda/Synopsys/Verdi/L-2016.06/    
    NOVAS_ARGS = ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \  
    	${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a 			 \
    DUMP_COND = DUMP_FSDB 
    
    VCOMP = vcs -full64 -sverilog +v2k -debug_pp    \
    	-o ${FILE_LIST} 				\
    	-l ${LOG_DIR}/compile.log		\
    	-f ${FILE_LIST}					\
    	+incdir+${TB_DIR}				\
    
    CM = -cm ${CM_TYPE}					\
     	-cm_dir ${CM_DIR}				\
    
    VERDI =   -LDFLAGS -rdynamic -P ${NOVAS_ARGS} 
    
    
    #----------COMMAND-----------
    comp:
    	${VCOMP} ${CM}  ${VERDI}
    
    sim:
    
    
    verdi:	
    	verdi -nologo -sv -f ${FILE_LIST} -ssf *.fsdb +${DUMP_COND}
    	
    clean:
    	rm -rf *.csrc ./*.daidir ${SIMV_FILE } *simv* ucli* *.vpd *.fsdb *novas* *.log 
    

    tcl脚本,如下:

    展开全文
  • Verdi 基础教程

    千次阅读 2021-04-26 10:13:58
    Verdi基础
  • VERDI使用介绍

    热门讨论 2011-12-18 22:15:14
    NOVAS VERDI使用介绍PPT。DEBUSSY的升级版。
  • Verdi简介

    千次阅读 2020-11-02 15:38:37
    3.1.1 Verdi的历史 相信做IC验证的朋友或多或少都使用过VCS和Verdi这两个工具,这两个工具目前都属于synopsys公司,但是Verdi的来源可谓一路坎坷。 Verdi最开始是由novas公司设计的,在2008年,被台湾的EDA厂家...
  • Verdi 使用教程(持续更新中)

    千次阅读 2019-10-28 16:21:53
    本文链接:...转载请标明出处: 原文发布于:浅尝辄止,未尝不可的博客 ... Verdi 使用教程 ##在这篇文章基础上重新编写 (2019-03-24新增) nTrace main window 如下图片是nTrace窗...
  • Linux下VCS与Verdi联合仿真简易教程及例子示范

    万次阅读 多人点赞 2020-07-22 11:42:47
    VCS与Verdi联合仿真简易教程及例子示范 最近在公司实习,最近也恰好在学习Linux下的IC设计环境,涉及到了VCS与Verdi联合仿真等内容,也切身感觉到,和学校学习的内容是如此的不同,此篇便来讲下: VCS,Verdi是什么...
  • Verdi基础知识整理

    万次阅读 多人点赞 2018-07-08 18:11:25
    Verdi主要在以下方面使用 Verdi使用情形: IC验证工程师(Debug) IC设计工程师(Review) 学习目标主要以下三方面: 能够生成fsdb波形; 能够查看fsdb波形; 能够追踪RTL代码。 生成FSDB波形 三个变量 VERDI...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,820
精华内容 1,128
关键字:

verdi