一位客户最近打电话给我,问我是否可以修改我编写的 IP,以便它能够响应 APB 从输入,时钟频率与其他设备模型使用的时钟频率不同。

更新需要在 IP 中插入一个 APB 跨时钟域桥。这并不难,因为我已经在两个月前建造(并正式验证)了这样一个桥——我只需要连接电线并为不需要桥的情况做一些信号重命名。

那是容易的部分。

但是,如何测试这种新能力呢?它需要一个更新的测试脚本等等。

值得庆幸的是,这也很容易。

因为我已经使用参数构建了顶层模拟构造,它 可以很容易地被测试驱动程序覆盖,所以测试套件很容易更新:我只需要设置一个异步时钟参数,为时钟速度创建一个新参数,调整时钟速度本身,然后我走了。值得庆幸的是,我已经(随着时间的推移)摆脱了任何不适当的延迟,所以更新进行得很顺利。

顺利?事实上,整个更新只用了不到半小时。(这不包括最初构建和验证通用 APB 跨时钟域桥所需的时间。)

……这就是您希望从编写良好的逻辑中得到的。

好吧,好吧,这并不是一帆风顺——我还得回去更新用户指南、更新存储库、增加 IP 版本、更新更改日志,然后为任务开具账单。这些任务将比实际更新花费更长的时间,但这就是我们所从事的业务。

结论

让我们面对现实吧,这篇文章是一个咆哮。我知道这。也许你会从中学到一些东西。也许我会从随后的任何辩论中学到一些东西。(欢迎在Reddit上发表评论……)

是的,我按小时收费。是的,像这样的乱七八糟的事情会让我在未来几年保持有收入的工作,让我的家人吃饱。但是,我宁愿负责为设计添加新功能的有用工作,也不愿修理别人的烂摊子。