新闻中心

EEPW首页>嵌入式系统>设计应用> 基于系统芯片ZSU32的SoC芯片设计

基于系统芯片ZSU32的SoC芯片设计

作者: 时间:2010-09-21 来源:网络 收藏

  3.3.2 多时钟域约束

  时序检查默认以一个时钟周期为界,但对于,存在着一些多周期路径,在这些路径上,数据不需要在单时钟周期内到达终点。例如,clk30mhz和clk10mhz是同源的同步时钟,前者频率是后者的3倍,对从clk10mhz时钟域向clk30mhz时钟域传输数据的路径,采用如下命令:

  #按照3个周期(clk30mhz)进行

  #建立时间约束

  set_multicycle_path 3 -setup -start

  -from clk10mhz -to clk30mhz;

  对于异步时钟域之间的路径,不用进行同步的时序检验,应该将其定义为伪路径(false path),这样在逻辑综合时就不必浪费资源去优化。

  #将异步时钟e_clk和p_clk 之间的路径设置为伪路径

  set_false_path -from e_clk –to p_clk;

  set_false_path -from p_clk -to e_clk;

  3.3.3 时钟偏移

中时钟经过不同的传输路径,由于每条路经延时不一,导致从时钟源到达各个寄存器的始终输入端的相位差。这种由于空间分布而产生的偏差叫做时钟倾斜(clock skew)。此外,由于温漂、电子漂移的随机性,使时钟信号的边沿可能超前也可能滞后。这种具有时间不确定性的偏移称为时钟抖动(clock jitter)。偏移导致时钟信号到达各个触发器的时钟引脚的时间不一致,需要给予约束。

  #设置时钟偏移为0.4 ns

  set_clock_uncertainty 0.4 [all_clocks];

  3.4 端口约束

通过大量输入和输出端口与外界进行信息的传输,端口约束主要用于约束顶层端口相连的片内组合逻辑,包括确定输入延时、输出延时、输出负载、输出扇出负载、输入信号跃迁时间等。

  3.4.1 端口延时

  输入延时是指外部逻辑到电路输入端口的路径延时。输出延时是指输出端口到外部寄存器的路径延时。

  设置范例如下:

  #设置端口pci_ad13的输入延时为4.8 ns

  set_input_delay 4.8 -clock clk_main

  [get_ports {pci_ad13}];

  #设置端口pci_ad16的输出延时为3.6 ns

  set_output_delay 3.6 -clock clk_main

  [get_ports{pci_ad16};

  3.4.2 端口的驱动与负载

  端口的驱动和负载特性通过设置输入驱动单元、输入输出负载值以及信号跃迁时间等来描述。范例如下:

  #设置端口a7的驱动单元是BUFX2

  set_drive_cell -lib_cell BUFX2 -pin

  [get_ports {a7}];

  #设置端口d17的负载值为20 pf

  set_load -pin_load 20 [get_ports {d17}];

  #设置端口d0的输入信号上升时间是0.5 ns

  set_input_transition -rise -min 0.5

  [get_ports {d0}];

  3.5 面积和功耗约束

  Design Compiler的综合以时序优先,即优化完约束后才根据约束优化面积和功耗。初次综合时很难对面积进行评估,所以在第一次综合时设置优化目标为0,表示在满足时序约束的情况下最大努力地减小面积。待综合报告出来之后,根据初步的面积和功耗报告,修改数值,从而进一步优化。

  #面积设置

  set_max_area 0;

  #功耗的约束做类似的处理:

  set_max_total_power 0;


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭