仅对英特尔可见 — GUID: nfb1575668004587
Ixiasoft
2.4.2.1. 高速时钟域(High-Speed Clock Domains)
2.4.2.2. 重构回路(Restructuring Loops)
2.4.2.3. 控制信号反压(Control Signal Backpressure)
2.4.2.4. 使用FIFO状态信号的流程控制
2.4.2.5. 包含skid缓冲器的流程控制
2.4.2.6. Read-Modify-Write存储器
2.4.2.7. 计数器和累加器
2.4.2.8. 状态机
2.4.2.9. 储存器
2.4.2.10. DSP模块
2.4.2.11. 一般逻辑
2.4.2.12. 求模与除法
2.4.2.13. 复位
2.4.2.14. 硬件重用
2.4.2.15. 算法要求
2.4.2.16. FIFO
2.4.2.17. 三元加法器(Ternary Adders)
5.2.1. 不足的寄存器(insufficient Registers)
5.2.2. 短路径/长路径(short path/long path)
5.2.3. 快进限制(Fast Forward Limit)
5.2.4. 回路(loop)
5.2.5. 每个时钟域一个关键链
5.2.6. 相关时钟组中的关键链
5.2.7. 复杂的关键链
5.2.8. 延伸到可定位的节点
5.2.9. 域边界入口和域边界出口(Domain Boundary Entry and Domain Boundary Exit)
5.2.10. 包括双时钟存储器的关键链
5.2.11. 关键链比特和总线
5.2.12. 延迟线
仅对英特尔可见 — GUID: nfb1575668004587
Ixiasoft
3.1. 独立编译子模块
您可以独立编译较大设计的子模块。独立编译较大的子模块使您可以获得子模块性能信息,并优化子模块以获得更好的性能。根据编译子模块的目标,您可以选择不同地处理I/O,如以下技术所述:
- 如果在编译过程中对子模块要求额外的Hyper-Optimization,那么要在wrapper中例化此子模块,并在每个输入和输出处添加两个或更多寄存器级。此技术支持将那些额外的寄存器重定时到电路中。如果Compiler将其他寄存器重定时到子模块中,那么可以修改完整设计来对子模块提供额外的寄存器。当在子模块上测试Hyper-Optimization以确定重定时的影响时(子模块是较大设计的一部分时),此方法很有用。
- 如果不需要进一步的子模块Hyper-Optimization,而是希望隔离一个模块以节省编译时间并在整个设计中模仿模块时序预算,那么定义虚拟管脚约束以使能对直接连接到子模块的寄存器进行重定时。指定相应的set_input_delay或set_ouput_delay SDC约束以解决内部时钟树的时钟偏斜。根据以下准则和示例,通过指定reference_pin或静态最大约束来解决内部时钟树的时钟偏斜问题:
SDC Argument | 指南 | 示例 |
---|---|---|
clock | 指定内部时钟域名称(无虚拟时钟)。此参数使Compiler将外部时钟和内部时钟视为相同,从而使I/O寄存器的重定时不再在边界上。 | reference_pin argument:
|
delay | 指定以下其中一个设置来解决内部时钟树的时钟偏斜:
|
图 79. 子模块编译输入约束示例
set_input_delay -clock [get_clocks clk_in] \
0 [get_ports data] \
-reference_pin [get_pins [int_reg|clk]
或者:
set insert_delay 1.3
set_input_delay -clock [get_clocks clk_in] \
$insert_delay [get_ports data]