zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    I firmly believe
    深度学习常见的专业术语
    阿里、网易和腾讯面试题 C/C++
    Winfrom中关于toolStrip工具栏中按钮背景的设置
    非常完善的Log4net详细说明
    C#中 Var关键字
    C#中Dynamic关键字
    Python中threading的join和setDaemon的区别[带例子]
    pycharm常用快捷键
    ABP发布到iis
  • 原文地址:https://www.cnblogs.com/-9-8/p/5365021.html
Copyright © 2011-2022 走看看