: 1. 驗證有二種, 一種是驗你的演算法好不好, 另一種是驗你的verilog寫得對不對
: 演算法的部份用C/C++寫會相對寫verilog好作事, C的免費compiler到處都有,
: 但你要用HDL compile(simulator) 就要在linux, 還要多佔一套VCS/NC-verilog
: 的lisence給你用, 你用免錢modelsim @windows 也是很麻煩.
: 再來你要用C產生結果/圖檔/影片, 就呼叫OpenCV一下子就作出來了. 而且執行時間
: 大約5秒,但是你用HDL一張1080P搞不好要跑一小時才會有結果,一天跑個幾次就下班
: 驗証verilog的部份, 是因為HDL需要考慮pipeline不是那麼容易, 另外你要驗証時,
: 不可能你一個一個驗, 你如果有一千支test case要測, 當然是用C寫個正確性相對高
: 的比對組, 在HDL模擬時用個perl 或C shell 來幫你自動比對, 你就可以去喝下午茶
其實小弟以前還有聽說過一個說法,
因為主要做影像IP 都是設計data path居多,
用不同的語言跟不同的人寫可以避免球員兼裁判的問題,
不過說真的這應該還是有風險吧~
以前曾經遇過寫c code的人不小心參數下錯, 兩個人算出來結果都是0
結果後來ECO E的很爽 =.=,
所以千萬不要相信驗證完就沒事情這種事情
不過如果寫RTL的人只是把 C code當 golden 照翻應該要寫錯機率還是挺高的
話說阿, 如果你是做Control 類的電路, 應該驗證方法就不是使用 c code惹
會有其他的方法讓你做驗證
: 2. 不叫硬體作, 那就是要叫ARM之類的CPU作, 可是他還要跑OS, 幫你處理所有的週邊介
: 面, 處理小圖可能還可以, 但1080P60張以上很難來得及的, 所以要有硬體的圖形加
: 速器, 就像以前的處理器還要外掛浮點運算器, 現在則是加GPU, 所以大部份的人都
: 是在作, 假設CPU來不及作的, 就作一塊硬體專門作你來不及作的,而且可以作很快.
其實如果是死的東西, 一般應該會用ASIC處理吧? 因為ASIC基本上速度快很多,
尤其是那種8K以上的東西應該非得用ASIC了吧.
不然CPU處理速度好像很難跟上那麼高速, 不過有些東西好像還是用軟體吧?
畢竟ASIC死掉以後可以叫SW 去 Work Around XD
: 3. 這個東西就要看他轉出來的品質好不好, 我想最大的問題是假設輸出結果都是正確的
: 如果你的硬要在40nm跑到350Mhz你到不了怎麼辦,或是你轉出來的作不到1080P60張,
: 又該怎麼辦, 所以這個現階段拿來轉小模組或產生一些相對簡單的東西, 的確是一個
: 可以加速開發的好工具. 但終究還是要有人去精進你的硬體.
其實我覺得在大公司有個比較重要的就是可維護性, 別說機器轉的code,
連人寫的code也得有可維護性
以前我很喜歡寫技巧性的Code, 主管會把你電個半死, 一開始覺得是別人自己看不懂,
怪我喔, 我面積就是比你小一半怎樣, 老子爽
可是其實當你幾個月後發現你自己也看不懂你自己的code(不過其實我是覺得還好),
但是寫很難的Code主要是以後別人一直來問你這在寫什麼, 你就會覺得煩死了
然後你就覺得以後還是寫的平易近人點好了
就會發現可維護性其實還是挺重要的