微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > nc-verilog对FPGA进行时序仿真

nc-verilog对FPGA进行时序仿真

时间:10-02 整理:3721RD 点击:
我在看一些资料时讲,要进行后仿真的话,必须要添加sdf文件。但是quartus的handbook中讲在进行后仿真时只需要使用.vo文件以及.sdo文件就够了,其中.vo文件是设计的verilog仿真网表文件,.sdo文件标注.vo文件里发现的元素的延迟!那么对altera的FPGA进行仿真不需要.sdf文件吗?如果需要的话如何生成.sdf文件?

再追问一个问题,就是在使用nc-verilog进行仿真的时候,INCA_libs是干啥用的?里面的hdl.var有是干啥用的?还有cds.lib是干啥用的?

打开这两个文件就明白了
就是指定work library

我在阅读quartusii的handbook的时候,手册上讲,要想使用nc-verilog来对quartus的生成文件进行后仿需要加入.vo文件以及.sdo文件,还要修改hdi.var以及cds.lib,但是问了一下别人,说是不需要,只要将网标文件以及.sdf文件加入就行,这是怎么回事啊?

sdf文件时asic流程中的
你做的fpga流程



    那我在用nc-verilog对FPGA进行仿真的流程时,用的网表到底是哪一种?是vqm文件还是edif文件或者是手册上所说的.vo文件与.sdo文件?是否需要设置hdl.var与cds.lib文件?该怎样设置?我用的是单步模式!谢谢了!


用.vo文件的网表,拿sdo反标,其他什么INCA_libs不用管,加入FPGA的器件库就可以了,当然这个库是后仿的库。



   是不是把.sdo和.vo文件加入到verdi的RTL文件列表里就可以了?怎样才能将.sdo文件反表?


.vo要加入,.sdo要在test_bench里 用$sdf_annotate读进来,具体语法你可以搜索一下。



    谢谢你了,不过还有一个问题想再请教一下!就是ncverilog的参数:
    +cdslib+表示设定仿真库,而
+work 表示设定工作库
    这里的所谓仿真库和工作库分别指的是啥?有何区别?谢谢!


没有深入学习过,我的理解是+cdslib是定义cds.lib所在目录,假如不指定,这个cds.lib会存在于你当前工作目录下。而cds.lib文件里面定义了你的工作目录所在位置,当然你也可以用+work的方式人为指定。很抱歉,我从来没指定过,系统会在当前工作目录下产生一个INCA_libs的目录,里面就有cds.lib文件和worklib文件夹。

modelsim时序仿真时用到.vo和.sdo,这两个文件在quartus ii里面生成。时序仿真时需要指定仿真库。

在.vo文件里有读入.sdo文件的initial语句

用ncverilog这个Altera后仿我仿过.
话说这个不难.用ncverilog命令行,不需要去考虑+cdslib +work之类的选项.如果你设这么复杂,有时就失去简化过的ncverilog的意义了.ncvlog是要用到更多东西的.ncverilog本来就是打算简化使用,傻瓜式命令.
ncverilog \
-f xxxxxxxfile.lst \
+ncaccess+rwc \
+notimingchecks \
+loadpli1=../plis/verdi/debpli:novas_pli_boot \
+loadpli1=../plis/denali/libdenpli:den_PLIPtr
如果没有用到verdi和denali memory model,最后两行去掉.
ncverilog \
-f xxxxxxxfile.lst \
+ncaccess+rwc \
+notimingchecks

删减之后的xxxxfile.lst
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
+incdir+../../bench/pci_mt32
+incdir+../../rtl/core

+define+SIM_DUMP_WAVE
+define+SIM_STRATIX_TIMING

../../rtl/top/timescale.v
//------------------------------------------------------------------------------
// NETLIST
//------------------------------------------------------------------------------
./xxxxxx.vo
//------------------------------------------------------------------------------
// VERIFICATION
//------------------------------------------------------------------------------

// STRATIX
../../hsm/altera/altera_mf.v
../../hsm/altera/altera_primitives.v
../../hsm/altera/stratix_atoms.v
../../bench/pci_mt32/arbiter.v
../../bench/pci_mt32/monitor.v
../../bench/pci_mt32/mstr_tranx_fv2.v
../../bench/pci_mt32/pull_up.v
../../bench/pci_mt32/trgt_tranx.v
../../bench/xxxxxx/xxxxxxbench.v
../../bench/xxxxxx/xxxxxxsys.v

在quartus输出的xxxxxx.vo文件里面
确实有反标sdf的命令
// synopsys translate_off
initial $sdf_annotate("xxxxxx_v.sdo");
// synopsys translate_on
所以把quartus生成的xxxxxx.vo和xxxxxx_v.sdo文件,放到仿真的目录下即可.

不过.告诉你很不好的消息.
就是打开仿真的波形文件,看里面的波形,因为经过synthesis和PR之后,netlist早已经打乱了.所以你想看中间结点的波形,你很难找到原先的net.
所以后仿意义不算很大.
现在的前仿+形式验证,应该是以后主要的方向



    十分感谢,我再仔细研究一下!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top