nc-verilog对FPGA进行时序仿真
再追问一个问题,就是在使用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.
所以后仿意义不算很大.
现在的前仿+形式验证,应该是以后主要的方向
十分感谢,我再仔细研究一下!
