systemverilog新增的always_comb,always_ff,和always_latch语句
在Verilog中,设计组合逻辑和时序逻辑时,都要用到always:
always @(*) //组合逻辑
if(a > b)
out = 1;
else
out = 0; always @(posedge clk) //时序逻辑 flip-flop触发器
if(en)
out <= in;
仅从关键字上,看不出设计者想要一个什么样的电路。
SystemVerilog把always关键字细化了。对不同的设计要求有不同的关键字:
always_comb //组合逻辑
if(a > b)
out = 1;
else
out = 0;
comb是combinational的缩写,always_comb表示设计者想要设计一个组合逻辑电路。同时不必再写敏感信号列表。我们在设计组合逻辑电路时,一件最重要的事就是不要一不小心搞一个latch出来。always_comb会告诉综合工具,这里需要的是一个组合逻辑电路。假如我们设计时,if语句或者case语句没有写完整,
always_comb //错误
if(a > b)
out = 1;
在综合时,我们会收到警报:这里应该是组合逻辑,你把他写成了latch。使用always,则不会收到这样的警告。
如果真的需要latch,SystemVerilog准备了专门的关键字:
always_latch //latch
if(clk)
out = in;
always_latch是电平敏感的,它也不需要敏感信号列表,它会告诉综合工具,这里我就是需要一个latch。
always_comb和always_latch极大的降低了unintentional latch的出现。这是对电路设计的一大提升。
对于flip-flop触发器的设计,也有专门的关键字:
always_ff @(posedge clk) //flip-flop触发器
if(en)
out <= in;
ff是flip_flop的缩写,它需要敏感信号列表,并且是边沿触发的,所以敏感信号列表里的信号,都需要加关键字posedge或negedge。假如我们忘记了写posedge或者negedge:
always_ff @(clk) //错误
if(en)
out <= in;
综合工具会发出警告:这里应该是flip-flop,可你写的不是flip-flop。使用always,则不会收到这样的警告。
SystemVerilog把always细化成always_comb, always_ff, 和always_latch。使综合工具可以自动检查各种细节,降低了设计失误的可能。
systemverilog新增的always_comb,always_ff,和always_latch语句的更多相关文章
- sql 操作常用操作语句 新增、修改字段等
常用sql --sql 事务 BEGIN TRAN 事物名 )BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROP ...
- systemverilog.vim
" Vim syntax file " Language: SystemVerilog " Maintainer: Stephen Hobbs <stephenh@ ...
- systemverilog的高亮显示
1. 在_vimrc文件末尾添加: syntax on "确定vim打开语法高亮 filetype on "打开文件类型检测 filetype plugin on "为特 ...
- Systemverilog for design 笔记(七)
转载请标明出处 第一章 接口(interface) 1.1. 接口的概念 接口允许许多信号合成一组由一个端口表示. 1.2. 接口声明 //接口定义 Interface main_bus ...
- SystemVerilog for design 笔记(二)
转载请标明出处 1. System Verilog文本值和数据类型 1.1. 增强的文本值赋值 相对于verilog,SV在文本值赋值时可以1.无需指定进制 2.赋值可以是逻辑1 用法: reg ...
- 《SystemVerilog验证-测试平台编写指南》学习 - 第2章 数据类型
<SystemVerilog验证-测试平台编写指南>学习 - 第2章 数据类型 2.1 内建数据类型 2.2 定宽数组 2.2.1 声明 2.2.2 常量数组 2.2.3 基本的数组操作 ...
- 三、动态SQL语句
//备注:该博客引自:http://limingnihao.iteye.com/blog/106076 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空, ...
- MyBatis学习 之 三、动态SQL语句
目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...
- VB6基本数据库应用(四):数据的提取,新增和修改
列的第四篇,上一篇在:http://blog.csdn.net/jiluoxingren/article/details/9474661 数据的提取,新增和修改 由于在写第三章的时候没有充分考虑这一章 ...
随机推荐
- AI for AI
1.Li, Ke, and Jitendra Malik. "Learning to optimize." arXiv preprint arXiv:1606.01885 (201 ...
- Eclipse 创建 Java 包
打开新建 Java 包向导 你可以使用新建 Java 包向导来创建 Java 包.Java 包向导打开方式有: 通过点击 "File" 菜单并选择 New > Package ...
- (phpQuery)对网站产品信息采集代码的优化
a.要采集的源链接: http://www.prospecbio.com/Recombinant_Proteins/ b.具体要求:
- Unity3D学习笔记——NGUI之UITable
UITable:这个控件可以方便的排列其他小组件,并能控制小组件之间的距离. 效果如下: 这个控件的效果和UIGrid很相似,区别是UIGrid能控制每个小组件的大小,而这个 控件控制的是小组件之前的 ...
- SlidingMenu官方实例分析4——AttachExample
AttachExample这个类没有继承BaseActivity,而是FragmentActivity,写到这好像感悟到了 为什么官方现在都推荐使用Fragment而不是Activity,因为Frag ...
- php的下载
前言:你的坚持,终将美好! 今天给大家说一下,php的下载,由于php的下载本身就是一个压缩包,解压缩后即可使用.所以,解压缩的过程不再赘述. 第一步:在浏览器的地址栏输入:http://www.ph ...
- Laravel 的中大型专案架构
好文:http://oomusou.io/laravel/laravel-architecture/
- 【BZOJ4199】[Noi2015]品酒大会 后缀数组+并查集
[BZOJ4199][Noi2015]品酒大会 题面:http://www.lydsy.com/JudgeOnline/wttl/thread.php?tid=2144 题解:听说能用SAM?SA默默 ...
- [转]C#静态方法与非静态方法的比较
http://wenku.baidu.com/view/4e1704084a7302768e9939e0.html C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他 ...
- 我的Android进阶之旅------>HTTP Content-type 对照表
HTTP Content-type 对照表 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流, 不知道下载文件类 ...