新闻  |   论坛  |   博客  |   在线研讨会
Lattice 时序约束
my17sky | 2013-05-27 09:48:26    阅读:2884   发布文章

 一.采用细致的hierarchy设计 

 1.top level模块仅仅应该包含 instantiation statement ,即在顶层模块中调用子 模块。 

 2.任何I/O instantiation 应当包含在 top level模块中。 

 3.任何输入输出器件的信号应当在top level模块中声明为:input、output和bi- directional Pin. 

二.Design partitioning  

1.在sub module中register所有输出,以保证所有sub module之间为同步设计,获 得更好的系统performance。    

2.保证相关逻辑和共享资源在同一个模块中实现。这样可以做到更好的资源共享,综合 工具只能针对一定数量的逻辑进行优化;综合工具可以在一个模块内部优化整个关键路径;跨模块的关键路径也不会被有效的优化。 3.针对不同地优化目标来划分模块:  ----分离关键路径和非关键路径可以获得更好的综合效果。  ----设计者应该在充分考虑性能需求和资源需求的基础上进行逻辑设计. 针对不同 的模块采用不同的优化策略,以避免相互影响。  ---对于那些并不需要high performance的模块应该放松约束以节省和预留关键资源 给关键路径。  

4.在单独的模块中保存实例化代码:  可以非常方便的在RAM行为仿真模型和实际的RAM块代码之际间进行切换. 5. 每个Module的规模在30~80 PFU:小模块由于资源有限不利于综合工具实施 “resource sharing”算法;规模太大的模块一旦更改其中的一小部分就会导致整个 模块重新综合,影响到一些不必要的逻辑,增大综合运行时间。

 三.Design registering  

1. 利用流水设计提高系统性能,把一个较长的路径分割为多个短路径,并在多个 时钟周期完成。  

2. IF statement and CASE statement比较    ----IF-THEN-ELSE statement 生成优先级的编码逻辑;CASE statement 实现 balance逻辑.  ----如果每个解码条件相对独立, 这两种声明方式实现的功能是一样的。        ----IF statement的主要缺陷:使设计不必要的复杂化;需要额外的逻辑来构建优  先级Tree。  ----如果解码条件不是相对独立的, 那末IF-THEN-ELSE结构会导致最低优先级的 output依赖于所有的控制条件。        ---如果output 不需要优先级控制, 最好使用CASE statement,因为CASE声明中  每个分支的优先级是一样的,每个分支output是并发的。 

四.避免不必要的Latch  

1.综合工具会引入Latch,如果存在不完全的条件表达式: 象IF-THEN-ELSE     声明中没有else子句.  

2.Latch会需要额外的资源,同时引入组合反馈环从而产生异步时序问题。

3.non-intended latch 是可以避免的:  使用时钟寄存器 或遍历所有的输入条件assign output 或是使用else  (when  others) 作为最后的子句。 

五.用时钟使能信号代替门控时钟  

1.门控时钟会带来很多时序问题,最典型的是clock skew.     

2.时钟使能guideline in Lattice FPGA:  ----Clock enable 只在触发器模式支持,Latch模式不支持. ----在一个slice中的触发器对共享一个Clock enable信号. ----所有的触发器支持positive clock enable输入.  ----默认的时钟使能的优先级高于同步set/reset. 但是可以编程实现set/reset 的优 先级高于clock enable.

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
我要建一座城,住着幸福的子民。
最近文章
Qt之QTextCodec使用方法
2017-04-13 10:34:02
Lattice 时序约束
2013-05-27 09:48:26
Quartus II警告及原因
2012-11-02 16:25:46
推荐文章
最近访客