本文列数一下在vivado中可能用到的约束方法和面对timing问题的解决办法。
(1)详尽的时钟约束
create_clock:和其他FPGA EDA tool一样,在vivado中timing约束越全越好,越细越好,而place约束可以很粗略或者省略调。约束中最常用的语句就是create_clock了,用语法create_clock -name NAME -period PRERIOD get_ports{***}来定义FPGA的外部输入时钟源头,这是FPGA所有MMCM或PLL的时钟源,一般对其只有周期和引脚的约束,需要注意的是引脚最好采用FPGA的时钟专用引脚,对xilinx 7系列FPGA来说就是有MRCC和SRCC属性的引脚,这类引脚可以直接驱动BUFG,保证时钟信号质量,如果设计中不得已采用了一般的GPIO作为时钟输入引脚,在约束中最好加上CLOCK_DEDICADED_ROUTE的property约束,否则在place中可能因为BUFG资源的互相挤压报出error。
create_generated_clock:创建衍生时钟的约束同样非常常用,在FPGA中的design很少只工作在同一时钟下,所以create_generated_clock经常用于对MMCM或者PLL,甚至Flip-Flop分频产生的时钟增加约束,语法create_generated_clock -name NAME -divide_by DIVIDE -multiply_by MULTI -source SOURCE_CLOCK get_pins{***},如果有相位差还要增加相位的参数, create_generated_clock很灵活,可以用rise和fall边沿来定义时钟,这样可以定义占空比特殊的时钟。
set_input_delay:对FPGA的input类型GPIO增加set_input_delay约束,语法set_input_delay -max MAX -clock get_clocks{***} get_ports{***}和set_input_delay -min MIN -clock get_clocks{***} get_ports{***},通常min和max都要加的,这两个delay参数来自于PCB走线。
set_output_delay:同样的,对FPGA output类型的GPIO增加set_output_delay约束,语法也类似set_output_delay -max MAX -clock get_clocks{***} get_ports{***}和set_output_delay -min MIN -clock get_clocks{***} get_ports{***}。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !