《ASIC设计规范.doc》由会员分享,可在线阅读,更多相关《ASIC设计规范.doc(3页珍藏版)》请在三一办公上搜索。
1、ASIC设计规范1.设计必须文档化。要将设计思路,详细实现等写入文档,然后经过严格评审通过后才能进行下一步的工作。这样做乍看起来很花时间,但是从整个项目过程来看,绝对要比一上来就写代码要节约时间,且这种做法可以使项目处于可控、可实现的状态。2.代码规范。a.设计要参数化。比如一开始的设计时钟周期是30ns,复位周期是5个时钟周期,我们可以这么写:parameterCLK_PERIOD = 30;parameterRST_MUL_TIME = 5;parameterRST_TIME = RST_MUL_TIME * CLK_PERIOD;.rst_n = 1b0;# RST_TIME rst_n
2、 = 1b1;.# CLK_PERIOD/2 clk |/clk|-|-10)禁止用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式,否则这种时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的复杂性。如FPGA的输入时钟是25M的,现在系统内部要通过RS232与PC通信,要以rs232_1xclk的速率发送数据。不要这样做:always (posedge rs232_1xclk or negedge rst_n)begin.end而要这样做:always (posedge clk_25m or negedge rst_n)begin.else if ( rs232_
3、1xclk = 1b1 ).end11)状态机要写成3段式的(这是最标准的写法),即.always (posedge clk or negedge rst_n).current_state = next_state;.always (current_state .).case(current_state).s1:if .next_state = s2;.always (posedge clk or negedge rst_n).elsea = 1b0;c = 1b0;c = 1b0;/赋默认值case(current_state)s1:a = 1b0;/由于上面赋了默认值,这里就不用再对b、c
4、赋值了(b、c在该状态为0,不会产生锁存器,下同)s2:b = 1b1;s3:c = 1b1;default:.3.ALTERA参考设计准则1) Ensure Clock, Preset, and Clear configurations are free of glitches. 确保时钟,复位和清除配置不被锁存。2) Never use Clocks consisting of more than one level of combinatorial logic. 3) Carefully calculate setup times and hold times for multi-Clo
5、ck systems.4) Synchronize signals between flipflops in multi-Clock systems when the setup and hold time requirements cannot be met.5) Ensure that Preset and Clear signals do not contain race conditions.6) Ensure that no other internal race conditions exist.7) Register all glitch-sensitive outputs.Synchronize all asynchronous inputs.9) Never rely on delay chains for pin-to-pin or internal delays.10)Do not rely on Power-On Reset. Use a master Reset pin to clear all flipflops.11)Remove any stuck states from state machines or synchronous logic.
链接地址:https://www.31ppt.com/p-4137712.html