本文參考了高亞軍老師的課程,簡單介紹下HLS的流程
ESL的發展
電子設計經過了CAD–CAE–EDA的發展過程,並在後期提出來ESL概念,其實說到底,這也就是科學技術發展到一定水平後完全可以由機器來代替人們完成之前的複雜的過程,HLS的本質就是爲了縮短開發的週期,加快算法的實現。我們不太需要掌握具體的底層的語法即可完成設計,對於優化的過程來說,我們也只需在高層次的語言比如C C++上進行修改優化。而對於xilinx的工具鏈來說,有兩種進行這樣流程的實現。HLS和system generate
HLS開發好處
以往的硬件設計,我們必須來掌握Verilog 或者 VHDL的編寫的技巧,底層設計的核心,也就是並行性和時序。這也是有別於高層次語言的重要的點。
接觸Verilog時間較長的人都知道,在Verilog中,其代碼並不是一條指令,而是真真正正的電路。所以在開發的時候要清晰背後的代碼映射出來的真正的電路結構。
使用HLS,則對我們這方面的要求較低,我們之前考慮的這些將由軟件代替,我們只需要進行高層次的C代碼的編寫和測試即可。
HLS開發的階段
C到HDL階段,HLS幫我們完成模擬的是下面的兩個階段操作。
1.調度(scheduling)和控制邏輯的提取(control logic extraction)
每個時鐘週期的操作和操作需要幾個時鐘,進行對代碼實現的分工,就像值班表。
判斷是否可以並行操作進行電路優化
通常生成狀態機控制邏輯
2.映射(binding)
每個操作需要用什麼資源去實現,分配相對應的資源。
就如安排好了值班表,需要不同業務的人去值班一樣。
開發例子
調度(scheduling)例子
每個時鐘週期的操作和操作需要幾個時鐘,進行對代碼實現的分工
控制邏輯的提取(control logic extraction)例子
判斷是否可以並行操作進行電路優化
通常生成狀態機控制邏輯