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的更多相关文章

  1. full_case parallel_case学习心得

    一般情况下,DC把case语句综合成选择器电路,但也可能把case语句综合成优先权译码电路.有时,优先权译码电路是不必要的,这是可以使用“// synopsys parallel_case”引导语句强 ...

  2. OpenRisc-42-or1200的ALU模块分析

    引言 computer(计算机),顾名思义,就是用来compute(计算)的.计算机体系结构在上世纪五六十年代的时候,主要就是研究如何设计运算部件,就是想办法用最少的元器件(那时元器件很贵),最快的速 ...

  3. system verilog的一些总结(从其他博客复制来的)

    转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...

  4. Altera的几个常用的Synthesis attributes

    各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...

  5. FPGA合成编码

    1 决策树 于FPGA推断使用if else报表及case达到. a) if else 是有特权的,类似于优先编码(当两个条件同一时候成立,仅推断条件靠前的成立),所以当有特权条件时应该採用if el ...

  6. SystemVerilog语言简介(三)

    15. 强制类型转换 Verilog不能将一个值强制转换成不同的数据类型.SystemVerilog通过使用'操作符提供了数据类型的强制转换功能.这种强制转换可以转换成任意类型,包括用户定义的类型.例 ...

  7. Altera的几个常用的Synthesis attributes(转载)

    各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...

  8. 转载 关于case语句的优先级

    对于这样的组合逻辑电路 always@(X) case(X) X1: X2: …… endcase 如果分支项包含变量X的所有取值情况,并且互相不重复,那么这样的情况,其实没有必要使用综合指令. (一 ...

  9. FSM之三--代码风格

    FSM设计之一http://www.cnblogs.com/qiweiwang/archive/2010/11/28/1890244.html Moore型状态机与mealy型状态机相比,由于其状态输 ...

随机推荐

  1. oracle中截取某个字符前面和后面的值

    创建测试表及数据 create table test(name varchar2(10)); insert into test values ('2-15');insert into test val ...

  2. 20145211 《Java程序设计》实验报告二:Java面向对象程序设计

    实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 单元测试 面向对象三要素 设计模式初步 练习 实 ...

  3. EntityFramework更新数据

    1.TryUpdateModel 使用很方便,但实际更新数据的过程还是先select,再update.另外发现一个问题,对于input的type类型file的字段,无法使用TryUpdateModel ...

  4. [LeetCode]题解(python):043-Multiply Strings

    题目来源 https://leetcode.com/problems/multiply-strings/ Given two numbers represented as strings, retur ...

  5. angularJs的工具方法

  6. Aspose.word在asp.net mvc中如何使用的个人总结

    项目需要导出数据到word中,因为要导出的是表格形式,所以先在word中绘制好了表格,然后按照以前的代码改了改,发现不行.出现的问题如下: 这是当时的代码,问题的症结所在就是Response上.这段代 ...

  7. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...

  8. Java Map操作

    Map:键必须是唯一 同步方法:Map m = Collections.synchronizedMap(new TreeMap(...)); Hashtable:基于散列表的实现 允许空键空值 线程安 ...

  9. 读取Excel文件的版本

    读取xls文件和xlsx文件创建的版本号. 虽然xlsx声明的是向前兼容,但是不知道OleDb是不是也是这样,没有办法所以要读取文件版本,限定只能读取Excel2007保存的文件. using ICS ...

  10. python 环境问题

    1. 查看python安装的模块及版本 $pip freeze Babel== Flask== Flask-HTTPAuth== Flask-RESTful== Flask-SQLAlchemy==2 ...