sdc基本概念-set_clock_groups

set_clock_groups命令用于指定时钟组之间的关系,如互斥或异步,从而在时序分析中忽略某些路径。物理互斥时钟不能在同一时刻存在,逻辑互斥时钟可能在设计中相连。异步时钟组间可选是否进行时序分析。该命令在处理多路复用时钟和不同时钟域时非常关键,可以避免不必要的时序路径分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set_clock_groups:指定clock groups 之间的关系是mutually exclusive or asynchronous ,这些clock 间的timing path 是不做分析的。

status  set_clock_groups

-physically_exclusive | -logically_exclusive | -asynchronous [-allow_paths]

[-name clock_group_name]

-group clock_list

[-comment comment_string]

其中-physically_exclusive 意思为:指定clock_group 与其他clock 是physically exclusive (物理互斥)。physically-exclusive clocks 不能同时存在在design physically。例如multiple clocks 被定义在相同的source pin 上。

-logically_exclusive 意思为:指定clock_group 与其他clock 是logically exclusive(逻辑互斥)。例如由mux 选择的多个clocks 是是逻辑互斥clocks ,但是在design 中彼此可能会相互连接。如果在design中的某个地方存在一些物理路径,则不应将这些多路复用clocks设置为logically_exclusive。

-physically_exclusive | -logically_exclusive | -asynchronous 三者是相互排斥的,你必须选择其中一个

-allow_paths意思为:启用指定clock groups之间的时序分析。如果未指定此选项,则disabled 定义的时钟组之间的timing分析。这个option 只适用在asynchromous clock groups。

-group:指定clocks 在一个group 里。在单个命令执行中可以多次使用-group选项.但是在执行单个命令时, 一个clock 只能在一个group 中出现。如果想要一个clock 出现在多个group 中,你必须执行set_clock_groups 多次。默认情况下,当定义了exclusive 或者asynchronous clock groups ,generated clock 和its master clock 不能在同一个group 中,如果有需要,将这些时钟明确地放在同一组中。

每个-group实例指定一组时钟,这些clocks 与其他group 中的clocks 互斥或异步。

如果只指定一个group,则意味着该group 中的clocks 与设计中的所有其他clocks是互斥或异步。

为这个组创建一个默认的其他组。一旦创建了新的时钟,它就会自动包含在这个组中。

如果为同一对时钟定义了多个时钟组关系,那么physically exclusive 优先级最高。

默认的话,这些clocks 间的timing paths 是不做timing analysis 的考虑,这与声明这些clocks 为false path 是相似的。

当你指定了两个clocks 作为exclusive or asynchronous 的话,就不需要手动在设置false path。

如果指定的两个clcoks 是exclusive or asynchronous的话,这两个clocks 已经设置了false path ,那么set_false_path 会被set_clock_groups  命令覆盖。其他的exceptions 不会影响。

解除set_clock_groups command 使用remove_clock_groups。报告design 中的clock groups 定义使用report_clock -group

set_clock_groups 仅支持当前的scenario.

具体例子如下:

1.定义两个asynchronous clock domains:

set_clock_groups -asynchronous -name g1 \

-group CLK1 -group CLK2

2.定义一个clock name 为CLK1 与design 中的其他clocks 为asynchronous 关系

set_clock_groups -asynchronous -group CLK1

3.下面分析在不手动加入false path 的情况下,同时分析每个寄存器的多个clocks.

假设一个设计包含两对相互排斥的多路复用时钟:CLK1和CLK2 ;CLK3和CLK4

如果每对时钟都是由不同的信号选择的,则必须执行两个命令才能同时分析所有四个时钟

set_clock_groups -logically_exclusive \

-group CLK1 -group CLK2

set_clock_groups -logically_exclusive \

-group CLK3 -group CLK4

如果每对时钟都是由相同的信号选择的,则必须执行一个命令就能同时分析所有四个时钟

set_clock_groups -logically_exclusive \

-group {CLK1 CLK3} -group {CLK2 CLK4}

### 如何使用 SDC 的 `set_clock_groups` 命令配置两个时钟的同步关系 在 Synopsys Design Constraints (SDC) 文件中,`set_clock_groups` 是用于描述不同时钟之间关系的重要命令之一。尽管其主要用途是用来定义异步或互斥时钟组的关系,但在某些特殊场景下也可以通过调整参数来间接实现同步关系。 #### 定义同步时钟的关键点 为了使两个时钟被认为是同步的,在设计约束文件中通常不需要显式调用 `set_clock_groups` 来声明它们之间的异步或互斥特性。这是因为默认情况下,所有未被分组到特定 `-asynchronous` 或 `-exclusive` 组中的时钟会被视为潜在的同步时钟[^1]。 然而,如果存在复杂的多时钟环境或者工具自动推导错误的情况,则可能需要手动干预并重新确认这些时钟间的关联性。具体操作方法如下: 1. **不将目标时钟放入任何异步/互斥组** 如果希望保持两者的同步状态,最简单的方式就是避免把涉及的时钟加入由 `set_clock_groups -asynchronous` 或 `-exclusive` 创建的集合之中。这样可以让静态时序分析器(STA) 自动假设二者共享某种形式的时间基准一致性。 2. **强制指定为同属一组(可选)** 虽然理论上没有必要特别指出哪些时钟应该同步工作,但如果确实遇到误解读取问题,可以通过下面这种方式明确表达意图: ```tcl set_clock_groups -group [list clk_A clk_B] ``` 这里的关键是仅提供单一的 `-group` 参数而省略掉其他诸如 `-asynchronous` 或 `-exclusive` 的修饰词。如此一来便告诉综合及时序验证流程这两路信号应当被视为相互协调运作的一部分[^2]。 3. **创建必要的主从生成关系(如有必要)** 对于那些实际是从属于某个共同源头派生出来的子时钟而言,还应确保正确反映了这种层次结构的信息给EDA软件知晓。比如利用 `create_generated_clock` 指定衍生比例以及相位偏移量等细节属性。 以下是基于上述原则的一个完整实例脚本片段供参考: ```tcl # 首先定义基本输入源时钟频率 create_clock -name core_clk -period 10.0 [get_ports sys_clk] # 接着针对内部节点建立相应的派生型时钟对象 create_generated_clock -name periph_clk \ -source [get_pins pll_inst/outclk0] \ -divide_by 2 \ [get_pins some_module/peripheral_clk_out] # 不要忘记检查最终形成的全部可用时钟清单 report_clocks # 明确告知工具我们期望periph_clk与core_clk维持一致节奏变化规律 set_clock_groups -group [list core_clk periph_clk] ``` 以上代码展示了如何构建一对既独立又彼此呼应的时钟体系,并且强调了即使是在复杂项目环境下也能轻松达成预期效果的方法论指导思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值