ncverilog使用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Ncverilog使用在NC自带的帮助CadenceNC-VerilogSimulatorHelp中都可以找到。0t:X.A9V#E2s以下整理自网络,有点乱:(ncverilog是shell版的,nclaunch是以图形界面为基础的,二者调用相同内核;ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiplestep和singlestep0i(p8K3Z5f&SF;\)Qncverilog的三步模式为:ncvlog(编译)ncelab(建立snapshot文件)ncsim(对snapshot文件进行仿真)基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作ncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式7G2}(I'c.L5_#{.{!@三命令模式:ncvlog-frun.fncelabtb-accesswrc5Xi7f$gV,Y7~2O.@ncsimtb-gui%m-~+h*l#u1R/Z;n6_)L第一个命令中,run.f是整个的RTL代码的列表,值得注意的是,我们需要把tb文件放在首位,这样可以避免出现提示timescale的错误注意:ncvlog执行以后将产生一个名为INCA_libs的目录和一个名为worklib的目录4O5f&xe$v;K-M'U!i第二个命令中,access选项是确定读取文件的权限。其中的tb是你的tb文件内的模块名字。&v3l:?)f(K%W8b5y注意:ncelab要选择tb文件的module,会在snapshot文件夹下生成snapshot的module文件)u'R,q$N;lC7B(p+\(j4m第三个命令中,gui选项是加上图形界面在这种模式下仿真,是用“-”的。而下边要说的ncverilog是采用“+”的三命令模式下GUI界面较好用,其对应的命令会在consolewindow中显示*X&~5B0o%`[7_(I'J注意:选择snapshot文件夹下生成的module文件进行仿真;g+q#K+_#l3@5@单命令模式:1A.K.Y#?5S1F|)V;kncverilog+access+wrcrtl+gui在这里,各参数与三命令模式相同。注意“+”0[0Y2I:R$b,Z通常都使用单命令模式来跑仿真,但要配置好一些文件3n'm1P9HK/t单命令模式下文件的配置:目录下有源文件、测试台文件、file、run四个文件在linux下执行sourcerun后再执行simvision来查看run文件内容:ncverilog+access+rw-ffile.]7c:~-u0B+G/F,U!pfile文件内容:cnt_tb.v(注意把tb文件放在前)cnt.vtb文件中应该包含:6h0G:~;T3x9B0I%yinitial-y-`-h%|'e1N'n8mbegin$shm_open(wave.shm);//打开波形保存文件wave.shm$shm_probe(cnt_tb,AS);//设置探针endA--signalsofthespecificscope为当前层信号设置探针(q3q.B0M!YS--Portsofthespecifiedscopeandbelow,excludinglibrarycellsC--Portsofthespecifiedscopeandbelow,includinglibrarycellsAS--Signalsofthespecifiedscopeandbelow,excludinglibrarycells为当前层以以下层信号都设置探针,这是最常用的设置方法AC--Signalsofthespecifiedscopeandbelow,includinglibrarycells1f)_#}7D!\!R(`还有一个M,表示当前scope的memories,可以跟上面的结合使用,AMAMSAMC*u*O4b!|-r];S5|({什么都不加表示当前scope的ports;-G6A/F7_#n&y1J5G5D5r$shm_close//关闭数据库/W)g5{#{*sM查看结果时可以在sourceschemicwaveregister四个窗口同时查看[,e*Vs5q,R&a保存波形信号的方法:%e5B;JK!x9Y2b1.SHM数据库可以记录在设计仿真过程中信号的变化.它只在probes有效的时间内记录你setprobeon的信号的变化.$a8R3u;A:O._2.VCD数据库也可以记录在设计仿真过程中信号的变化.它只记录你选择的信号的变化.(v'`P!|/b7s!n&d$dumpfile(filename);//打开数据库$dumpvars;//depth=allscope=all$dumpvars(0);//depth=allscope=current$dumpvars(1,top.u1);//depth=1scope=top.u1/o6d7zT,}#V5P%n$dumpoff//暂停记录数据改变,信号变化不写入库文件中$dumpon//重新恢复记录.z1\9B.H2R1_5J8J/y2E3.Debussyfsdb数据库也可以记录信号的变化,它的优势是可以跟debussy结合,方便调试.如果要在ncverilog仿真时,记录信号,首先要设置debussy:a.setenvLD_LIBRARY_PATH:$LD_LIBRARY_PATH(pathfordebpli.sofile(/share/PLI/nc_xl//nc_loadpli1))3v8G1w*Ab)fb#N*p:y8@!Mb.whileinvokingncverilogusethe+ncloadpli1option.ncverilog-frun.f+debug+ncloadpli1=debpli:deb_PLIPtr+z/p)p-w,h5yfsdb数据库文件的记录方法,是使用$fsdbDumpfile和$fsdbDumpvars系统函数,使用方法参见VCD(l$Z#u1A'@9F8`3N0L注意:在用ncverilog的时候,为了正确地记录波形,要使用参数:+access+rw,否则没有读写权限0y3@2{&J)M.p6{+H5l1k/k~uE*S:VD产生FSDB波形文件的若干技巧:=2539&;extra=page%3D18^G)a.O0t(Y'L下载:=3357&;extra=page%3D1'V,w1y4z*k/Xncverilog编译的顺序:ncverilogfile1file2....1}4j,S2`%_(p有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是从后到前,就先编译file2然后才是file2.,:|_+O;uM!S+x信号的强制赋值force:$U&y!{#z.r0d1o1W*C$B首先,force语句只能在过程语句中出现,即要在initial或者always中间.去除force用release语句.;/l-^/x&l-V,x1E!e'c7_initialbeginforcesig1=1'b1;...;releasesig1;end,force可以对wire赋值,这时整个net都被赋值;也可以对reg赋值.!u(^4C!Q9V6Q'J-`-QVerilog和Ncverilog命令使用库文件或库目录ex).ncverilog-frun.f-vlib/lib.v-ylib2+libext+.v//一般编译文件在run.f中,库文件在lib.v中,lib2目录中的.v文件系统自动搜索,使用库文件或库目录,只编译需要的模块而不必全部编译Q:我的files里面只有一个help文件夹,里面是一个叫ncprotect文件,没有你所说的hdl.var文件啊A:1、NC-VERILOG在创建工程时会生成两个文件:cds.lib和hdl.var。2、testbench和DUT当然是不同的文件。&k1a%h3x3U0R/B$X.d'w3、sdf是standarddelayformat文件,由综合和后端工具产生,供后仿用。/@2n+U1c7S(1)先建立9P8a,O,g,M0r^cds.libS!_;z3]'J)|&KDEFINEwork./work_libhdl.varDEFINEWORKwork(2)-}1r6x9M7u(qmkdirwork_lib)@;M*A-k6h&~)Te5}(3)ncvlog.....#m3^._#T5C&I$cdsdoc启动cadence文档窗口,是文档是html格式的.这里,我的需要先启动firefox,然后才能开cdsdoc。$(tool_name)-helpq&D*Hs4?$nchelp[options]tool_namemessage_code*******/H9m-e%k5|!i/cncsimhelp[help_options][command|all[command_options]])G,\7c`&XO!x:c0m'D!L5Q提高NC-Verilog仿真效率的技巧下面是一些用来禁止时序检查的一些命令行。%ncverilog+delay_mode_distributed+notimingcheck+noneg_tchk或%ncelab–delay_modedist–notimingchecks–noneg_tchk下面还列出了关于时序的全局选项:ncverilogoptionncelaboption0A4P6T&u8Ts-z2r+nonotifier-nonotifierDisablesnotifierregister-\+h1z2K!@3O)q+notimingcheck-notimingchecksDisablestimingcheck&g9Q$d(I,X&H(s+delay_mode_unit-delay_modeunitDelay1simulationtimeunit:_*n!D$p(P7Y:R&b+delay_mode_zero-delay_modezeroZerodelay3K*~'_#T6e+f2s6E1J%Y+delay_mode_distributed-delay_modedistIgnoresspecifyblockdelays,d)l6Z0H:c8v)|提高SDF的精度-g/o!p-LsI时序信息通过SDF文件传递给一个设计。在LDV3.1以前的版本里,缺省的SDF精度是10ps。从LDV3.1开始,所有的时序宽度(包括小于10ps的)都允许使用,这样仿真的时序结果+k&d0F:t9H9M+M8m更加精确,但是仿真变得更慢。在多数情况下,10ps就足够了,因此你也许想用下面的方法来改变精度:%ncverilog+ncelabargs+”-sdfprecision10ps”otheroptionsT&]7D(T+H?1F4c!{1c或5^;k+?5p3F9_-X%ncelab–sdf_precision[10ps|1ps|100fs]other_options%g2qi0|1L&`&j1v2~+^关于负时序(negativetiming)检查8p'}+}/q+_;v$]1D负时序检查有下列的选项:ncverilogoptionncelaboptionI;b3N'X4X2m3R+neg_tchk-neg_tchkStillexistsforbackwardcompatibility8t%t)t.i;U9h+noneg_tchk-noneg_tchkSetsnegativetimingcheckstozero(matchespreviousbehavior)6}4X&@/j1q)F'[设置

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功