1. 程式人生 > >數字IC之-Verilog編譯器指示語句

數字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

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