zoukankan      html  css  js  c++  java
  • vcs命令

    转载:VCS_weixin_34256074的博客-CSDN博客

    timing check相关的:

          +notimingcheck命令,可以用在compile时,也可以用在run time的时候,

          都是将检查timing的系统函数,都disable掉了,

          加在compile的时候,不会编译到worklib中,速度可快,可以测试gate env;

          setuphold,recrem指定的delay signal只有在run time时加这个option,才会被产生;

                            build的时候加,delay信号不会被产生;

          该命令相比较与ucli中的tcheck命令有最高的优先级;

    vcs中license相关的run cmd:+vcs+lic+wait,无限的等待下去;

                    +licwait timeout,最多等待指定的时间;

    compile_option:

        1)+no_notifier,寄存器中的notifier不会toggle,不会产生x,先利用该option解决violation,

          防止x的传递,导致很难debug;

        2)+no_tchk_msg,不显示timing violation的log信息,

        3)+neg_tchk,是能negative的timing check,如果不加该option,所有的nagative time被约束为0;

        4)+lca,使用一些vcs提供的最新的feature。

        5)-fsdb  -kdb,可以直接从fsdb中打开work,当前工程,不需要verdi重新编译。

        6)+define+macros=value,定义一个macros,它的值为value。

          相比较与不需要加define的情况,多是uvm,testplusargs,等参数,可以直接+value,传递值。

    run_option:

        1)+ntb_random_seed = value,将simv的随机seed设定为某个值,srandom(seed)有更高的优先级;

        2)+ntb_random_seed_automatic,每次仿真随机产生seed,不会存在两次simv相同seed的情况;

        3)-ucli -do file,直接执行ucli的脚本文件

    -force_list,可以放在elaborate和simulation过程中,指定force信息的输出。

    VCS动态加载DPI shared lib,在vcs compile之后,调用GCC执行C的编译,产生so文件。

      在vcs run的时候,手动加载so。加载的命令包括:

      1) -sv_liblist,指定一个so的list文件,其中的so不需要加后缀名。

      2) -sv_root,加lib so的hier。之后再加-sv_lib。

      3) -sv_lib,加lib名,不需要加后缀。

    VCS动态加载PLI shared lib,

      1)在VCS编译时,加入-P pli.tab等指定。

      2)在runtime时,每个lib加load选项,simv -load ./pli1.so -load ./pli2.so

    unified simulation profile可以报告CPU time和machine memory的使用情况,

      profrpt是一个基于python的脚本,来产生text或者html的report。

      需要在compile和simulation的时候,都加入-simprofile选项。

      profrpt time,或者profrpt mem 

    system task:

      severity类型的报告:

        1) $fatal,$error,$warning,$info;

      assert control类型:

        1) $assertoff,$asserton,$assertkill;参数(depth,hier_path)

      数值计算类型:

        1) $onehot,$onehot0,$isunknown,$countx,$countz,$countunknown;

      ASCII文件VCD file;

        1) $dumpall,$dumpoff,$dumpon,$dumpfile,$dumpflush,$dumpvars;

      VPD文件,直接用DVE打开;

        1) $vcdplus...

      assertion monitor类型:

        只能在initial的block中使用,显示每一个clock assertion的动作:

        1) $assert_monitor([0|1],assertion_identifier) assertion_identifier可以是一个hier name;

        2) $assert_monitor_off,$assert_monitor_on,控制$assert_monitor task。

      system task类型:

        1) $system(cmd), 2) $systemf(cmd);

      log file类型:

        1) $log("filename"),写入log,优先级高于-l指定的logfile,

        2) $nolog(“filename”),

      File IO操作:

        1) $fclose,$fopen,$fread,$fwrite,

      Loading memory:

        1) $readmemb/h/o, 2) $writememb/h/o

       指定timescale:

        1) $timeformar;

        2) 显示时间,$time,$stime,

      simulation control:

        1) $stop,$finish;

      Timing check类型的:

        1) $disable_warnings,$enable_warnings,

        2) $hold,$nochange等。

      random类型:

        1)返回某个分布的随机值,$dist_exponential,$dist_normal,

          $random,

        2)$get_initial_random_seed,拿到当前seed的值;

      控制VCS:

        1)$reset,将simulation time reset到零,

      SDF file:

        1) $sdf_annotate()

      X和Z的conditional的检查:

        1)$xzcheckon(level_number,   hier_name),每次hier下有一个warning,便报出来;

        2)$xzcheckoff(level_number,  hier_name),

    VCS对uvm有一个内嵌式的支持,uvm的库被放在$VCS_HOME/etc/uvm-1.2中,可以在VCS编译过程中,显示指明-ntb_opts uvm-1.2 options来使用uvm。

      vcs -sverilog -ntb_opts uvm-1.2   (vlogan不支持直接ntb_opts)    

        -top   指定snapshot的顶层

        -kdb   可以整合vcs的DB到verdi的db,直接通过verdi -ssf novas.fsdb打开verdi的工程

        -lca   表示使用vcs的用户限制的功能 

    VCS中dump fsdb的波形,之前需要添加novas.tab和pli.a的文件路径,-P $VERDI_LIB/novas.tab  $VERDI_LIB/pli.a

    现在

      1)设置$NOVAS_HOME的值,

      2)在code中调用$fsdbDumpvars的task,

      3)vcs编译中增加-debug_access+r的权限

      4)编译中加入-fsdb

    使用verdi进行gui调试,-verdi或者-gui=verdi选项

    后启动verdi命令:

    verdi -ssf <fsdb_file>   verdi -simflow -dbdir <path> -top <top_name>

    VCS提供的dpi,getenv,拿到当前terminal下的环境变量;

    force,release与assign类似,是verilog中支持的结构。

    $deposit(hier, value),是VCS中提供的task,

  • 相关阅读:
    saltstack学习-1:saltstack介绍、部署、常见问题处理
    CentOS 6.8使用Subversion + Usvn 搭建版本管理服务器+常用钩子
    matlab快捷键
    转行小白成长路-java篇
    转行小白成长路-java篇
    转行小白成长路-java篇
    转行小白成长路-java篇
    转行小白成长路-java篇
    转行小白成长路-java篇
    转行小白成长路-java篇
  • 原文地址:https://www.cnblogs.com/zhiminyu/p/14835900.html
Copyright © 2011-2022 走看看