Design Compiler:精确映射(-exact_map选项)

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


在Design Compiler中使用compile或compile_ultra命令进行综合时,可以指定-exact_map选项,此时Design Compiler将进行精确映射。

当读取RTL设计时,Design Compiler内置的HDL Compiler将设计转化为通用时序单元SEQGEN(或者称为Generic/Unmapped Sequential Cell)和GTECH单元(或者称为Generic Technology Cell)、可综合操作符等组成的网表,如例1和图1所示。

复制代码
// 例1
module simple_register (
    input clk,      
    input rst_n,     
    input d,         
    output reg out     
);

always @(posedge clk) begin
    if (~rst_n) begin
        out <= 0;     
    end else begin
        out <= d;     
    end
end
 
endmodule

图1 通用时序单元和GTECH单元组成的网表

如果不使用-exact_map选项进行综合,Design Compiler会根据设计的实际情况,在将通用时序单元映射到具体的触发器或锁存器,并可能在考虑与之连接的GTECH单元的情况下,将部分组合逻辑功能融入触发器或锁存器的功能。图2和图3都有可能是例1的综合结果。

图2 例1的一种综合结果(非精确映射)

图3 例1的一种综合结果(非精确映射)

图3所示的综合结果使用了带同步复位端的触发器代替了图2中数据输入端前的数据选择器功能。

如果使用-exact_map选项进行综合,Design Compiler在进行映射时不会将与通用时序单元连接的GTECH单元考虑在内,配合sync_set_reset、sync_set_reset_local、sync_set_reset_all等综合指令一起使用,能使综合结果更加可预测,如下所示。

复制代码
// 例2
module simple_register (
    input clk,      
    input rst_n,     
    input d,         
    output reg out     
);

// synopsys sync_set_reset "rst_n"
always @(posedge clk) begin
    if (~rst_n) begin
        out <= 0;     
    end else begin
        out <= d;     
    end
end
 
endmodule

图4 通用时序单元和GTECH单元组成的网表

精确映射的结果是一个带同步复位端的触发器,如图5所示。

图5 例2的一种综合结果(精确映射)

但是,即使使用了精确映射,也无法保证引脚不交换。以例1为例,其触发器的下一状态方程为,如果令d为1,则,此时可以令,也就是说,把重新映射为,如图6所示。

图6 例1的一种综合结果(精确映射)

下面有几点需要注意。

1、使用精确映射不代表无法使用单元的反向输出引脚(QN),因为通用时序单元也有反向输出引脚(QN)。

2、精确映射会让Design Compiler在进行时序映射时更加保守,这可能会降低结果质量(QoR)。

3、如果使用了精确映射(-exact_map选项),综合时会自动禁止相位反转(Phase Inversion),即自动使用-no_seq_output_inversion选项选项,此时不允许Design Compiler将反相器移动并穿过寄存器边界。

4、如果在使用精确映射(-exact_map选项)的同时,启动了门控时钟优化(-gate_clock选项),对于那些参与时钟门控优化的寄存器,工具可能无法遵守精确映射的要求。

相关推荐
日晨难再20 天前
SDC命令详解:使用set_size_only命令进行约束
数字ic
景芯SoC芯片实战1 个月前
Hard Macro的Float Pin设错了,skew balance全白干
数字ic·soc后端
景芯SoC芯片实战1 个月前
12nm工艺下,6T-Turbo Cell的Filler到底该怎么插?
数据库·数字ic·dft·soc后端
日晨难再2 个月前
SDC命令详解:使用quit、exit和return命令进行控制
数字ic
日晨难再2 个月前
Formality:层次化验证(write_hierarchical_verification_script命令)
数字ic·formality
IC修真院3 个月前
高赞问题:NPU可不可以代替GPU?
gpu·ic设计·芯片·微电子·数字ic·npu
日晨难再3 个月前
SDC命令详解:使用report_hierarchy命令进行报告
数字ic
日晨难再4 个月前
Library Compiler:时序弧建模与约束全解析(三)
数字ic
日晨难再4 个月前
Library Compiler:时序弧建模与约束全解析(二)
数字ic