综合约束:clocked_on与phi的区别
1、时钟描述clocked_on与phi的区别
在综合前后,对寄存器的时钟端描述不同,在综合时需要读取的sdc约束文件中,时钟端的描述为clocked_on,在综合后网表中对器件时钟端口描述是phi。同样是时钟端口,clocked_on是综合前,phi是综合后网表中器件的时钟端口。
2、利用for循设置约束
phi的使用
get_pins -hierarchical -filter "full_name =~ */raddr_gray_reg_*_/phi"
在综合完成后未退出的dc_shell中使用以上命令,可获得该综合模块所有afifo中寄存器raddr_gray的时钟端口。(前提条件时异步fifo中存在寄存器raddr_gray)
NOTE:
- 在综合后的dc_shell中使用clocked_on会报错
- rtl代码中存在的寄存器raddr_gray在综合后的名称是raddr_gray_reg_*
Clocked_on的使用
在综合读取的sdc约束文件中,时钟端描述需要用clocked_on。
set_max_delay [expr 0.5 * $period_500M ] -from [get_pins "se/se_ppu/ppu_afifo_64x200_wrapper_u*/raddr_gray_reg_*_/clocked_on"] \
-to [get_pins "se/se_ppu/ppu_afifo_64x200_wrapper_u*/synchronizer_u0/P6v6B_SYNC3R2_INST_*__P6v6B_SYNC3R2_U0/d"]
此约束用来设置afifo中寄存器raddr_gray同步的最大延时。Raddr_gray的时钟端描述为clocked_on。
NOTE:
- P6v6B_SYNC3R2_INST_*__P6v6B_SYNC3R2_u0为同步器中例化的物理器件名称,/d表示器件数据输入端口
- 本约束采用的是绝对路径,不能使用-hierarchical -filter full_name =~