set_output_delay 的问题
set_output_delay -max 32 -clock clk_3M[get_ports dataout_n_re]
set_output_delay -max 4.8 -clock clk_6_8M-add_delay [get_ports dataout_n_re]
set_output_delay -max 2.4 -clock clk_3_32M -add_delay [get_ports dataout_n_re]
set_output_delay -max 1.2 -clockCLOCK -add_delay [get_ports dataout_n_re]
后面的几个output delay要加-add_delay
我加了呀。
根据你输出port的产生时钟来设置其output_delay,若这个port本身就是输出时钟且在外部使用时不采样其他port输出信号的也可以不设
怎么个不对?具体写出来看看
模块还是top IO? 有相应协议参考吗
可能我之前没有把问题说清楚,大致结构是有个输入端choice_n,当他为不同值时,mux选择输出不同的输出,这几个输出的频率不一样。就是case(choice_n)
0:dataout1_3M;
1:dataout2_6M;
2:dataout3_48M;
3:dataout4_96M;
4:dataout5_192M;
可能我之前没有把问题说清楚,大致结构是有个输入端choice_n,当他为不同值时,mux选择输出不同的输出,这几个输出的频率不一样。就是case(choice_n)
0:dataout1_3M;
1:dataout2_6M;
2:dataout3_48M;
3:dataout4_96M;
4:dataout5_192M;
不对的地方在于它的时序有点串,就是最高频率192M的时钟关键路径和低频时钟串了。
“这样出来的结果不对” 是什么意思?按照你的意思,该输出port前面连接的是一个mux的输出,而mux的输入是多个clock 分别驱动的各自的寄存器产生的输出,该各自的输出最后到达该mux的各自对应的输入端,我觉得是这样的话你可以按照最快的那个时钟来约束该输出port,剩下的用set_max_delay,不知道这样符合你的要求不?
你的意思是不用-add吗?你说的set max delay 是指set_output_delay max还是组合逻辑的set max delay?
你就先按照频率最快的那个来约束,或者每个频率下都约束,但要加add_delay
对不起啊,点错了点了个反对。
具体的逻辑你没说清楚,但是你要想不串的话需要把这些定义的时钟设置为logical_exclusive或者physical_exclusive.