定位新设备需要什么?
What is required to target a new device?
从高层次的角度来看,使用 Yosys 定位新设备需要什么?我想针对 Xilinx XC9572XL。我有一个这样的开发板:XC9572XL-CPLD-development-board-v1b. The architecture of this CPLD is fairly well covered in the Xilinx documentation here.
我想我需要做以下事情:
- 弄清楚如何让 Yosys 将设计综合为乘积和和基于 D 型触发器的网表。
- 从 Yosys 将网表输出为 BLIF 格式。
- 为 XC9572XL'fitter'(类似于 ICE40 FPGA 的 arachne-pnr)
- 输出一个 JEDEC 文件,其中包含需要设置的适当熔丝以实现上一步中的设计。
- 使用 xc3sprog 将设计闪存到 CPLD。
看起来有可能。难点在于构建 'fitter' 工具。该工具需要了解 CPLD 的资源,然后需要一些巧妙的算法来适应设计并以 JEDEC 格式输出所需的熔丝。一个重要的缺失部分是物理 CPLD 中的 'fuses' 和 JEDEC 文件中的熔丝之间的映射。这必须进行逆向工程。我注意到来自 Xilinx WebPACK ISE 的 JEDEC 文件包含 46656 个保险丝。其中每一个都映射回 CPLD 中的某个可配置节点。
我想知道其他人对这种方法的看法。我可能会遇到哪些类型的问题?
如果我要进行这项工作,我需要考虑哪些法律方面的问题?如果我决定要对由他们的工具生成的 JEDEC 文件进行逆向工程,我是否应该先写信给 Xilinx 并寻求他们的许可?
XC9572XL 是过时的部件...
您是否考虑过以 CoolRunner-II 系列为目标?我对它做了一些相当广泛的 RE (https://recon.cx/2015/slides/recon2015-18-andrew-zonenberg-From-Silicon-to-Compiler.pdf) 并理解了大部分比特流格式。一旦我找出最后一个时钟网络结构,将 Yosys 移植到它是我优先考虑的事情。
这些设备较新且功耗较低,而且内部架构更清晰且更易于定位(漂亮的常规 AND/OR 数组与一些专用于某些 OR 术语的 pterms 相比)。
无论哪种情况,请联系我进一步讨论,我很乐意合作。
编辑:Clifford 是对的,在美国(17 USC 906),逆转硅是明确合法的,而软件更像是一个灰色地带。 ISE 也是一个巨大的怪物,没有人会想对它进行逆向工程。芯片更容易理解。
虽然 XC9500XL 系列是一个较老的 350nm 系列(金属层更少,特征更大,在显微镜下更容易看到细节)它也使用了很多讨厌的模拟技巧,浮栅 EEPROM/flash 单元直接在输出上的逻辑和读出放大器。 CoolRunner-II 为 180nm,具有 4 或 5 个金属层,具体取决于密度,主逻辑阵列完全是数字的,并且更容易进行逆向工程。
- Work out how to get Yosys to synthesise a design to a Sum-of-Product and D-type Flip Flop based netlist.
- Output that netlist as a BLIF format from Yosys.
您可以使用逻辑级 BLIF 文件中的 ABC 进行两级综合。例如:
$ yosys -p synth -o test.blif tests/simple/fiedler-cooley.v
$ yosys-abc
abc> read_blif test.blif
abc> collapse
abc> write_pla test.pla
现在您可以编写一个程序,将 .pla 文件(加上可能由您需要编写的 yosys 插件生成的辅助信息)转换为 JEDEC 文件。
What legal aspects do I need to consider if I was to undertake this?
伊纳尔。廷拉
当您通过分析芯片供应商提供的软件对其进行逆向工程时:在这种情况下,它实际上取决于您所在的国家/地区。例如,在欧洲,您可以对软件进行逆向工程,甚至反汇编某些情况下,即使软件 EULA 禁止这样做。我会更深入地解释一下 here.
我认为在北美这样的地方,对芯片本身进行逆向工程(而不是分析软件)问题较小。
从高层次的角度来看,使用 Yosys 定位新设备需要什么?我想针对 Xilinx XC9572XL。我有一个这样的开发板:XC9572XL-CPLD-development-board-v1b. The architecture of this CPLD is fairly well covered in the Xilinx documentation here.
我想我需要做以下事情:
- 弄清楚如何让 Yosys 将设计综合为乘积和和基于 D 型触发器的网表。
- 从 Yosys 将网表输出为 BLIF 格式。
- 为 XC9572XL'fitter'(类似于 ICE40 FPGA 的 arachne-pnr)
- 输出一个 JEDEC 文件,其中包含需要设置的适当熔丝以实现上一步中的设计。
- 使用 xc3sprog 将设计闪存到 CPLD。
看起来有可能。难点在于构建 'fitter' 工具。该工具需要了解 CPLD 的资源,然后需要一些巧妙的算法来适应设计并以 JEDEC 格式输出所需的熔丝。一个重要的缺失部分是物理 CPLD 中的 'fuses' 和 JEDEC 文件中的熔丝之间的映射。这必须进行逆向工程。我注意到来自 Xilinx WebPACK ISE 的 JEDEC 文件包含 46656 个保险丝。其中每一个都映射回 CPLD 中的某个可配置节点。
我想知道其他人对这种方法的看法。我可能会遇到哪些类型的问题?
如果我要进行这项工作,我需要考虑哪些法律方面的问题?如果我决定要对由他们的工具生成的 JEDEC 文件进行逆向工程,我是否应该先写信给 Xilinx 并寻求他们的许可?
XC9572XL 是过时的部件...
您是否考虑过以 CoolRunner-II 系列为目标?我对它做了一些相当广泛的 RE (https://recon.cx/2015/slides/recon2015-18-andrew-zonenberg-From-Silicon-to-Compiler.pdf) 并理解了大部分比特流格式。一旦我找出最后一个时钟网络结构,将 Yosys 移植到它是我优先考虑的事情。
这些设备较新且功耗较低,而且内部架构更清晰且更易于定位(漂亮的常规 AND/OR 数组与一些专用于某些 OR 术语的 pterms 相比)。
无论哪种情况,请联系我进一步讨论,我很乐意合作。
编辑:Clifford 是对的,在美国(17 USC 906),逆转硅是明确合法的,而软件更像是一个灰色地带。 ISE 也是一个巨大的怪物,没有人会想对它进行逆向工程。芯片更容易理解。
虽然 XC9500XL 系列是一个较老的 350nm 系列(金属层更少,特征更大,在显微镜下更容易看到细节)它也使用了很多讨厌的模拟技巧,浮栅 EEPROM/flash 单元直接在输出上的逻辑和读出放大器。 CoolRunner-II 为 180nm,具有 4 或 5 个金属层,具体取决于密度,主逻辑阵列完全是数字的,并且更容易进行逆向工程。
- Work out how to get Yosys to synthesise a design to a Sum-of-Product and D-type Flip Flop based netlist.
- Output that netlist as a BLIF format from Yosys.
您可以使用逻辑级 BLIF 文件中的 ABC 进行两级综合。例如:
$ yosys -p synth -o test.blif tests/simple/fiedler-cooley.v
$ yosys-abc
abc> read_blif test.blif
abc> collapse
abc> write_pla test.pla
现在您可以编写一个程序,将 .pla 文件(加上可能由您需要编写的 yosys 插件生成的辅助信息)转换为 JEDEC 文件。
What legal aspects do I need to consider if I was to undertake this?
伊纳尔。廷拉
当您通过分析芯片供应商提供的软件对其进行逆向工程时:在这种情况下,它实际上取决于您所在的国家/地区。例如,在欧洲,您可以对软件进行逆向工程,甚至反汇编某些情况下,即使软件 EULA 禁止这样做。我会更深入地解释一下 here.
我认为在北美这样的地方,对芯片本身进行逆向工程(而不是分析软件)问题较小。