基本上我想第一步要做的事就是要決定最後的thoughput
如果很要求速度的話,那就看看能不能透過pipeline的方式
讓二三四級能夠將critical path縮短到10 period
而如果30 period的速度是可接受的話
就讓所有的block都操作在一樣的速度下
(即先做完的就等,直到最慢的做完)
HDL要寫的好跟程式要寫的好是一樣的
除了要了解語言的特性
譬如說在verilog裡面
assign a=b+c[1:0];
跟assign a=b+c; (假設reg [1:0] c; )
會有完全不一樣的結果(就是unsigned跟signed的差別)
軟工的問題也很重要
推薦一本"Reuse Methodology Manual"
算是HDL的軟工吧
有很多guideline
也有對整個flow的建議
testbench也多有著墨
※ 引述《saininniang (sob)》之銘言:
: verilog基本的語法大都已熟悉
: 但我遇到頻頸了...已經卡很久了
: 若只單寫一個演算法還沒問題
: 若這個電路的前後級是由好幾個不同執行週期的電路組合而成
: 我就不知怎麼結合
: 假設
: 第一級的演算法要跑10個週期
: 第二級 18
: 第三級 30
: 第四級 22
: .....................
: 前級的輸出為後級的輸入
: 各別寫的話還OK
: 但我沒能力將這些演算法整合成一個完整的電路
: 這四級的電路都由finite state machine寫成
: 每級都是由許多小module所結合
: 主電路又要再整合這四級
: 實在不會結合...
: 不知該怎樣去抓取資料...
: 因為每一級的執行週期都不一樣
: 另外
: 寫測試function的testbench有沒有更有效率的寫法?
: 寫testbench真的好累
: 最後發表一下寫hdl遇到很多的挫折
: 明明用軟體就能輕易實現,但hdl卻不會寫
: hdl的架構不會設計,coding很沒效率
: 越來越恐懼hdl.....0rz
: ※ 編輯: saininniang 來自: 220.133.142.122 (01/20 22:03)
: 推 pow:用一個FSM去控制四個FSM 01/21 06:45
: → pow:或者讓四個FSM之間可以互相溝通 01/21 06:45
: → pow:互相溝通的方式可以為 設一個FLAG bit...給前後級溝通用 01/21 06:46
: → pow:會講出「hdl卻不會寫」的意思就是說 你硬體設計還要下多一點 01/21 06:47
: → pow:功夫 coding絕對不難 01/21 06:48
: → pow:記得一定要把硬體設計到非常完全之後 在做CODING 01/21 06:50
: → pow:還要加上其他自己很熟悉的語言的輔助 Matlab? Excel? 01/21 06:50
: → pow:依照硬體運作的方式 把硬體寫在Matlab裡面去驗證功能 01/21 06:51
: → pow:因為MATLAB可以很快得到結果 所以可以用MATLAB來產生 01/21 06:51
: → pow:testbench@input跟硬體output的對照組 01/21 06:52
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.199.51