DC综合的引导语句——synopsys translate_off/synopsys translate_on/parallel_case/full_case

DC综合的引导语句——synopsys translate_off/synopsys translate_on/parallel_case/full_case

最近在读他人verilog代码中发现存在//synopsys translate_off和//synopsys translate_on配套出现,原以为是注释代码,经过查找资料才发现这是设计者用来引导Design Complier进行综合的代码,下面详细介绍这些语句的用处。

synopsys translate_off/synopsys translate_on

实现功能:synopsys translate_off和synopsys translate_on之间的代码被DC忽略。

在这里插入图片描述
如上图所示,上面引用了新思一个的一个DesignWire IP卷积核,便是DC无法综合的一部分,让工具跳过,避免报错。下面附上了Synopsys 的有偿使用Ip核官网。
DesignWire IP

parallel_case

实现功能:对于一个case语句来说,DC既可以把他综合成优先权译码电路,又可以把他综合成选择器电路,很多时候是没有必要综合成优先权译码电路的,此时使用parallel_case告诉工具这里综合的是选择器电路。

always @(cs_state)
begin
    case(cs_state) // synopsys parallel_case
          2'b00: next_state = 2'b01;
          2'b01: next_state = 2'b00;
          2'b10: next_state = 2'b10;
          default: next_state = 2'b00;
    endcase
end

上面借鉴了一个应用实例,综合处选择器。

full_case

实现功能:在case语句中,所有条件并未列全,会综合处Latch,这是前端工程师所不愿意看到的。如果芯片并不会又case未列出的状态,可以使用full_case避免综合出latch。

always @(cs_state)
begin
    case(cs_state) // synopsys full_case
        2'b00: next_state = 2'b01;
        2'b01: next_state = 2'b00;
        2'b10: next_state = 2'b10;
    endcase

end

上面是一个case只列出3种情况,还有一种情况未列出,DC正常综合会使得最后一种情况出现时产生一个Latch,此时加入引导综合语句//synopsys full_case避免出现糟糕的一个情况。

你可能感兴趣的:(数字IC)