我自己也是从纯算法开发写C开始闯荡
现在从比较上层的Python, C/C++到Verilog都写过
我想你的问题可能会牵扯到很多个问题
1.你可能各语言熟悉度不高
今天同样一个问题用不同语言实现他的优缺点是什么
换句话说就是不同语言之间在乎的东西不一样
对单执行绪的C来说你可以很容易的去追踪程式执行的进程
像是演唱会一样大家只要关心舞台上的人事物怎么互动
但对RTL来说他是一堆很复杂的运算单元
大家只在乎自己的启动条件跟执行
就像是园游会的各摊贩, 乱中有序且各司其职的撑起一场活动
也因为大家同一时间只看自己的input, 因此会有很多资料依赖性的问题
必须去思考取得资料的正确性
不同data path间有没有存在delay等等
2.你可能对算法的熟悉度不高
算法只是一种概念, 背后设计的巧思可能会根据不同的实作方法变得有好有坏
比如bubble sort跟merge sort各自的优缺点是什么
这些优缺点在不同语言实作时又会是怎么样的状况
写C的时候的memory控管跟写RTL的memory控管分别又是怎么一回事
如果你的算法中有需要iterative回馈的
这回馈的延迟对算法会造成什么影响
浮点数精度会不会造成错误放大等等
结合以上两点就会常常发生沟通上的代沟
写C的算法工程师不知道怎么对RTL优化权衡
RTL的工程师也不敢或不会去对算法修整
所以一个好的算法又会写RTL的工程师应该是可以规划出一个良好的架构
在算法结果跟硬件之间取的良好的平衡
至于怎么定义一个好的平衡就是大哉问了
简而言之你应该要知道你写的程式其背后究竟是怎么运作的
举例来说C++ call by value/address/reference
你能了解到多细节, 还是只是单纯觉得这样写可以达到目的就好
写RTL的时候也是有for loop/generate可以用
但也是要清楚知道自己想描述的事情, 而不是制造怪物
※ 引述《dhm520 (哈囉你好吗)》之铭言:
: 大家好,小弟四大机械学资工硕,
: 此篇文主要想请教ic厂算法具体工作内容,以及资工背景往ic产业会遇到什么具体瓶颈
: ,
: 因小弟目前仍处在职涯摸索的阶段,希望发文请益的过程能对这个产业更加理解,
: 以网络上得到的资讯,算法的工作内容是撰写 c model 并交给数位转成rtl,而算法
: 与纯软的最大差异即:“需用硬件的思维写程式”,ic算法也不是资工系学的算法,
: 想请教的是:一般资工背景(我好像也不是纯资工背景)的学生撰写ic算法通常会遇到什
: 么困难?例如不能用循环、除法吗?还是会有其他常见的问题,是否有实际举例?
: 目前小弟修过电资相关课程只有
: 资结、算法、数位影像处理、信号与系统、数位讯号处理、作业系统,此外就完全没有
: 其他电资的修课经验了,对电路设计也没什么基本概念,
: 请问若要补强,建议可修哪些课程?计算机组织?
: 谢谢大家的阅读~