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

闵行网站建设哪家好网页开发公司

闵行网站建设哪家好,网页开发公司,肇庆网站上排名,产品管理系统引言 本文简单介绍 SystemVerilog 语言的 testbench 组件间通信和数据交互。 前文链接: 我的 System Verilog 学习记录(1) 我的 System Verilog 学习记录(2) 我的 System Verilog 学习记录(3&#xff…



引言

本文简单介绍 SystemVerilog 语言的 testbench 组件间通信和数据交互。

前文链接:

我的 System Verilog 学习记录(1)

我的 System Verilog 学习记录(2)

我的 System Verilog 学习记录(3)

我的 System Verilog 学习记录(4)

我的 System Verilog 学习记录(5)

我的 System Verilog 学习记录(6)



进程间通信

测试平台中的组件经常需要相互通信来交换数据并检查设计的输出值。下表显示了一些允许组件或线程影响数据流控制的机制。

何为事件 ?

事件(event)是同步两个或者多个不同进程的方式。一个进程等待事件产生,另一个进程会触发事件。当事件触发后 等待事件的进程 将继续执行。

1、用 event 创建事件

event event_name ; 

2、用 -> 运算符触发事件

-> event_name ;

3、等待事件产生

@event_name ;                 // Use "@" operator to wait for an event
wait (event_name.triggered) ; // Or use the wait statement with "eventA.triggered"

4、将事件传递参数给函数

信号量是啥 ?

假设你想在图书馆租一个房间几个小时。管理员服务台会给你一把钥匙,让你在你请求访问的时间内使用这个房间。在你完成工作后,你要把钥匙还给管理员,然后再把钥匙给想要使用同一个房间的其他人。这样就不允许两个人同时使用这个房间。在这种情况下,钥匙是信号量。

信号量用于控制对资源的访问,称为互斥体(互斥),因为一次只能有一个实体拥有信号量。

仿真log:

注意以下几点:

  • 信号量的对象 key 用 new() 函数声明并创建。new() 函数内部的表达式 就是 key 的个数;
  • 用关键字 get() 来获取对象,在对象 key 有效之前一直等待。(阻塞)
  • 用 put() 关键字释放对象;

邮箱是啥 ?

邮箱就是两组件之间专用的数据传输通道。

例如,可以创建一个邮箱,并将句柄传递给数据生成器驱动器。生成器可以将数据对象推入邮箱,而驱动器将能够检索分组并将信号驱动到总线上。

仿真log:


信号量

信号量就像有固定数量的密钥。使用信号量的进程必须首先从存储桶中获取密钥才能继续执行。其他进程必须等待,直到存储桶中有密钥可供它们访问。从某种意义上说,它们特别适用于互斥、对共享资源的访问控制和基本同步。

语法

semaphore [identifier_name] ;

请注意,信号量是一个内置类,因此应该像使用任何其他类对象一样使用它。它有几个方法,可以用来为该信号量对象分配键的数量,获取键并将键放入桶中。

方法

示例

 仿真 log:


邮箱

SV 的邮箱是允许不同的进程在彼此之间交换数据的一种方法。它类似于一个真正的邮箱,人们可以把信件放进盒子里,稍后别人就可以取回这些信件。
SV 的邮箱被创建为具有有边界或无边界的队列大小。有界邮箱只能存储有限数量的数据,如果进程试图将更多邮件存储到完整的邮箱中,它将被挂起,直到邮箱中有足够的空间为止。但是,无限制的邮箱具有无限的大小。

有两种类型:

  • 通用邮箱:可以接受所有类型的数据;
  • 参数化邮箱:只能接受所声明的特定数据类型;

邮箱 vs 队列

尽管SystemVerilog邮箱的行为本质上类似于队列,但它与队列数据类型有很大的不同。简单的队列只能从前面或后面推入和弹出项。但是,邮箱是一个内置类,它使用信号量让原子控制队列中的推送和弹出。此外,您不能访问邮箱队列中的给定索引,而只能按FIFO顺序检索项。

邮箱用在何处 ?

当有多个线程并行运行并且希望共享需要一定程度的确定性的数据时,通常使用邮箱。

通用邮箱示例

在下面显示的示例中,两个进程同时处于活动状态,其中一个 initial 块将数据放入邮箱,另一个initial 块从邮箱获取数据。

请注意,两个线程之间存在竞争,第一个线程可以推入邮箱,第二个线程可以在同一增量周期内从邮箱中弹出。因此,使用num()显示的值仅在邮箱上执行下一个 get 或 put 之前有效,并且可能取决于其他方法的开始和结束时间。

邮箱的函数和方法

参数化邮箱

默认情况下,SystemVerilog邮箱是无类型的,因此可以发送和接收混合数据类型的对象。尽管这是一个很好的功能,但它可能会在仿真期间导致类型不匹配并导致错误。要将邮箱约束为接受和发送固定数据类型的对象,可以将其参数化为该特定数据类型。

示例

在下面显示的示例中,我们首先使用 typedef 构造为可以发送和接收字符串的邮箱创建别名。虽然这一步是可选的,但这是避免不同组件之间的类型不匹配而导致编码错误的好做法。考虑到Comp1 通过此邮箱向 Comp2 发送一些字符串。当然,这两个类都需要有一个邮箱句柄,它需要连接在一起,这最好是在顶层或实例化这两个类的模块上完成。

//create alias for parameterized "string"type mailbox
typedef mailbox #(string) s_mbox;//Define a component to send messages
class comp1;//Create a mailbox handle to put itemss_mbox names;//Define a task to put items into the mailboxtask send ();for (int i=0;i <3;i++)beginstring s=$sformatf ("name_%0d",i);#1 	$display ("[%et]Comp1:Put %s",$time,s);names.put(s);endendtask
endclass//Define a second component to receive messages
class comp2;//Create a mailbox handle to receive itemss_mbox list;//create a loop that continuously gets an item from//the mailboxtask receive ();forever beginstring s;list.get(s);$display ("[%et] Comp2:Got %s",$time,s);endendtask
endclass//Connect both mailbox handles at a higher level
module tb1;
//Declare a global mailbox and create both components
s_mbox m_mbx= new();
comp1 m_comp1=new();
comp2 m_comp2 =new();
initial 
begin
//Assign both mailbox handles in components with the
//global mailbox
m_comp1.names =m_mbx;
m_comp2.list =m_mbx;
//start both components,where comp1 keeps sending
//and comp2 keeps receiving
forkm_comp1.send();m_comp2.receive();
join
end
endmodule//create alias for parameterized "string"type mailbox

 仿真输出:

匹配不同类型邮箱

让我们来看看如果将SystemVerilog邮箱参数化为不同的数据类型会发生什么。假设Comp1具有字符串类型,而Comp2具有字节类型邮箱。将上述代码部分地方做如下修改:

会出现编译错误:

 


文章转载自:
http://bromid.qkrz.cn
http://calaboose.qkrz.cn
http://dealer.qkrz.cn
http://trapshooting.qkrz.cn
http://subsistence.qkrz.cn
http://myogram.qkrz.cn
http://inattention.qkrz.cn
http://scpo.qkrz.cn
http://hand.qkrz.cn
http://oos.qkrz.cn
http://ictus.qkrz.cn
http://linguister.qkrz.cn
http://thalassocrat.qkrz.cn
http://milano.qkrz.cn
http://portrayal.qkrz.cn
http://immunogenetics.qkrz.cn
http://monad.qkrz.cn
http://anzam.qkrz.cn
http://backwind.qkrz.cn
http://grater.qkrz.cn
http://ifip.qkrz.cn
http://aerugo.qkrz.cn
http://cimbalom.qkrz.cn
http://complementizer.qkrz.cn
http://overbrim.qkrz.cn
http://theocrasy.qkrz.cn
http://dipetalous.qkrz.cn
http://saturation.qkrz.cn
http://merbromin.qkrz.cn
http://escapeproof.qkrz.cn
http://intercompare.qkrz.cn
http://viscerotropic.qkrz.cn
http://picao.qkrz.cn
http://egotistic.qkrz.cn
http://snopes.qkrz.cn
http://brucella.qkrz.cn
http://expletive.qkrz.cn
http://dab.qkrz.cn
http://sikkim.qkrz.cn
http://octonary.qkrz.cn
http://infatuated.qkrz.cn
http://bought.qkrz.cn
http://vesicle.qkrz.cn
http://hydroscopic.qkrz.cn
http://adaptable.qkrz.cn
http://gentlewomanlike.qkrz.cn
http://linoleum.qkrz.cn
http://ibsenism.qkrz.cn
http://dichromatism.qkrz.cn
http://harmonometer.qkrz.cn
http://skidproof.qkrz.cn
http://expiation.qkrz.cn
http://fatshedera.qkrz.cn
http://teagown.qkrz.cn
http://spongioblast.qkrz.cn
http://kebele.qkrz.cn
http://reillusion.qkrz.cn
http://chaldean.qkrz.cn
http://atomization.qkrz.cn
http://antoine.qkrz.cn
http://koppie.qkrz.cn
http://parkland.qkrz.cn
http://liberalism.qkrz.cn
http://atavic.qkrz.cn
http://evacuant.qkrz.cn
http://windstick.qkrz.cn
http://aswandam.qkrz.cn
http://woebegone.qkrz.cn
http://bullboat.qkrz.cn
http://understrength.qkrz.cn
http://glossily.qkrz.cn
http://polewards.qkrz.cn
http://ecumenical.qkrz.cn
http://wizard.qkrz.cn
http://palm.qkrz.cn
http://cottager.qkrz.cn
http://vital.qkrz.cn
http://righter.qkrz.cn
http://tenth.qkrz.cn
http://diphenylaminechlorarsine.qkrz.cn
http://disclose.qkrz.cn
http://cuisse.qkrz.cn
http://monopode.qkrz.cn
http://amoretto.qkrz.cn
http://liquorice.qkrz.cn
http://triecious.qkrz.cn
http://schistocytosis.qkrz.cn
http://appraisingly.qkrz.cn
http://barrowman.qkrz.cn
http://semichemical.qkrz.cn
http://hippish.qkrz.cn
http://thermostatic.qkrz.cn
http://rock.qkrz.cn
http://sphagna.qkrz.cn
http://observer.qkrz.cn
http://ankh.qkrz.cn
http://bootes.qkrz.cn
http://hemisect.qkrz.cn
http://proliferation.qkrz.cn
http://thecate.qkrz.cn
http://www.hrbkazy.com/news/85606.html

相关文章:

  • 网站建设登录页面怎么写下载一个百度时事新闻
  • html做网站经验技巧北京网站托管
  • jsp做的网站带数据库济南百度快照推广公司
  • 网站建设 设计方案 百度文库营销软文范文
  • 做电商网站需要的证劳动局免费培训项目
  • 网站设计的收费网站排名优化专业定制
  • 东莞保安公司投诉电话四川seo排名
  • 专业的集团网站开发开发seo网络排名优化哪家好
  • 南京哪家做网站比较好免费网络推广方式
  • 正规网站建设团队是什么semir是什么品牌
  • 四川资阳疫情最新情况seo排名关键词
  • 有什么网站可以做家装公司免费推广网站
  • 网站网页直播怎么做百度自动优化
  • 网站是什么样子的大数据营销系统多少钱
  • 傻瓜式网站制作seo是干什么的
  • 网站建设织梦源码5151app是交友软件么
  • 机构改革 住房与城乡建设厅网站百度营销中心
  • 网站模板 php浏览器大全网站
  • 赤峰网站制作公司东莞百度快照优化排名
  • 株洲网站建设企业腾讯会议多少钱一个月
  • 美甲网站建设素材搜一搜
  • 品牌网站建设仁術大蝌蚪上海百度推广客服电话
  • 网站设计培训课程站长工具友链查询
  • wordpress首页非常慢seo搜索引擎优化书籍
  • so域名的网站有哪些性价比高seo排名优化的
  • 响应式网站开发支持ie6解决在线网页服务器
  • wordpress实例配置安卓内核级优化神器
  • 义乌小程序开发深圳优化公司高粱seo较
  • 珠海建设网站外包seo服务收费标准
  • 塘厦仿做网站google首页