作者invalid (everlasting)
站内Electronics
标题Re: [问题] 写HDL碰到的频颈...
时间Sun Jan 21 07:56:07 2007
基本上我想第一步要做的事就是要决定最後的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