m0_74398970 2024-12-03 21:30 采纳率: 50%
浏览 42
已结题

一个DC综合脚本如下,仿真报错如下,是脚本输入信号格式有问题吗


 3. 创建时钟约束
# 设置时钟 clk 为 1Hz (1000000000ns周期)(在 clock_run 中)
create_clock -period 1000000000 [get_pins clk] 

# 设置 scl 为 interface_2 时钟,由 i2c_master 模块产生,频率为 400kHz(周期为2500ns)
create_clock -period 2500 [get_pins slave_top/scl] 

# 4. 设置时钟不同时序约束
#set_clock_latency -max 2 -pin [get_pins i2c_master/clk] 
#set_clock_latency -max 100 -pin [get_pins clock_run/clk]
#set_clock_latency -max 5 -pin [get_pins i2c_master/scl] 

# 5. 设置输入输出时序约束
# 对于输入信号,如 rst_n
set_input_delay -max 1 [get_pins top_slave/rst] 
set_input_delay -max 1 [get_pins top_slave/pulse] 

# 对于输出信号,设置输出延时
set_output_delay -max 1 [get_pins top_slave/int]

# 6. 设置双向端口( SDA)的时序
set_input_delay -max 1 -clock [get_clocks clk] [get_pins top_slave/sda]
set_output_delay -max 1 -clock [get_clocks clk] [get_pins top_slave/sda]

# 7. 设置时钟之间的关系
set_clock_uncertainty 0.1 [get_clocks slave_top/clk]
set_clock_uncertainty 0.1 [get_clocks slave_top/scl]


# 9. 对 interface_2 和 clock_run 之间的交叉信号设置时序约束
# interface_2 的输出信号连接到 clock_run 的输入信号
# interface_2 的时钟是 scl(400kHz),clock_run 的时钟是 clk(1Hz)

# 设置从 interface_2 到 clock_run 的交叉信号约束:
# 对于 interface_2 的输出信号,时序约束应该基于 interface_2 的时钟 scl
set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/{pw_data}]   # clock_run 输入信号 pwdata
set_output_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/pw_data]  # interface_2 输出信号 pw_data

set_output_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/out_prdata]   # clock_run 输出信号 prdata
set_input_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/out_prdata]  # interface_2 输入信号 pr_data

set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/reg_addr]   # clock_run 输入信号 reg_addr
set_output_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/reg_addr]  # interface_2 输出信号 reg_addr

set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/w_en]   # clock_run 输入信号 w_en
set_output_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/w_en]  # interface_2 输出信号 w_en

set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/r_en]   # clock_run 输入信号 r_en
set_output_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/r_en]  # interface_2 输出信号 r_en

set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/block]   # clock_run 输入信号 block
set_output_delay -max 1 -clock [get_clocks scl] [get_pins interface_2/block]

img

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的错误信息和脚本内容,这些问题主要出现在以下几个方面:

    1. 对象名称错误: 脚本中多次出现找不到对象或时钟的错误,如 Can't find object 'top_slave/rst'Can't find clock 'clk' in design 'slave_top'。请检查您的设计名称和对象名称是否正确,确保它们在脚本中的引用与实际设计一致。
    2. 参数格式问题: 有些命令中的参数格式不正确,如 set_input_delay -max 1 -clock [get_clocks clk] [get_pins clock_run/{pw_data}]。这里 -clock 后面应该直接跟时钟名称,而不是 [get_clocks clk] 这样的格式。同样的问题也出现在其他命令中。
    3. 命令结构问题: 脚本中的一些命令结构不正确,导致出现了 CMD-036CMD-012 的错误。比如在某些命令中,source objectsport_pin_list 必须只有一个元素,但实际提供的不符合要求。

    解决方案:

    • 检查并确保所有对象名称和时钟名称的正确性。
    • 调整命令参数格式,确保符合工具的要求。
    • 检查命令结构,确保符合工具的语法要求。

    由于具体的代码结构和设计细节不清楚,无法提供具体的修改建议。建议您根据以上提示检查脚本,并尝试修改不正确的部分。如果仍然存在问题,建议您提供更多关于设计结构和意图的信息,以便进一步分析和解决。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 12月3日