Verilog-线程

并发线程

verilog和C语言有一个最大的不同就是并发性

  • 并发--同时进行的过程

module tb_test;
int a;
initial begin
a = 1;
a = 2;
a = 3;
end initial begin
A1
#1
//a = 1;
end
initial begin
B1
#1
//a = 2;
B2
end
initial begin
C1
#1
C2
end
initial begin
D1
#1
D2
end
endmodule
  • initial begin end是并发的编程,在0时刻开始执行
  • 这里的四个initial begin就相当于上面图中的四个线程thread
  • initial是同时执行的,没有先后顺序
  • 如果两个initial在同一个时刻对于同一个变量a进行赋值,结果是不确定的,取决于两个线程谁先抢到a
module tb_test;
int a;
initial begin
a = 1; //t0
a = 2; //t0
a = 3; //t0 都是在t0时间点执行的,但是在t0这个时间点,从上到下执行
#1; //语句执行到a = 3得时候,下一条为延迟,程序会等待
end
endmodule



  • 一个环境中有多个线程,会分为ready和wait状态的线程
  • ready状态就是当前状态还没有执行的线程,wait就是当前时刻下会被阻塞的线程,等待其他线程继续执行
  • 当正在执行的线程进入wait状态时,下一个ready状态的线程继续执行
module tb_test;
int a ;
initial begin
a = 1; // 从to时刻开始执行a=1,a=2,a=3,这三条语句没执行完,这个线程处于ready状态
a = 2;
a = 3;
#1
end
initial begin
#1 // t0时刻不执行任何操作,需要等待上面的线程在t0时刻的代码执行完毕之后,两个线程一起进行延迟1个时间单位
end // 在t0时刻,这个线程处于wait状态 // 当第一线程执行完a=1,a=2,a=3三个语句之后,会从ready状态转变为wait状态,此时所有的线程都处于wait状态,进行下一个仿真周期
// 延迟1个时间单位

并发语句合集

  • initial 语句在整个仿真事件内只执行一次,initial语句都是并发的
  • always语句一直在执行,可以对于电路进行建模,always也是并发的
  • assign可以对于组合电路进行建模,assign语句都是并发的
  • begin ... end 内部语句从上到下依次执行
  • fork ... join 内部语句并发执行,同一时刻同时执行,与时间无关
int a,b,c;
fork
statement 0;
begin
statement 1;
statement 2;
end
join statement 3;

09-Verilog-并发线程的更多相关文章

  1. Java--Semaphore控制并发线程数量

    package com; import java.util.concurrent.Semaphore; /** * Created by yangyu on 16/11/28. */ /** * Se ...

  2. 调整Tomcat的并发线程到5000+

    调整Tomcat的并发线程数到5000+ 1. 调整server.xml的配置 先调整maxThreads的数值,在未调整任何参数之前,默认的并发线程可以达到40. 调整此项后可以达到1800左右. ...

  3. 使用CountDownLatch和CyclicBarrier处理并发线程

    闲话不说,首先看一段代码: { IValueCallback remoteCallback = new IValueCallback.Stub() { <strong><span s ...

  4. Java 并发 线程同步

    Java 并发 线程同步 @author ixenos 同步 1.异步线程本身包含了执行时需要的数据和方法,不需要外部提供的资源和方法,在执行时也不关心与其并发执行的其他线程的状态和行为 2.然而,大 ...

  5. Java 并发 线程的优先级

    Java 并发 线程的优先级 @author ixenos 低优先级线程的执行时刻 1.在任意时刻,当有多个线程处于可运行状态时,运行系统总是挑选一个优先级最高的线程执行,只有当线程停止.退出或者由于 ...

  6. Java 并发 线程属性

    Java 并发 线程属性 @author ixenos 线程优先级 1.每当线程调度器有机会选择新线程时,首先选择具有较高优先级的线程 2.默认情况下,一个线程继承它的父线程的优先级 当在一个运行的线 ...

  7. Java 并发 线程的生命周期

    Java 并发 线程的生命周期 @author ixenos 线程的生命周期 线程状态: a)     New 新建 b)     Runnable 可运行 c)     Running 运行 (调用 ...

  8. Java高并发 -- 线程池

    Java高并发 -- 线程池 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 在使用线程池后,创建线程变成了从线程池里获得空闲线程,关闭线程变成了将线程归坏给线程池. ...

  9. Java高并发--线程安全策略

    Java高并发--线程安全策略 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 不可变对象 发布不可变对象可保证线程安全. 实现不可变对象有哪些要注意的地方?比如JDK ...

  10. 根据CPU核心数确定线程池并发线程数

    一.抛出问题 关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下: 第一派:<Java Concurrency in Practice>即&l ...

随机推荐

  1. windows 和 Linux 下 git status 结果不一致

    解决该问题 运行一下命令即可 git config core.autocrlf true 解释 git config core.autocrlf true 这个命令是在任何支持的操作系统上都可以运行的 ...

  2. 什么是HuggingFace

    一.HuggingFace简介 1.HuggingFace是什么 可以理解为对于AI开发者的GitHub,提供了模型.数据集(文本|图像|音频|视频).类库(比如transformers|peft|a ...

  3. CANN 5.0硬核技术抢先看

    摘要:2021年12月,CANN5.0版本也将与大家正式见面,通过软硬件协同优化,该版本将会实现训练性能再翻倍,凭实力展现AI领域的「中国速度」! 本文分享自华为云社区<CANN 5.0硬核技术 ...

  4. 云小课|三大灵魂拷问GaussDB(DWS)数据落盘安全问题

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:GaussDB(D ...

  5. Linux上非root用户jdk环境变量配置

    1.设置用户环境变量vi .bash_profile 或者是 vi ~/.bashrc 2.JAVA_HOME=/home/sgmm/jdk1.6.0_13 CLASSPATH=$JAVA_HOME/ ...

  6. 开心档之MySQL 创建数据库

    MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 ...

  7. ipa如何安装到iphone

    ​ Sign In - Apple app管理中心: https://appstoreconnect.apple.com/ apple ID管理中心: Manage your Apple ID 工具只 ...

  8. 火山引擎DataLeap的Data Catalog系统公有云实践 (下)

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Data Catalog公有云遇到的挑战 Data Catalog经历了一个从0到1在火山引擎公有云部署并逐步优化 ...

  9. bat cmd 无效参数/选项 - deleting

    Window bat expdp 数据库定时任务逻辑备份数据库 定时删除N天前的旧文件 Linux shell crontab expdp 定时任务逻辑备份数据库 定时删除旧文件 错误配置 forfi ...

  10. cxf 动态调用 WebService No compiler detected, make sure you are running on top of a JDK instead of a JRE

    WebService cxf No compiler detected, make sure you are running on top of a JDK instead of a JRE [202 ...