full_case & parallel_case
case中的full_case与parallel_case讨论:
1)术语介绍: 整个case模块叫做:case_statement,注释部分叫做case_statement_header
case (case_expression) //synopsys full_case/parallel_case
case_item1 :case_item_statement1;
case_item2 :case_item_statement2;
case_item3 :case_item_statement3;
case_item4 :case_item_statement4;
endcase
casez,使用“?”来表示任意值。
casex,使用“?,z”来表示任意值,不建议使用。
2)如果使用full_case显式表示not_full_case,其他的没有的case_item值,not care。
full_case下也可能会出现latch,not_full_case下也可能不会出现latch(可以通过赋初值来避免)
module addrdecode (m0,m1,ce,addr); module addrdecode (m0,m1,ce,addr);
output m0,m1,ce; output m0,m1,ce;
input [31:0]addr; //产生3个latch input [31:0]addr; //无latch
reg m0,m1,ce; reg m0,m1,ce;
always @(addr) always @(addr)
casez(addr) // synopsys full_case {m0,m1,ce} = 3'b111;
2'b10: {m0,m1} = 2'b10; casez(addr) // synopsys full_case
2'b11: {m0,m1} = 2'b01; 2'b10: {m0,m1} = 2'b10;
2'b0?: {ce} = 1'b0; 2'b11: {m0,m1} = 2'b01;
endcasez 2'b0?: {ce} = 1'b0;
endmodule endcasez
endmodule
3)如果使用parallel_case显式表示not_parallel_case,可能有一些值会over_lap。
parallel_case用在not_parallel的case中,其中overlap的部分如果有效,会导致gate_level电路工作异常。
建议尽量不显式使用full_case和parallel_case来进行建模,对于平行结构多使用case,有优先级的结构多使用if-else。
full_case & parallel_case的更多相关文章
- full_case parallel_case学习心得
一般情况下,DC把case语句综合成选择器电路,但也可能把case语句综合成优先权译码电路.有时,优先权译码电路是不必要的,这是可以使用“// synopsys parallel_case”引导语句强 ...
- OpenRisc-42-or1200的ALU模块分析
引言 computer(计算机),顾名思义,就是用来compute(计算)的.计算机体系结构在上世纪五六十年代的时候,主要就是研究如何设计运算部件,就是想办法用最少的元器件(那时元器件很贵),最快的速 ...
- system verilog的一些总结(从其他博客复制来的)
转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...
- Altera的几个常用的Synthesis attributes
各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...
- FPGA合成编码
1 决策树 于FPGA推断使用if else报表及case达到. a) if else 是有特权的,类似于优先编码(当两个条件同一时候成立,仅推断条件靠前的成立),所以当有特权条件时应该採用if el ...
- SystemVerilog语言简介(三)
15. 强制类型转换 Verilog不能将一个值强制转换成不同的数据类型.SystemVerilog通过使用'操作符提供了数据类型的强制转换功能.这种强制转换可以转换成任意类型,包括用户定义的类型.例 ...
- Altera的几个常用的Synthesis attributes(转载)
各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...
- 转载 关于case语句的优先级
对于这样的组合逻辑电路 always@(X) case(X) X1: X2: …… endcase 如果分支项包含变量X的所有取值情况,并且互相不重复,那么这样的情况,其实没有必要使用综合指令. (一 ...
- FSM之三--代码风格
FSM设计之一http://www.cnblogs.com/qiweiwang/archive/2010/11/28/1890244.html Moore型状态机与mealy型状态机相比,由于其状态输 ...
随机推荐
- 转:ASP.NET MVC扩展之HtmlHelper辅助方法
1.什么是HtmlHelper辅助方法?其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class F ...
- Ubuntu-1404 GDB 调试C++报错
问题 Ubuntu1404下,当用GDB调试C++程序时,报错ImportError: No module named 'libstdcxx' 解决办法 vim ~/.gdbinit #~/.gdbi ...
- Objdump-查看汇编指令
作用 Objdump可以用来看汇编指令 查看汇编指令 测试文件 编译指令 gcc -g -o objtest 1.8.c objdump -S objtest |more /main 查看结果
- Round and Round We Go
http://acm.hdu.edu.cn/showproblem.php?pid=1313 考查大整数与小整数相乘 #include<iostream> #include<cstd ...
- Introducing shard translator
Introducing shard translator by Krutika Dhananjay on December 23, 2015 GlusterFS-3.7.0 saw the relea ...
- Linux上使用SMART检测硬盘
SMART(Self-Monitoring, Analysis, and Reporting Technology)是一种普及度比较高的磁盘分析检测工具,磁盘运行过程中,该工具搜集磁盘的状态参数,如型 ...
- Asset Store
Asset Store 是用来供Unity开发者将自己的插件拿出来供大家有偿使用的一个平台. 报错信息: failed to import package with error cannot impo ...
- linux命令之tee
功能说明:读取标准输入的数据,并将其内容输出成文件.语 法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设 ...
- javascript中创建对象的方式总结
javascript中创建对象的方式总结 具体代码如下: //创建对象的方式: //创建方式一 var person=new Object(); person.name='jack'; person. ...
- 复合事件ready,hover,toggle
1.ready 2.hover 3.toggle(fn1,fn2, …)(被废弃) 2.hover(fn(){……},fn(){……}) 特别强调一点,hover的是mouseenter和mousel ...