当前位置: 首页 > wzjs >正文

完成网站的建设工作总结seo产品推广

完成网站的建设工作总结,seo产品推广,网页站点的建立流程,什么是网络社交【IC验证】systemverilog_并行线程(块) 一.线程1.定义2.线程的特性3.线程的分类 二.并行线程1.fork join2.fork join_any3.fork join_none 三.几种编译器导致运行结果的差异性1.多重fork join_none2.fork join和fork join_none嵌套的奇怪结果 一.线程 1…

【IC验证】systemverilog_并行线程(块)

  • 一.线程
    • 1.定义
    • 2.线程的特性
    • 3.线程的分类
  • 二.并行线程
    • 1.fork join
    • 2.fork join_any
    • 3.fork join_none
  • 三.几种编译器导致运行结果的差异性
    • 1.多重fork join_none
    • 2.fork join和fork join_none嵌套的奇怪结果

一.线程

1.定义

独立运行的程序。

2.线程的特性

(1) 每个always过程块和initial过程块都是相互独立的线程,always过程块的线程不会结束,而initial过程块的线程可以结束;
(2)每个线程呈现树状结构,父线程可以开辟多个子线程;

3.线程的分类

(1)串行线程
语法:begin end
特点:串行执行
(2)并行线程
语法:fork join, fork join_any, fork join_none
特点:并行执行

二.并行线程

1.fork join

(1)执行框图
在这里插入图片描述
(2)说明
内部各线程并行执行,会阻塞后续线程,内部所有线程执行完毕才会执行后续线程;
(3)例子

module tb1;initial begin$display("@%0t : start",$time);fork #1 $display("@%0t : sentence1",$time);#2 $display("@%0t : sentence2",$time);#3 $display("@%0t : sentence3",$time);join$display("@%0t : end",$time);end 
endmodule

结果:
在这里插入图片描述
(4)注意
如果并行块内部线程和并行块外的后续线程是同时执行的,编译器一般先顺序执行并行块内的语句,再执行并行块外的语句;

module tb1;initial begin$display("@%0t : start",$time);fork $display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);$display("@%0t : sentence3",$time);join$display("@%0t : end",$time);end 
endmodule

结果:
在这里插入图片描述

2.fork join_any

(1)执行框图
在这里插入图片描述
(2)说明
内部各线程并行执行,会阻塞后续线程,内部最短线程执行完毕后就开始执行后续线程;
(3)例子

module tb2;initial begin$display("@%0t : start",$time);fork #1 $display("@%0t : sentence1",$time);#2 $display("@%0t : sentence2",$time);#3 $display("@%0t : sentence3",$time);join_any $display("@%0t : end",$time);end
endmodule

结果:
在这里插入图片描述
(4)注意(不同编译器的差异性
如果并行块内部线程和并行块外的后续线程是同时执行的,不同编译器的执行顺序是不一样的;
例子:

module tb2;initial begin$display("@%0t : start",$time);fork $display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);$display("@%0t : sentence3",$time);join_any$display("@%0t : out",$time);$display("@%0t : end",$time);end
endmodule

结果
Questasim:先把并行块内同一时刻的语句执行完,再执行并行块外的后续语句;
在这里插入图片描述
VCS:先执行并行块内的第一条语句,再执行并行块外的后续语句,再执行并行块内的后续语句;
在这里插入图片描述

3.fork join_none

(1)执行框图
在这里插入图片描述
(2)说明
内部各线程并行执行,不会阻塞后续线程,后续线程和内部线程并行执行;
(3)例子

module tb3;initial begin$display("@%0t : start",$time);fork#1 $display("@%0t : sentence1",$time);#2 $display("@%0t : sentence2",$time);#3 $display("@%0t : sentence3",$time);join_none$display("@%0t : out",$time);$display("@%0t : end",$time);end
endmodule

结果:
在这里插入图片描述
(4)注意1(不同编译器的差异性
当并行块内部线程和并行块后续线程在同一时刻执行时,实际的执行顺序是:先执行并行块后续线程一直执行到遇到阻塞语句(含#、@、wait)调度结束(terminates),再执行并行块内部线程。##对于调度结束的解释我目前也不太清楚##
例子:

module tb3;initial begin$display("@%0t : start",$time);fork$display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);$display("@%0t : sentence3",$time);join_none$display("@%0t : out",$time);$display("@%0t : end",$time);#1 $display("@%0t : delay",$time);end
endmodule

结果:
在这里插入图片描述

三.几种编译器导致运行结果的差异性

1.多重fork join_none

例子:

module tb4;initial beginfork $display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);join_none$display("@%0t : sentence3",$time);$display("@%0t : sentence4",$time);fork $display("@%0t : sentence5",$time);$display("@%0t : sentence6",$time);join_noneend
endmodule

结果
Questasim:第一个fork join_none并行块,将initial过程块的begin end作为调度结束标志,所以会先执行后续的线程直到end再执行第一个fork join_none并行块内的线程。
在这里插入图片描述
VCS:第一个fork join_none并行块,将第二个fork join_none并行块作为调度结束标志,所以会先执行后续的线程直到将第二个fork join_none并行块再执行第一个fork join_none并行块内的线程,最后执行将第二个fork join_none并行块内的线程。
在这里插入图片描述

2.fork join和fork join_none嵌套的奇怪结果

(1)
代码:

module tb5;initial fork$display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);fork $display("@%0t : sentence3",$time);$display("@%0t : sentence4",$time);join_none$display("@%0t : sentence5",$time);#1 $display("@%0t : sentence6",$time);join
endmodule

结果:
Questasim
在这里插入图片描述

VCS:
在这里插入图片描述
(2)
代码:

module tb5;initial fork$display("@%0t : sentence1",$time);$display("@%0t : sentence2",$time);fork $display("@%0t : sentence3",$time);$display("@%0t : sentence4",$time);join_none$display("@%0t : sentence5",$time);$display("@%0t : sentence6",$time);join
endmodule

Questasim
在这里插入图片描述
VCS
在这里插入图片描述


文章转载自:

http://SC55ub4V.rjynd.cn
http://CjExGDzt.rjynd.cn
http://M2BqBTnS.rjynd.cn
http://7m3abbhP.rjynd.cn
http://CXpSjEBt.rjynd.cn
http://dxDSsUDv.rjynd.cn
http://Qt5DBRd2.rjynd.cn
http://3SNw0Hir.rjynd.cn
http://DKJS6P7L.rjynd.cn
http://iI7ut5gI.rjynd.cn
http://eens94Xn.rjynd.cn
http://CvPcO6QH.rjynd.cn
http://3TDVuIMn.rjynd.cn
http://VxEhayKi.rjynd.cn
http://JyvG7hL3.rjynd.cn
http://R7YsvUNE.rjynd.cn
http://L5ioGmMy.rjynd.cn
http://1RqzPZsz.rjynd.cn
http://ukulAAqp.rjynd.cn
http://dcXxiB1v.rjynd.cn
http://WoEhean1.rjynd.cn
http://tD97jCwt.rjynd.cn
http://MbOrUZZC.rjynd.cn
http://PzrmuaEU.rjynd.cn
http://BCc04w3T.rjynd.cn
http://fUBIjXRv.rjynd.cn
http://l2e4tmJd.rjynd.cn
http://hRArUwuo.rjynd.cn
http://5qc7u2y3.rjynd.cn
http://ZNcT1UHz.rjynd.cn
http://www.dtcms.com/wzjs/617598.html

相关文章:

  • 赣州网站优化制作上海临平路网站建设
  • 怎么在网站上做充话费业务营销型品牌网站建设
  • 网站建设深wordpress 点赞功能
  • 用vue框架做的pc端网站深圳商城网站制作公司
  • 自己视频怎么上传网站郑州网络推广哪个好
  • 搭建网站需要什么软件今天国际大事新闻
  • dede 企业网站模板外国网站代理
  • 上传了网站源码怎么做短网址
  • 网站前置审批在哪里办关键词如何确定
  • 专业网站建设一条龙网站建设计划书怎么写
  • 网站收录率企业网站的基本类型包括
  • 可以做系统同步时间的网站免费的源码
  • python做网站优势阿里云建站视频教程
  • 岳阳网站建设解决方案东莞大朗网站建设
  • 住建部网站建设部网站设计收费标准
  • 桂林 网站 制作wordpress页眉导航
  • 附近网站建设燕莎做网站
  • 在线wordpress网站优化和提升网站排名怎么做
  • 自建网站如何盈利电子兼职网站建设
  • 网站制作工具移动端响应式网站怎么做
  • 创网网站后台管理系统在线推广
  • 如何用Python网站开发在征婚网站上认识做期货
  • 网站手机版模板免费下载竞网做的网站
  • 百度云自助建站wordpress 扁平化主题下载
  • 现在网站建设 如何保证安全南京企业网站seo
  • 南充网站建设略奥网络西安优秀的定制网站建设公司哪家好
  • 公司网站建设会计你分录如何在网上销售
  • 牡丹江0453免费信息网站华企网络
  • h5网站建设+北京有专门做最佳推荐的网站
  • 网站基础知识域名5个点电子商务网站建设与维护读书报告