LogicLoom

LogicLoom

一个使用红石从Verilog设计构建逻辑电路的mod

杂项

LogicLoom

一个用于根据 Verilog 设计创建逻辑电路和计算机的 Minecraft 模组。

教程

逻辑综合

确保您已安装 Yosys。首先用 Verilog 2001 编写所需的逻辑。然后从本仓库获取 Synth.ys 脚本,并在文件顶部添加 read_verilog 命令以读取您的设计。

运行脚本,输入

> yosys Synth.ys

输出的 JSON 文件名为 mc_chip_maker.json,使用以下命令将其加载到 MC 中

>/logicloom load_json FILE_PATH

限制

不支持方向为 Inout 的端口。JSON 文件只能包含一个模块。仅读取第一个模块,其他模块将被忽略。

设置参数

布局步骤的最大迭代次数

>/logicloom param max_iter NUMBER_HERE

布局区域在 X 和 Y 轴上的大小

>/logicloom param chip_size NUMBER_HERE

在布局期间用于扩散单元的初始力乘数。应为一个较小的值。默认为 0.05

>/logicloom param force_const NUMBER_HERE

每次布局迭代时力乘数乘以的数值。应为一个较小的值。默认为 1.047

>/logicloom param force_mul NUMBER_HERE

当两点之间的直导线因障碍物无法布设时,会使用波传播算法。为了加速此算法,使用这两个点构造一个边界框。波可以超出此框的最大距离为 router_max_search。默认为 13

>/logicloom param router_max_search NUMBER_HERE

Yosys 生成文件的路径

>/logicloom load_json FILE_PATH

固定点

固定点与其他单元类似,但具有固定位置。它们用于按需移动设计。您需要至少添加一个固定点才能获得有用的结果。目前,您只能添加与设计中每个单元相连的固定点。

设计中的所有端口都是一个固定点,并与它们所连接的单元以权重 1 相连。

固定点的位置是相对于当前起点存储的。如果在添加固定点后改变起点,该固定点在世界中的位置将发生变化。

修改固定点使用

>/logicloom fixed_points

布局与布线(P&R)

放置逻辑门。确保区域完全平坦,且所有地面方块上都可以放置红石线和中继器。

>/logicloom place

放置导线

>/logicloom route

修复错误的导线

目前,导线放置算法存在缺陷,因此可以运行此命令来检查损坏的导线。此命令会比较所有导线的起点,并检查所有终端的电源是否相同。如果不是,则会在聊天中打印有问题的导线。如果有任何问题,通常都是明显的。

即使一切看起来运行正常,此命令也能发现坏导线,因为这些坏导线可能目前不影响输出。您必须等待所有信号传播完毕,否则会得到错误的结果。您可以使用 /tick sprint 加速此过程

>/logicloom misc check_wires

为确保所有导线都被检查,您可以使用此命令强制所有导线处于以下状态:

  1. 通电

    >/logicloom misc force_power_wire ON

  2. 断电

    >/logicloom misc force_power_wire OFF

  3. 恢复正常状态

    >/logicloom misc force_power_wire Normal

运行此命令后,请运行 check_wires 命令。