感谢你提供的网站http://www.visual6502.org
这提供非常多的讯息与实作的细节,也让我有机会能更理解你的想法
我先称它为virtual chip来做区别。
我看了FAQ与slide,里面大致就回答这群作者能做到什么程度,
我把我认为重要的条件列在下面:
- if it has only one or two metal layers and was made before about 1985
- Before ~1980, chip design was a very manual process
- MOS 6502: there are "3510" trnsistors
- The simulator is running an idealized "digital" circuit based on our
model of the chip's network of transistors and wires.
- It does not account for "analog" behavior
(resistance, capacitance, leakage), has no propagation delays, and
transistors switch on and off instantaneously.
综上所述,我觉得你会混用transister-level与gate-level真的不能怪你
因为这真的是时空背景不同,但照历史脉络来看也能稍微理解为什么
TSMC/UMC晶圆代工与EDA产业的兴起了:因为制程发展与电晶体数量大增
那如果你要照这群作者的方法做逆向工程在现今的芯片可行吗?
我觉得人眼要识别现今的polygon(网页所用的词)及连接,可能要有写轮眼
不过我layout学得很差,也许真的有能人可以做到,但那个数量级太大了
这网页有提到他们想要自动化但是失败(How did automatic vectorization fail?)
所以我推论目前人必须很大程度参与到这逆向工程中。
对这我有个想法,这个project是在2010左右的成果,而CNN(卷积神经网络)在
ImageNet 2012比赛取得压倒性的胜利,时至今日computer vision已经很成功了
也许在这部分,CNN可以做到很好,然后把比较难辨识的再交给人类来做
可是呢,这又会需要foundry厂的know how了,因为你需要训练用的资料与标签
所以你想继续这条路,我给的建议是看看有没有人在做半导体的computer vision。
我知道S家有在做P&R的那方面的,也许C家做更多
然后拿他们的模型来做逆向工程并请专家帮你做最后的验证
之后的工作基本都可以用程式来解决了
至于有无法律问题就看看有没有人在你写程式时来查水表了XD
我写到这,我大概也能理解为什么没人做virtual chip emulator了
如果chip简单人类可能还可以做,但是现在的chip真的太大太复杂了
还有3D IC这种多一个维度的,加上公司求快。除非是要偷设计,
不然成本太高了太不经济了。
希望能给你一些帮助。
※ 引述《expiate (弯曲屎壳郎)》之铭言:
: 我有把你下面推文的两个连结看了以确定我尽量能理解你的目的。
: 文中你提到transistor-level与逻辑闸层(gate-level)模拟,
: 这两个用词在你的语境下所代表的意思有点模糊,
: 我用我的理解以及上篇crossbar的观点来定义一下:
: - transistor-level:
: 我认为你指的是电晶体电路,也就是layout或是spice
: 模拟用来跑电气特性,像是增益,匹配或是SNR
: 里面的基本元素就是半导体的材料物理模型(非我专长请专家补充)
: - gate-level:
: 逻辑闸电路,我这边理解的话就会指cell-based design
: 里面的电路表示会由boolean operator或是更复杂的像是
: AOI (And-Or-Inverter),基本上世界上的IC design house
: 的design flow主要都是走这条。
: /*** 我假设你有unlimited resources,要多快有多快的CPU,GPU和memory ***/
: 然后我只就数位电路作为我的目标,类比电路我是觉得更难就不深入了
: 基本上transistor-level的模拟我觉得要行得通,必须半导体物理材料模型要准
: 以及RC (resistance capacitance) model要准。也就是内部电气特性与外部
: routing的特性都要有准确的模型去计算才有可能实现。
: 如果你只是对于前几代制程的产品,我猜也许会有已经很成熟及准确的模型可以使用
: 但我很怀疑是否有公开的资讯你可以拿到,因为基本上这都是foundry的know how。
: 也许学校有资源可以让你接触,或是真的有很老亦或教学的的模型供你使用
: 假设你有了,其实就是把transistor-level的电路用这些模型表示
: 然后把彼此的输入/输出 接好跑模拟即可。最后在针对电气数值判断0/1
: 这是我觉得最困难的部分,完成后就都是0/1世界了。
: Gate-level的模拟跟对应的library有很深的相依性,也就是foundary所提供。
: 而且所需的电气特性都包含在每个cell里的table,所以像是slack或是slew
: 都可以快速查表得知。而EDA公司提供的sign-off product就是保证他们的验证
: 结果跟foundry厂生产出来的芯片会是一样的。
: 这就间接的指出其实可以透过gate-level模拟来实现你的目标。
: 然后这也是为什么FPGA会作为验证工具的原因。只要在FPGA功能验证完成,
: 剩下的就是跑flow然后tapeout,不用太担心会不一样。而且跟模拟比起来快太多了
: 你可以试试用VCS或是NCVerilog跑个一百万cycle就可以感觉为什么唯快不破了
: 通常IC design house在tapeout之前都可以估自己只能跑几次模拟。
: 也就是说bug或是timing issue如果不能在这几次模拟中解决就等著被X吧
: 以上是我觉得可以实现你目标的方法,如果真的能reverse回来的话。
: 下面是我觉得为什么GPU无法帮助太多的理由。
: 就我所知,目前没有EDA公司的产品里有使用GPU做加速,也许有功能但可能卖不出去XD
: 大部分都还是仰赖CPU及memory作为计算的主力。
: 这是因为GPU主要的计算典范是SIMD (Single Instruction Multiple Data)。
: 拿现今最流行的深度学习做例子,训练的步骤很明确feedforward,backpropagation
: 底下的计算主要都是矩阵运算,只是每次要做运算的data不一样。
: 回过头看gate-level电路模拟,如果把电路看成神经网络不也可以用GPU加速?
: 嗯其实GPU加速电路模拟真的是很容易想到,cuda已经出来十几年了,所以我想
: 肯定有人尝试但是没成功或是效果不如预期。这也是大家喷这么凶的原因。
: 不过我觉得大家太严苛了,难得有人正经问问题其实可以多点耐心分享所学的。
: 所以问题就该是为什么GPU不能像神经网络一样很好地加速电路模拟?
: 我个人思考的结果是:大部分的电路模拟不是线性的
: 我的思路是把combinational logic电路当作是神经网络,
: 而暂存器就是神经网络的layer。我能用矩阵来表示combinational logic吗?
: 我觉得光是处理gate个数与gate该在矩阵哪个位置我就觉得不好处理
: 当然你可能有别的思路,可是本质上你还是会受限于GPU计算的本质:
: 不擅长做复杂(heavy control dependency)的计算。
: 这也是我觉的目前EDA公司还是以cpu为主要算力的原因。
: 如果你有兴趣,你可以试着朝high performance computing/parallel computing
: 做更深入的理解。
: 最后,我只是抛砖引玉吸引炮火。
: 大家不要为难原po,我其实很欣赏这样愿意花时间苦干的人了
: 所以欢迎大家来喷我吧!最好发战文,大家一起学习!
: 也期许原po日后有什么进展欢迎分享给大家。
: ※ 引述《erspicu (.)》之铭言:
: : 不想走冤枉路.... 虽然有找过资料
: : 但找到的资料似乎是一些大学教授和硬件大厂的研界成果发表 论文也有
: : 感觉有很高的技术门槛 门槛高就算了 主要是怕结果实际上也没如同想像中好
: : 想问看看有没有已经走过这条路了 不知道通不通或是值不值得
: : 模拟器最传统的做法是cpu指令层的模拟 这种模拟方式好实作
: : 但正确度要拉高到一个水准 就需要很高代价
: : 尤其是cycle accurate的模拟问题
: : 要100%正确 就要层逻辑闸层去模拟运算结果
: : 但逻辑闸层运算量远大于指令模拟 主要是因为逻辑闸层运算都是同时间平行的
: : 这种特性很适合GPU 如果像是红白机MOS 6502的话逻辑闸数大概有4千5百多
: : 目前看到用一般cpu去计算逻辑闸模拟计算 非常多秒才能算出一张frame
: : 用指令集模拟的方式 每一秒可以算出好几百张frame 差异非常巨大
: : 不知道用gpu来模拟FPGA那种阵列 先不提有没有商用价值
: : 效率能不能提升到实用价值 不知道有没有人公司刚好有做过这研究
: : 之前移植专案做到一半 想研究一下改用GPU平行处理来处理逻辑闸模拟
: : 写一写 还没到改写的部分 还在JS PORTING到C#的阶段就丢著
: : 如过是死路 就算了
: : PS.我的理想是靠GPU模拟一张FPGA 拆芯片用放大镜把内部逻辑描绘出来
: : 然后烧到FPGA上 有一些骨灰迷是有在做这事情
: : 像这网站 http://www.visual6502.org
: : 但目前还没看到靠GPU模拟FPGA 把电路烧进去的
: : 现在还在移植 http://www.visual6502.org/JSSim/index.html 到C#版本