数字IC之-Verilog编译器指示语句

数字IC之-Verilog编译器指示语句

     设计者在写设计代码时,有时可能针对仿真写一些语句,这些语句可能是不为DC所接受,也不希望DC接受;设计者如果不对这些语句进行特殊说明,DC读入设计代码时就会产生语法错误。另一种情况是,设计者在写设计代码,有些设计代码是为专有的对象写的(如公司内部),这些专有的设计代码可能不希望被综合。Synopsys提供了引导语句,设计者可以使用这些引导语句控制DC综合的对象

   可以利用HDL描述中的一些特定的注释语句来控制综合工具的工作,从而弥补仿真环境和综合环境之间的差异,这些注释语句称为编译器指示语句。

    Verilog编译器指示语句

  1.  translate_off/ translate_on

这组语句用来指示DC停止翻译 “//synopsys...translate_off”之后的Verilog描述,直至出现 “//synopsys translate_on”。当Verilog代码钟含有供仿真用的不可综合语句时,这项功能能使代码方便地在仿真工具与综合工具之间移植。 

1translate_off/ translate_on指示语句的使用):

//synopsys translate_off

//synopsys translate_on 

2.   parallel_case/ full_case

DC可能使用带优先级的结构来综合Verilog的case语句,为避免这种情况,可以使用“//synopsys...parallel_case”指示DC将case语句综合为并行的多路选择器结构。

parallel_case指示语句的使用):

always @ (state)

        case (state)    //synopsys parallel_case

            2’b00:        new_state = 2’b01;

            2’b01:        new_state = 2’b10;

            2’b10:        new_state = 2’b00;

            default:       new_state = 2’b00;

        endcase

另外,Verilog允许case语句不覆盖所有可能情况,当这样的代码由DC综合时将产生锁存器。为避免这种情况,可以使用“//synopsys full_case”指示DC所有可能已完全覆盖。

例2 full_case指示语句的使用):

always @ (sel or a1 or a2)

        case (sel)    //synopsys full_case

            2’b00:    z = a1;

            2’b01:    z = a2;

            2’b10:    z = a1 & a2;

        endcase

//==========================================================================================

猜你喜欢

转载自blog.csdn.net/weixin_32087301/article/details/81475289
今日推荐