IC设计中的时钟类型约束
  • :转载时请以超链接形式标明文章原始出处和作者信息及


     注明:如需转载,请注明作者出处,谢谢~,Author:pythonlong

     

    一个比较全的例子,不过还有比较多的特殊情况。

     

     

    对于PLL,会被认为是黑盒子,时钟穿越不过.所以需要对pll创建qtm模型,再在输出端create_generated_clock;或者在pll输出端create clock,设置source latency。

    create_clock -name SCLK -p 20   [get_ports Sclk]
    create_clock -name PCLK -p 8    [get_ports Pclk]

    create_generated_clock -name PCLKX8 -multiply_by 8 -source [get_attribute [get_clocks PCLK] sources] [get_pins PLL/pllx8]

    create_generated_clock -name sclk_gate -divide_by 1 -combinational -source [get_attribute [get_clocks SCLK] sources] [get_pins NAND2/Y]

    create_generated_clock -name clk_div2 -divide_by 2 -source [get_attribute [get_ports sclk_gate] sources]  [get_pins DIV/clk_div2]
    create_generated_clock -name clk_div4 -divide_by 4 -source [get_attribute [get_ports sclk_gate] sources]  [get_pins DIV/clk_div4]
    create_generated_clock -name clk_div8 -divide_by 8 -source [get_attribute [get_ports sclk_gate] sources]  [get_pins DIV/clk_div8]

    之只所以在门控时钟后面generated clock,因为到nand2的输出端有2条时钟路径。如果不指明使用组合逻辑路径,时序分析的时候clock latency会2个的,launch,capture会选择不同的latency。

    另:如果在选择器之前create clock,dc2007会认为只有一个时钟可以穿越。dc2009会认为2个时钟都可以穿越。

    set_clock_group -async  -group PCLK -group PCLKX8 -group {SCLK sclk_gate}  -group clk_div2 -group clk_div4 -group clk_div8

    set_clock_group -logical    -group PCLKX8 -group clk_div2
    set_clock_group -logical    -group clk_div8 -group SCLK

    set_clock_group -physical -group PCLKX8 -group clk_div2
    set_clock_group -physical -group clk_div8 -group SCLK

    有些后端工具不认识set_clock_group命令,可以将其转换成set_false_path

    对于选择时钟推荐做法:在选择器之前create clock,设置logical group。如果想使用比较真实的延迟计算,SI计算,将选择器之前的2个时钟设置成physical group,这个原因以后说下。如果master clock和generated clock之间没相关路径可以直接设置成async group。





郑重声明:资讯 【IC设计中的时钟类型约束】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——