SV中的structured procedure

    1)intial procedure,keyword只有initial;最开始被调用一次;

    2)always procedure,keyword包括always,always_comb,always_latch,always_ff;

        整个仿真时间一直被调用;

    3)final procedure,keyword 只有final;最后被调用一次;

    4)Task;

    5)function;

其他的procedure contexts,包括:coverage point expression,assertion sequence items,action blocks;

always_comb,在time 0一定会被执行,这是与always (*)比较大的一个区别;

always_latch,always_ff,需要用户做额外的检查,保证procedure中的是相应的logic;

final procedure,最好只定义一个,多个之间的顺序是随机的,而且必须是不消耗仿真时间的,只是做一些display信息最好;

SV中的block 声明:1)sequenetial block,begin,,,,end block;

         2)parallel block,fork,,,join/any/none  block;

block中的name声明,可以加在begin或fork之后,并且相应的在end或者join/join_none/join_any之后也添加,组成一组。

      name声明可以对内部的local var创建新的一层hier,也方便disable调用;

block中的label声明,加在begin或fork之前,end之后,组成一组;

      label并不创建新的hier,只是方便指定disable等。

block的start和finish time可以指定为某个延时,或event;

      fork

        @a  begin,,,,end;

        @b  begin,,,,end;

      join

procedure中的timing control

      1)delay control,加#表示,specify block中制定的delay,可以被sdf override掉;

                     组合逻辑,#在表达式之前,建模;

                   时序逻辑,#在等号右侧,建模;

                      tb中的输入激励,可以直接加#;

          2)event control,加@来进行表示;

              implicit event,等待某个signal的value change;clock signal的pose/nege最为常用;

                 explicit event,显式声明某个event,然后做wait和trigger;

          posedge,从0-x/z也算;negedge,从x/z-0也算;

          @之后也可以添加class中的内容或,handle。主要相应的handle或者var变化,就是一个event的触发;

            

          不同的event之间,也可以进行or运算,或者用","来表示;

            always @(a,b,c)   = always @(a or b or c);  

          implicit类型的event_expression list 用 always @(*)   always  @*来表示;

             conditional event表示,加入iff关键字;

            always @( a iff enable == 1)  在enable为1的情况下的a的edge跳变;

          sequence event表示某个sequence运行到end的时候,的结果时候改变

            sequence abc;

              @ (posedge clk) a ##1 b ##1 c;

            endsequence;

            intial begin

              @ abc  $display(“”);

            end

           level_sensitive event,使用wait关键字,

            wait expression;

            wait fork;等待所有的child-process都执行结束;

            wait_order  (identifier1,  identifier2,  identifier3) action_block(else等);  等event按顺序进行trigger; 

                必须是显式声明的event 类型;

           level_sensitive sequence event,使用内部function  triggered;

              

      3)intra_assignment timing control将delay不能写在assign中。可以是delay,也可以是event;

              

thread的创建:1)每个initial procedure;

        2)每个final procedure;

        3)每个always,always_comb,always_latch,always_ff procedure;

          4)每个fork---join的statement;

        5)dynamic process;

process ctrl:wait,wait_order,wait fork;    

  wait fork,会等待当前进程的所有子进程结束,包括之前block块,未结束的进程。

      disable  task/block identifier,disable fork;

          wait fork和disable fork,等待或者disable该进程下的所以子进程;

          disable后不能加function的identifier; 

  disable block_name的格式,类似与verilog格式的static形式的disable,显示kill指定的process。

      process的指定,只通过hier来确定。(automatic task或者function中的object,不能通过hier来引用,只能通过block内部的hier name来确定)

                      (使用disable block_name的时候,需要注意block_name在多线程中情况)

  disable fork,更加切合sv dynamic的形式,查找当前begin end或者task, function中的进程,进行disable。

  program test;

    task automatic t(input int b);

      fork:ONE

        begin

          #b $display('%0b', b);

        end

        begin

          #b $display('%0b', b);

        end

      join_any

      //str1   disable ONE;     //使用这种disable,sim output 5  (因为hier是一样的,所以两个ONE的进程都被杀了)

      //str2   disable fork;    //使用这种disable,sim output 5 ; 10 

    endtask

  endprogram

  initial begin

    fork

      t(10);

      t(5);

    join

  end

SV中定义了process的class,来对每个process做具体的控制;

      

      应用,await,kil,resume等function;

      

SV processses的更多相关文章

  1. 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆

    挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV.     PV:计划值,在即定时间点前计划 ...

  2. Cadence UVM基础视频介绍(UVM SV Basics)

    Cadence关于UVM的简单介绍,包括UVM的各个方面.有中文和英文两种版本. UVM SV Basics 1 – Introduction UVM SV Basics 2 – DUT Exampl ...

  3. 挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见

    挣值管理(PV.EV.AC.SV.CV.SPI.CPI)记忆之我见 挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三 ...

  4. 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)

    [等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV -  contention) 1  BLOG文档结 ...

  5. 挣值管理不是搞数字游戏(3)——进阶指标:CV、SV、CPI、SPI、EAC

    摘要: 要考PMP(Project Management Professional ),挣值管理是必考的知识.软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目.挣值管理相关资料也比较超多, ...

  6. 信息系统项目管理师EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI概念说明

    挣值常用名词: AC [Actual Cost] 实际成本:完成工作的实际成本是多少? [96版的ACWP] PV [Planned Value] 计划值: 应该完成多少工作? [96版的BCWS] ...

  7. SV randomize

    randomize中的变量只支持2-state的values,不支持4-states. randc类型的变量不能被约束在solve------before的语句中. constraint可以被定义在c ...

  8. SV class

    SV中的class通过new来创建实例,new函数可以传递多个参数: packet P1:  P1 = new:创建一个P1的对象: P2 = P1:P2也指向同一个对象: P2 = new P1:P ...

  9. sv命令空间 packge

    SV中的module,interface,program,checker,都提供declaration空间,内部定义都local当前的那个scope,相互之间的building block不影响,不识 ...

随机推荐

  1. 分析SignalTap的仿真结果

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  2. 2015年蓝桥杯省赛A组c++第5题(回溯算法填空)

    /* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void tes ...

  3. Chap2:二进数值与记数系统[Computer Science Illuminated]

    1 基数(base):记数系统的基本数值,规定了这个系统中使用的数字量和数位位置的值 2 数字采用位置计数法进行编写 位置计数法(positional notation):一种表达数字的系统,数位按顺 ...

  4. [daily][qemu][kvm] qemu增加减少CPUID

    做 DPDK 大页内存测试, 发现KVM模拟出来的CPU不支持 1GB 的大页 可以使用如下命令是否支持: [root@dpdk ~]# cat /proc/cpuinfo |grep pdpe1gb ...

  5. 查找->动态查找表->二叉排序树

    文字描述 二叉排序树的定义 又称二叉查找树,英文名为Binary Sort Tree, 简称BST.它是这样一棵树:或者是一棵空树:或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结 ...

  6. 抽屉之Tornado实战(4)--发帖及上传图片

    对于链接,点击获取标题时,本质发送ajax请求,然后去链接抓取信息,发布又是发送ajax请求 发布信息,还要有发布者的信息,并在信息表需要记录发布者的用户名,发布者的头像,发布者的id,而这些信息可以 ...

  7. 20165336 2017-2018-2 《Java程序设计》第1周学习总结

    20165336 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java地位.特点:Java具有面向对象.与平台无关.安全.稳定和多线程等优良特性.Java ...

  8. python摸爬滚打之day010----函数进阶

    1.函数动态传参 *args : 将所有的位置参数打包成一个元组的形式. **kwargs : 将所有的关键字参数打包成一个字典的形式. 形参的接收顺序:    位置参数 > *args > ...

  9. python 版Faster Rcnn

    直接按照官网https://github.com/rbgirshick/py-faster-rcnn上的教程对faster Rcnn进行编译的时候,会发有一些层由于cudnn版本的更新,会报错如下: ...

  10. (4.20)sql server中 len 与datalength 的区别

    len是任意字符均为一个占位符字节.datalength是根据字符集不同判断占用,如一个中文占用2个字节.