3.2.2 多时钟与亚稳态的解决
在通常的UART设计中,由于CPU时钟与UART的数据接收、发送时钟是处在不同的时钟域,时钟频率和相位上存在差异,导致时序不能满足建立时间和保持时间的要求,即数据的输出处于不确定状态,从而出现时序违反(slack<0)和亚稳态。本文通过采用同步电路设计,有效地解决时序和亚稳态的问题[6][7]。
3.2.3 UART 核的综合与优化
通过对RTL级进行优化,再仿真验证正确后,可以对UART核进行综合优化。本文采用SYNOPSYS软件的design compile进行综合优化,利用tcl(tool command language)语言编写综合优化的脚本。采用0.35um的工艺,将时钟周期设置为5ns,在满足时序(slack>0)的基础上经过综合优化,生成的时序、功耗、面积等参数如表1所示,优化后的功耗和面积满足了ASIC/SoC的要求。
表1 接收/发送模块综合得出的功耗、面积、时序等参数
4 结束语
本文利用SYNOPSYS软件设计IP核,更适合用于ASIC/SoC设计,而采用传统的EDA软件实现的则适合用在FPGA上,不适合用来做掩膜生成ASIC/SoC。本UART核的逻辑设计采用VerilogHDL语言,用状态机和移位寄存器设计使整个设计的时序清晰,同时减少了接收模块停止位的判断,通过对RTL级优化避免了毛刺、亚稳态、多时钟等问题,仿真和验证采用的是SYNOPSYS软件的VCS,通过对时序、功耗、面积的综合考虑,最后通过SYNOPSYS软件的design compile 综合优化完成的IP 核可成功应用到ASIC/SoC 设计上。
本文作者创新点是利用SYNOPSYS软件设计IP核,适合直接应用到ASIC/SoC设计中,并对RTL级做了优化,消除了在UART设计中碰到毛刺、亚稳态、多时钟等问题;通过测试平台(testbench)来仿真和验证,RTL 代码精简,时序、面积和功耗都做了优化,达到了IP核的要求。