用于硬件解码的寄存器聚合

Varun Rao, Zachary D. Sisco
{"title":"用于硬件解码的寄存器聚合","authors":"Varun Rao, Zachary D. Sisco","doi":"arxiv-2409.03119","DOIUrl":null,"url":null,"abstract":"Hardware decompilation reverses logic synthesis, converting a gate-level\ndigital electronic design, or netlist, back up to hardware description language\n(HDL) code. Existing techniques decompile data-oriented features in netlists,\nlike loops and modules, but struggle with sequential logic. In particular, they\ncannot decompile memory elements, which pose difficulty due to their\ndeconstruction into individual bits and the feedback loops they form in the\nnetlist. Recovering multi-bit registers and memory blocks from netlists would\nexpand the applications of hardware decompilation, notably towards retargeting\ntechnologies (e.g. FPGAs to ASICs) and decompiling processor memories. We\ndevise a method for register aggregation, to identify relationships between the\ndata flip-flops in a netlist and group them into registers and memory blocks,\nresulting in HDL code that instantiates these memory elements. We aggregate\nflip-flops by identifying common enable pins, and derive the bit-order of the\nresulting registers using functional dependencies. This scales similarly to\nmemory blocks, where we repeat the algorithm in the second dimension with\nspecial attention to the read, write, and address ports of each memory block.\nWe evaluate our technique over a dataset of 13 gate-level netlists, comprising\ncircuits from binary multipliers to CPUs, and we compare the quantity and\nwidths of recovered registers and memory blocks with the original source code.\nThe technique successfully recovers memory elements in all of the tested\ncircuits, even aggregating beyond the source code expectation. In 10 / 13\ncircuits, all source code memory elements are accounted for, and we are able to\ncompact up to 2048 disjoint bits into a single memory block.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":"39 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-09-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Register Aggregation for Hardware Decompilation\",\"authors\":\"Varun Rao, Zachary D. Sisco\",\"doi\":\"arxiv-2409.03119\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Hardware decompilation reverses logic synthesis, converting a gate-level\\ndigital electronic design, or netlist, back up to hardware description language\\n(HDL) code. Existing techniques decompile data-oriented features in netlists,\\nlike loops and modules, but struggle with sequential logic. In particular, they\\ncannot decompile memory elements, which pose difficulty due to their\\ndeconstruction into individual bits and the feedback loops they form in the\\nnetlist. Recovering multi-bit registers and memory blocks from netlists would\\nexpand the applications of hardware decompilation, notably towards retargeting\\ntechnologies (e.g. FPGAs to ASICs) and decompiling processor memories. We\\ndevise a method for register aggregation, to identify relationships between the\\ndata flip-flops in a netlist and group them into registers and memory blocks,\\nresulting in HDL code that instantiates these memory elements. We aggregate\\nflip-flops by identifying common enable pins, and derive the bit-order of the\\nresulting registers using functional dependencies. This scales similarly to\\nmemory blocks, where we repeat the algorithm in the second dimension with\\nspecial attention to the read, write, and address ports of each memory block.\\nWe evaluate our technique over a dataset of 13 gate-level netlists, comprising\\ncircuits from binary multipliers to CPUs, and we compare the quantity and\\nwidths of recovered registers and memory blocks with the original source code.\\nThe technique successfully recovers memory elements in all of the tested\\ncircuits, even aggregating beyond the source code expectation. In 10 / 13\\ncircuits, all source code memory elements are accounted for, and we are able to\\ncompact up to 2048 disjoint bits into a single memory block.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":\"39 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-09-04\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"arXiv - CS - Programming Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/arxiv-2409.03119\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2409.03119","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

摘要

硬件反编译逆转逻辑综合,将门-线-数字电子设计或网表转换回硬件描述语言(HDL)代码。现有技术可以反编译网表中面向数据的功能,如循环和模块,但在处理顺序逻辑时却很困难。特别是,这些技术无法反编译内存元素,因为内存元素被分解为单个位,并在网表中形成反馈回路,这给反编译带来了困难。从网表中恢复多位寄存器和内存块将扩大硬件反编译的应用范围,特别是在重定向技术(如将 FPGA 转换为 ASIC)和反编译处理器内存方面。我们提出了一种寄存器聚合方法,用于识别网表中数据触发器之间的关系,并将其归类为寄存器和存储器块,从而生成实例化这些存储器元素的 HDL 代码。我们通过识别共同的使能引脚来聚合触发器,并利用功能依赖关系推导出由此产生的寄存器的位序。我们在 13 个门级网表数据集上评估了我们的技术,其中包括从二进制乘法器到 CPU 的各种电路,并将恢复的寄存器和内存块的数量和宽度与原始源代码进行了比较。在 10/13 个电路中,所有源代码内存元素都得到了考虑,而且我们能够将多达 2048 个不相连的比特压缩到单个内存块中。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Register Aggregation for Hardware Decompilation
Hardware decompilation reverses logic synthesis, converting a gate-level digital electronic design, or netlist, back up to hardware description language (HDL) code. Existing techniques decompile data-oriented features in netlists, like loops and modules, but struggle with sequential logic. In particular, they cannot decompile memory elements, which pose difficulty due to their deconstruction into individual bits and the feedback loops they form in the netlist. Recovering multi-bit registers and memory blocks from netlists would expand the applications of hardware decompilation, notably towards retargeting technologies (e.g. FPGAs to ASICs) and decompiling processor memories. We devise a method for register aggregation, to identify relationships between the data flip-flops in a netlist and group them into registers and memory blocks, resulting in HDL code that instantiates these memory elements. We aggregate flip-flops by identifying common enable pins, and derive the bit-order of the resulting registers using functional dependencies. This scales similarly to memory blocks, where we repeat the algorithm in the second dimension with special attention to the read, write, and address ports of each memory block. We evaluate our technique over a dataset of 13 gate-level netlists, comprising circuits from binary multipliers to CPUs, and we compare the quantity and widths of recovered registers and memory blocks with the original source code. The technique successfully recovers memory elements in all of the tested circuits, even aggregating beyond the source code expectation. In 10 / 13 circuits, all source code memory elements are accounted for, and we are able to compact up to 2048 disjoint bits into a single memory block.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信