企业网站的建设流程包括,做aa视频网站,wordpress电影站模版,网络营销专业大学线程控制
发生器把激励传给代理时#xff0c;环境类需要知道发生器什么时候完成任务#xff0c;以便及时终止测试平台中还在运行的线程#xff0c;这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组…线程控制
发生器把激励传给代理时环境类需要知道发生器什么时候完成任务以便及时终止测试平台中还在运行的线程这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组方式begin…and或者fork…join。前者是顺序方式执行而后者是以并发方式执行的。
并行控制
fork…join需要所有并行的线程都结束以后才会继续执行fork…join_any会等到任何一个线程结束以后就继续执行即在调度块内语句当第一个语句完成后父线程才继续执行其他停顿的线程也得以继续fork…join_none不会等待其子线程而继续执行即在调度块内其他语句时父线程继续执行
时序控制
SV可以通过延迟控制或者事件来对过程块完成时序控制延迟控制即通过#来完成
#10 regaregb;事件event控制即通过来完成
r regaregb;
(posedge clock) regaregb;wait语句也可以与事件或者表达式结合来完成
real AOR[];
initial wait (AOR.size()0);线程间的通信
测试平台中的所有线程都需要同步并交换数据
事件
事件成为同步对象的句柄可以传递给子程序。这个特点允许在对象间共享事件而不用把事件定义成全局的。最常见的方式是把事件传递到一个对象的构造器中。
可以用event来声明一个变量,并且使用-来触发它也可以使用wait来进行边沿触发避免竞争wait_order可以使得进程保持等待直到参数列表中的事件按照顺序从左到右依次完成如果参数列表中的事件被触发但是没有按照要求的顺序那么会使得等待操作失败
旗语semaphore
可以使用旗语实现对同一资源的访问控制。类似于车钥匙用车钥匙人才可以使用汽车
semaphore sem; //创建一个旗语使用new方法可以创建一个或单个或多个钥匙的旗语
semnew(1); //分配一个钥匙使用get可以获取一个或多个钥匙阻塞型
sem.get(1); //获取总线钥匙使用put可以返回一个或多个钥匙
sem.put(1); //处理完成时把钥匙返回如果试图获取一个旗语而不希望不被阻塞可以使用try_get()函数非阻塞型它返回1表示有足够多的钥匙而返回0表示钥匙不够keyCount指定从旗语获取所需钥匙数默认值为1旗语的等待队列是先进先出即先排队等待旗语的将优先得到钥匙。如果指定数量的钥匙可用则返回正数并继续执行如果指定数量的钥匙不足则该方法返回0
信箱mailbox
信箱可以使得进程之间的信息得以交换数据可以由一个进程写入信箱再由另外一个进程获得信箱在创建时可以限制其容量或者不限制当信箱量写满时后续再写入的动作会被挂起直到信箱的数据从中读取使得信箱有空间以后才可以继续写入不限制容量的信箱则不会挂起写入信箱的动作创建信箱new()将信息写入信箱put()试着写入信箱但不会阻塞try_put()获取信息get()同时会取出数据peek()不会取出数据试着从信箱取出数据但不会阻塞try_get()/try_peek()获取信箱信息的数目num()