Re: 問一個名詞的定義
先感謝其他網友的意見。
我剛才在google上充電,似乎漸漸有點感覺了。
我還瀏覽了這些papers:
1. MATLAB/Simulink Based Hardware/Software Co-Simulation for Designing Using
FPGA Conured Soft Processors
2. Methodology for Hardware/Software Co-verification in C/C++
Hardware/Software Co-Simulation/Co-Verification
這些名詞其實來自於Embedded System這個領域。
Software在此並不是指software的simulation(例如使用MATLAB作通訊模擬),
而是指在Embedded System開發的程式(Application),例如用C/C++開發程式。
Hardware在此是指執行上述software的硬體部分,例如MicroBlaze、PowerPC。
Co-Simulation指的是用software對所設計出的hardware/software一起進行模擬。
比如說在模擬階段時,硬體設計的部分可以使用
Instruction set simulator(ISS, 它本身是個軟體),軟體程式可以用C/C++寫。
所以簡單的說"Simulation"一個特性就是全部要被模擬的東西都是軟體做的。
至於Verification這個詞是指「驗證正確性」,
並不是指download到硬體板後的執行結果叫做驗證。
"simulation"本身只算是個對設計出來的軟硬體使用軟體進行虛擬的執行,
它並不關心你設計出來的軟體體是否正確。
而我們對simlation、configure FPGA、甚至把IC做出來,
然後對它們運算的結果進行「功能是否正確」的檢查叫做驗證。
請看Wikipedia對Functional verification的解釋:
http://en.wikipedia.org/wiki/Functional_verification
其中有一項是:
Logic simulation simulates the logic before it is built.
所以configure FPGA後的"階段"一般稱之為in-circuit verification而不稱作
in-circuit simulation的原因是FPGA是硬體不是軟體,
Simulation是用軟體在執行的,它算是一種"運算動作"。
嚴格來講,使用FPGA"運算的動作"不能稱之為驗證,
驗證指的是檢查正確性之類的動作,而"運算"本身與功能正確與否無相關。
IC設計流程習慣在某些階段講"運算的動作"比如說
Behavioral simulation、Gate-level simulation,
但卻在configure FPGA時候來個in-circuit verification的確會容易造成
一些人誤解verification為"FPGA運算的動作"這樣的錯誤觀念。
事實上整個IC設計流程,Behavioral simulation、Gate-level simulation
改成Behavioral verification、Gate-level verification也是OK的,
雖然意義上會有變化。
至於我原來的VeriLink問題該怎麼答?
我只能說它不能被叫做Co-simulation。
用HW/SW Co-verification這個名詞似乎可行。
比如說我拿VeriLink用在我與同學之前寫的一個DDFS(一個可以產生Sin/Cos的東西)。
用Simulink調整DDFS的頻率控制FCW
(這可視為一種軟體設計,一個個FCW instruction sets送進DDFS processor)。
但DDFS是在FPGA上執行的,所以用"verification"這詞對軟硬體而言都是OK的。
以上是我的心得。
--
西方三聖:http://p8.p.pixnet.net/albums/userpics/8/3/553683/1193661731.jpg

《佛說阿彌陀經》http://web.cc.ncu.edu.tw/~93501025/amtf.doc
《觀世音菩薩普門品》http://web.cc.ncu.edu.tw/~93501025/pmp.doc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.221.31
討論串 (同標題文章)