Jos*_*tts 5 logic verilog synthesis vhdl
我已经完成了一个制作物理逻辑门的项目,现在正在寻找一种方法将任意程序转换为一系列逻辑门,以便我可以使用它们。
我需要一个程序,可以将某些任意函数(例如 f= x^2 -1)直接带入某些逻辑门系列。这已经存在了吗?
我找到了Verilog和其他几个开源选项,但它们似乎没有输出电路图。还有 Quartus II 和其他程序可以将VHDL代码转换为原理图。
我最好想要能直接将 Python/C++ 编译为逻辑门原理图的东西 - 但实际上任何语言都可以。
谢谢。
编辑:我的意思是物理门 - 他们使用滚珠轴承!
我拥有所有 1 位输入/1 位输出门和所有 2 位输入/1 位输出门。由此我还可以构造一个 MAJ 门来进行纠错。
小智 4
用 VHDL 编写任意代码,将 VHDL 转换为门就是综合工具的作用。
并不是你写的所有东西都是可以综合的;文件处理不能转换为门,任何通常使用堆的东西也不能转换为门(例如 C 中的 malloc 或指针,或 VHDL 中的“new”和访问类型)。浮点可以合成(使用 VHDL-2008),但它并不那么简单,因为signal A : Real; A <= 2.0 * X * X - 1.0;
您必须使用可合成浮点库中的类型。因此,可能会与该工具就您可以使用的编程语言子集进行一些协商。
但我在这里感觉到一个稍微不同的问题:如何将任意代码转换为我的逻辑门,在(问题中未描述的技术)中实现。这更难回答。
综合工具通常来自 FPGA 供应商等供应商,它们将任意代码转换为该供应商的逻辑门,而不是您的逻辑门。
理想的解决方案是创建一个描述逻辑技术的库,将其插入供应商中立的综合工具中,例如 Synopsys 的 Synplicity。然后 Synplicity 可以综合您的技术,而不是 FPGA 供应商的技术。
好的,但是创建该库的任务可能与为自定义 CPU 指令集编写后端并将该后端集成到 gcc 中的任务大致相同。除了 Synplicity 与 gcc 不同之外,它不是开源的,因此如果没有大量的财务和技术资源,以及来自主要 EDA 工具公司的帮助和内部文档,这几乎是不可能的。(在这一点上,我很高兴能得到真正做到这一点的人的纠正)
编辑(近 7 年后!)
Github 上提供的 GHDL(开源 VHDL 模拟器)已经发展了一个综合分支,因此这条路线现在可能更容易(我不会说简单!)或者可能是比下面路线的专有工具集更好的选择。它与YOSYS开源综合套件相结合。注意:我还没有尝试过,但对于这个问题的未来观众来说可能值得一看。
(编辑结束)
所以我们需要一种不同的方法。
回到 FPGA 合成工具:我将使用 Xilinx XST 作为示例。它将以某种 Xilinx 封闭内部格式合成为 Xilinx 原语。
然而,还有一个标记为“写入综合后网表”的选项。
使用它,您可以获得一个结构 VHDL 文件,该文件表示将任意代码转换为从库中提取的 Xilinx 门、触发器和其他元素Simprims
。
尝试编译它(例如在模拟器中)而不使 Simprims 库可见(例如library Simprims; use Simprims;
注释掉语句,您将得到一些有价值的东西:
编译错误列表
您可能会认为,没什么价值:只不过它实际上是实现您的设计所需的门、触发器和其他元素的列表。
如果您可以找到(或创建)这些元素与您所选技术中的元素之间的一对一对应关系,那么您可以将此网表映射到您的技术。
如果您没有等效的 Simprims 元素,则需要实现它们 - 例如,通过从您拥有的 2 输入 NAND 门网络创建 3 输入 AND 门。
使用您自己的 (VHDL) 库中的相应元素,而不是 Simprims,理论上您应该拥有一个可用的编译设计。
(您需要自己解决布局、布线、时序分析等问题。这并不是微不足道的,但为了这个问题,我假设您的“制作物理门的项目”已经涵盖了这些......)