![FPGA进阶开发与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/770/35808770/b_35808770.jpg)
1.5 区域约束
Logic Lock是Quartus软件的内嵌高级工具,它通过对FPGA物理位置进行区域约束来保持区域设计的固定性,以便继承以往的设计成果和进行团队化设计。
1.5.1 Logic Lock设计方法简介
Logic Lock即逻辑锁定,是指对一个模块进行独立的设计实现和优化,并将该模块的布局布线结果约束在FPGA的某个区域内,使得在进行其他模块的设计时不影响该逻辑区域的功能。这样便于成果继承和团队化设计。
1.Logic Lock设计目的
(1)提高设计性能。
合理地规划逻辑锁定区域,把物理位置关系密切的部分锁定在相邻的区域,可以缩短信号传输时间,节约布线资源,提高关键路径的工作频率。
(2)继承设计实现结果。
使用Logic Lock工具可以把已经满足时序和功能要求的模块实现结果作为下次编译的指导文件,将模块的实现结果反标注到下次编译优化中,从而保证这些成功的模块实现结果不随重新编译而变化。
(3)实现增量编译。
增量编译是指只对功能有所改变的部分进行重新编译优化,而将未改变的区域反标注到下次编译中,不进行重新编译优化。增量编译可以有效节约编译时间。
(4)实现团队化设计。
可以利用Logic Lock在项目开始时规划好每个成员的设计区域,在项目进行时对每个区域进行独立设计和优化,最后将编译结果整合到一起,实现团队化设计。
2.Logic Lock设计流程
大型、复杂或性能要求高的设计需要反复进行编译、时序分析、优化才能达到时序收敛(Timing Closure),满足设计的时序要求,这样做负担较大。而Logic Lock设计流程的输入模块是已经优化并达到时序收敛的子模块,通过Logic Lock设计方法继承以往编译与实现的结果,在保证每个子模块时序收敛的基础上,达到顶层模块时序收敛,从而使整个设计时序收敛。因此,Logic Lock设计流程能有效避免烦琐的设计编译、时序分析、优化循环工作,提高设计效率。Logic Lock设计流程如图1-51所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_56_1.jpg?sign=1739289595-NY6THdnvnNl9FFFGB0Q6j3kSoWBkcayx-0-0528da37a66894e0a8c68b91c8b9800b)
图1-51 Logic Lock设计流程
1.5.2 Logic Lock区域
区域是Logic Lock中的重要概念,指的是FPGA物理平面上已规划好的面积区域。这个区域中的逻辑是被锁定的。
1.Logic Lock区域的属性
Logic Lock区域的属性见表1-4。
表1-4 Logic Lock区域的属性
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_56_2.jpg?sign=1739289595-FJ0PqnZrfPaSB503PLIlAFspReGmRvbO-0-db7988a9ea0975f021e651b3d4f8d25e)
续表
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_57_1.jpg?sign=1739289595-rnyyi0avCxyG6SCnHofXdo8Lnjx8pUT9-0-097bee6c51d356ac61765d7d83629b55)
2.Logic Lock区域的创建
Logic Lock区域的创建流程如下。
(1)如图1-52所示,在“Project Navigator”窗口中,选择要设置区域约束的模块,然后在右键快捷菜单中选择“Logic Lock Region”→“Create New Logic Lock Region”命令。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_57_2.jpg?sign=1739289595-CGFMYAlDqgSzSHoOS8qELVXZB61MZR6V-0-22aea029b0b2198f5cb8c2ed4109b73b)
图1-52 创建Logic Lock区域
(2)如图1-53所示,已创建的Logic Lock区域会显示在“Chip Planner”窗口中。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_58_1.jpg?sign=1739289595-7TwQax4fcpaiQ4a3lo5G6B8q7V2BKc5R-0-f0423878dd0f8cb4152651a4ceeb57b2)
图1-53 显示已创建的Logic Lock区域
(3)在“Chip Planner”窗口中,可以设置Logic Lock区域的大小与位置,如图1-54所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_58_2.jpg?sign=1739289595-5VNcyA6pV096Typ01o4gfVbgWZLUFHuJ-0-fcdc2bbfadd9b3f6862479f3363b79bb)
图1-54 设置Logic Lock区域的大小与位置
用户也可以通过Logic Lock区域窗口设置区域约束,具体流程如下。
(1)在“Assignments”菜单中选择“Logic Lock Regions Window”命令,打开Logic Lock区域窗口,如图1-55所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_59_1.jpg?sign=1739289595-8rxL8I3JllleB83yhRUyUCgVsiUbRXxs-0-7b44a857b4bea621eb99fc7195324021)
图1-55 打开Logic Lock区域窗口
(2)在Logic Lock区域窗口中,用户可以设置相关参数,如图1-56所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_59_2.jpg?sign=1739289595-rirtHm29BM9n36zUFuYRjzpjLbZEREWI-0-d4be297d48d53d0e1b4d462c11e4b004)
图1-56 设置相关参数
(3)在Logic Lock区域名称上右击,在弹出的快捷菜单中选择“Locate Node”→“Locate in Chip Planner”命令,打开“Chip Planner”窗口,如图1-57所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_60_1.jpg?sign=1739289595-TTSUQYWiR5r5QlWT8HhAcbpJWpbp6vZH-0-076bc5cd081c76212364b0e6928ae8a8)
图1-57 打开“Chip Planner”窗口
(4)在“Chip Planner”窗口中可以看到设置好的区域,如图1-58所示。
![](https://epubservercos.yuewen.com/BA0170/19118080801963706/epubprivate/OEBPS/Images/40234_60_2.jpg?sign=1739289595-traLCV2kcqBWFDlf8SaTeFXf1gWfAdYl-0-dbbc9820fcf9bdff0060e4ea9fd4a100)
图1-58 在“Chip Planner”窗口中查看设置好的区域
3.Logic Lock区域规划
应根据Logic Lock区域的类型来规划区域的位置及大小。
可以由Quartus软件自动规划Logic Lock区域的大小及位置,也可以手动规划,手动规划要注意以下事项。
(1)如果Logic Lock区域中有关于引脚的约束,那么必须将该区域放到器件边缘部分,与引脚相邻,该区域中还必须包括I/O模块。
(2)Floating类型的Logic Lock区域不能重叠。
(3)Fixed类型的Logic Lock区域也不能重叠。
(4)Logic Lock的反标注信息只能在物理资源完全相同的器件中做区域锁定。