PTT推薦

Re: [請益] 純軟往ic演算法易遇到的困難

看板Tech_Job標題Re: [請益] 純軟往ic演算法易遇到的困難作者
ThisIsTT
(我是踢踢)
時間推噓 3 推:3 噓:0 →:1

我自己也是從純演算法開發寫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演算法通常會遇到什: 麼困難?例如不能用迴圈、除法嗎?還是會有其他常見的問題,是否有實際舉例?
: 目前小弟修過電資相關課程只有
: 資結、演算法、數位影像處理、信號與系統、數位訊號處理、作業系統,此外就完全沒有: 其他電資的修課經驗了,對電路設計也沒什麼基本概念,
: 請問若要補強,建議可修哪些課程?計算機組織?
: 謝謝大家的閱讀~

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.232.69 (臺灣)
PTT 網址

labbat 01/24 19:39用systemc或pyverilog就好了,沒有人說要刻verilog

botnet 01/24 20:04你的內容讓我想起大二修課回憶

leoloveivy 01/24 23:22還好吧 testbench寫好對答案就好

quamtum 01/25 07:41testbench要寫完整就不容易,例如x86的testbench