明确定义如何在 Xilinx XST 工具中使用 LUT 和切片?
我正在尝试实现 LUT 和切片的一些非常具体的行为,这些行为是用 VHDL 编写的,用于使用 XST 工具综合的 Xilinx Virtex 5 FPGA。我不知道我是否可以通过让工具推断我的意思来实现我的行为,那么我如何明确地指示这种情况发生呢?
我正在谈论 Virtex5 上 6 输入 LUT 的使用,其中 CLB 中有 4 个。
我想明确指出: - 一个 CLB 切片内 4 个 LUT 中每一个的输入 - 从 4 个 XORCY 路由“S”输出 - 指定“第一个”MUXCY (C0) 的输入 - “4th”MUXCY (Cn) 的路由输出 - 能够以特定顺序指定 CLB 的每个 LUT 的输入,因为它们显然是级联的。
理想情况下,我希望在 VHDL 中实例化具有所有输入和输出的“CLB”,并能够映射这些..
我对文档进行了大量研究,但没有找到任何真正的东西
I'm trying to implement some very specific behavior of LUTs and slices, written in VHDL for Xilinx Virtex 5 FPGA synthesized using XST tool(s). I don't know if I can achieve my behavior by having the tools infer what I mean, so how do I explicitly direct this to happen?
I'm talking about use of the 6-input LUTs on Virtex5, of which there are 4 of them in a CLB.
I want to explicitly state:
- Inputs to each of the 4 LUTs within ONE CLB slice
- Route the 'S' outputs from the 4 XORCYs
- Specify INPUT of the 'first' MUXCY (C0)
- Route OUTPUT of the '4th' MUXCY (Cn)
- Be able to specify the inputs of each LUT of the CLB in a specific order, since they obviously cascade..
Ideally I'd love to just instantiate a 'CLB' in VHDL with all inputs and outputs, and be able to map these..
I researched the documentation pretty heavily and haven't found anything really
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Saar 建议您使用 LUT6 显式实例化 LUT。我更喜欢使用 LUT_MAP 约束来控制技术映射。它需要更少的维护,并且您的 HDL 代码保持与设备无关且模拟器友好。
这是一个例子。
这使您可以编写任意组合逻辑并告诉综合 (XST) 该模块(最多 6 个输入、1 个输出)必须在单个 LUT 中实现。如果将其与 KEEP_HIERARCHY 和 RLOC 约束结合起来,您可以构建 RPM(相对放置的宏)。
在我的旧网站 www.fpgacpu.org 上有关于数据路径 RPM 的更多信息。例如,《高性能 FPGA 设计艺术》:http://www.fpgacpu.org/log/aug02.html #art
黑客快乐!
Saar suggests you use LUT6 to explicitly instantiate a LUT. I prefer to control technology mapping with a LUT_MAP constraint. It requires less maintenance and your HDL code remains device agnostic and simulator friendly.
Here is an example.
This lets you write arbitrary combinational logic and tell synthesis (XST) that this (up to 6-input, one output) module must be implemented in a single LUT. If you combine that with KEEP_HIERARCHY and RLOC constraints you can build up RPMs (relationally placed macros).
There is more information on RPMs for datapaths on my old web site, www.fpgacpu.org. For example, The Art of High Performance FPGA Design: http://www.fpgacpu.org/log/aug02.html#art
Happy hacking!
您也许能够使用 RLOC 和 BEL 约束来实现所需的行为。您可以将约束嵌入到 VHDL 中:
有关更多详细信息,请参阅 Xilinx 约束指南。
另请参阅 comp.arch.fpga 上的这篇文章,了解一些 VHDL 示例: http://newsgroups.derkeiler.com/Archive/Comp/comp.arch.fpga/2008-05/msg00560.html
You might be able to achieve the desired behaviour using RLOC and BEL constraints. You can embed the constraints in the VHDL:
Look in the Xilinx Constraints Guide for more details.
See also this post on comp.arch.fpga for some example VHDL: http://newsgroups.derkeiler.com/Archive/Comp/comp.arch.fpga/2008-05/msg00560.html