riple

Stay Hungry, Stay Foolish.

维护遗留代码(9)——尊重原代码,尊重原作者

第三方提供的代码,经过了两个多月的时序调整,最终达到了时序收敛的目标,小范围功能修改前后两次编译之间的功能不稳定现象消失了。我这一系列的文章也暂时告一段落。现在,这组代码还在维护中,旧的bug还在逐个解决,新的功能正在稳步地添加。&nbsp

维护遗留代码(8)——当riple遇到ripple(行波时钟)

在补充完整了时序例外约束,排除了虚假时序违规报告之后,设计中的绝大部分时钟都得到了收敛。但是,仍然有部分关键时钟不能收敛,时序余量总的负值很大。二进制文件下载后,时序不收敛路径对应的功能不能在设计要求的频率下正常运行,选用较低的频率后运行正常。这表明

维护遗留代码(7)——必不可少的引脚时序约束(内空)

待续

维护遗留代码(6)——缺少例外的约束就是“过约束“(内空)

待续

摘抄一组SATA转接卡异常问题的调试记录

昨天回顾了一下两年前离职时保存的工作日志,读到其中一段调试工作的记录时,仿佛又亲历了三年前那段艰辛的调试经历。解决这个问题用了近两个月的时间,一个个假设被提出来,相应的解决方案又被进一步的测试否定。到了调试后期,大老板每天都要询问两到三次工作进展,压

维护遗留代码(5)——逆向添加时钟约束

问题归结到了时序收敛上,该设计存在的一个最主要的问题是缺少完整、正确的时序约束。时序约束的核心是时钟约束。接下来我要做的第一步是确认该设计包含有多少个时钟,并一一加以约束。原设计采用了QSF文件作为时钟约束的输

维护遗留代码(4)——时序问题初露端倪

在关于代码移交的那篇文章中,我在最后提到了“正确完整的时序约束对编译结果的稳定性影响巨大”。那么这一结论是如何得出的呢?在得出这一结论之前,是怎样的现象导致我们开始向这一方向探索?又是怎样的证据支持我们得出了这一结论呢?在接下来的几篇文章中

维护遗留代码(3)——缺少JTAG接口的遗憾

早在代码移交阶段,我就向第三方提出过电路板上缺少给FPGA预留的JTAG调试接口的问题。电路板上本来已经给CPLD预留了JTAG下载接口,把FPGA连接到已有的JTAG链路中并不是什么难事。可是由于我们看到PCB设计时电路板已经投产,并且是最终要交付用户使用的量产版,即使是这

维护遗留代码(2)——从搭建仿真环境入手

代码移交完成后,为了尽快掌握第三方开发的FPGA代码,我面临的首要任务是搭建一个完备的仿真环境。原工程在QuartusII下采用波形文件搭建了仿真环境。用过QuartusII集成仿真工具的朋友应该了解,与Modelsim相比这个仿真工具存

维护遗留代码(1)——从代码移交说起

2009年6月下旬,riple开始着手维护一套第三方开发的FPGA代码。在移交之前,所有的代码维护都是由第三方完成的,我们很难控制项目的时间进度,所以决定自己维护FPGA代码,以求加快项目进度。由于先前没能谈妥代码移交的问题,第三方代码对我们是不公开的,只有最终的二进

关于FIFO的几个问题——写作计划

最近一段时间的工作中使用FIFO很频繁,思考了一些与FIFO有关的问题,准备写几篇关于FIFO使用方法的文章,总结一下在以往工作中遇到的相关问题。惟恐遗忘,先写几个题目在此。等到把RapidSystemPrototypingwithFPGAs的第四章翻译完,就开始着手写这几个题目的文章,每一

一波三折——危险的“未分配”引脚

三态总线驱动冲突引发的数据错误

FPGA时序问题一例——电磁干扰和引脚驱动电流约束

FPGA时序问题一例——异步接口和毛刺敏感电路保护