系统与设计
的意见

一般可重用IP没有人使用

如果我们继续把一般可重用在盒子上,我们做的是销售我们的同事一块一般可重用的垃圾。

受欢迎程度

我不能告诉你多少次这条线已经跳进我脑海中在过去的几十年里,可能因为我记不清在1998年的某个时间…

经理:“…为什么他们把保证在盒子上呢?”

汤米:“因为他们知道他们卖给你的是一个保证的s * * *。”

这是一个从电影汤米男孩交换,一个典型的从我的大学时代。汤米·卡拉汉,新的大学毕业生(几乎)和bong卡拉汉汽车王位继承人,推力为家族企业的领导角色在他爸爸,大汤姆,突然心脏病发作而死。该公司疲于应对债务汤米步骤作为新崛起的领导者,他的当务之急是销售足够的刹车片支付债务和拯救公司。

汤米决定最佳的行动方针是上路旅行推销员。伴随着他的伙伴理查德,汤米失误反复通过会议、零成功后,一度甚至开始一个模型汽车着火,直到他最后钉子间距,使他第一次出售。他说话的小伙子提出一个强有力的前面,坚称他不能卖刹车片,别来保证;只有这个词保证在盒子上帮助客户在晚上睡觉。汤米计数器的论点,意味着没有质量保证。这足以完成第一次交易。

如果你正在寻找相匹配的两个字“保证”这个词的意义在功能验证,看看“重用”和“通用”。这两个词我们放在盒子里,帮助我们的同事(包括经理)晚上睡觉。

对我来说,调用您自己的代码通用或可重用的有点像给自己一个昵称。这是一个主要的失礼我来自哪里。朋友决定你的昵称,而不是你。同样地,同事们决定如果通用和/或可重用代码,不是你。如果你坚持调用您的代码可重用或通用的,我们需要一些基本规则来帮助人们了解什么时候是可以接受的。对我来说,代码已经达到多个条件才能被宣布为可重用的…

  • 代码已经被使用一次
  • 你的代码已经使用两个或两个以上的时间
  • 代码已经被别人除了你
  • 别人不需要你使用你的代码

好吧…第一个子弹是比要求的先决条件,我甚至不敢相信这是我们需要指出的,但不幸的是这是我们开始的地方。调用代码可重用之前有人用它,甚至没有你,是一种本末倒置。之前!但我猜这是第二个最典型的情况时,人们调用代码可重用;他们着手解决问题共同的许多同事,编写相应的代码,等待群众聚集,群众不涌向它,代码库中生锈,最终收回删除存储空间。没有“使用”,就不可能有“重用”。

从2日最典型的,我们去最典型。说“重用”要求代码至少有一次被“重用”似乎是显而易见的,不是吗?但有多少次你看到这个:好友写代码他/她认为很酷,用它来解决他/她的问题,希望其他人也会发现它酷不足以解决他们的问题(s),好友打电话他/她的代码可重用,随随便便暗示别人应该使用它,更有力地提示别人应该使用它,特别建议其他人应该使用它,没有人使用它,朋友也不会再次使用它。

我们称之为reuse-on-the-box场景;思考一个成功和标签足以有资格作为可重用。但可重用这个词,在一个绝对最小值,意味着代码已被使用,然后再次使用。使用它曾经是“使用”。

也许你想使用两次很好的调用代码可重用性。技术上我想这可能是真的,但对我来说这是设置酒吧太低了。如果你有胆量告诉别人你的代码是可重用的,这应该意味着别人比你实际使用。如果这还没有发生,你的代码不是可重用。

最后但并非最不重要的变异reuse-on-the-box-scenario;我们叫它vicarious-reuse场景。vicarious-reuse场景,而不是接受,没有人愿意重用代码,或者他们不知道如何重用代码,你重用它。你做所有的集成和安装工作。你也做了很多的调试和/或解释的结果。他们可能付出一点努力,也许获得的一些好处,如果有,但不要误解为重用。块级别testbenches往往适合该法案。遗憾的是,一些第三方的知识产权也合格。

尽可能经常滥用“重用”这个词和它的衍生品,我想我们更糟的是,“通用的”这个词。在我看来,通用代码必须满足所有的重用标准。:

  • 代码实现一个目标,它不是专门设计来完成
  • 你的代码确实但是并不是所有的东西

榜样第一点,这个词的正确使用通用可能意味着一个记分板,检查whatchamacallit也适合检查手闸,dingledongs没有修改。如果检查whatchamacallit只是真正伟大的,它不是通用的。

第二个标准与generic-ness频谱的两端。一端是代码,所以一般不做任何有用的事。好的例子是一个组件基类没有提供明显的行为或价值除了一个基类。(完全披露:当我第一次介绍液力和OO编程,我曾经归纳验证代码的各个部分提供零值。幸运的是我已经改掉那个习惯)。在光谱的另一端是代码,旨在解决所有可预见的问题通过配置和分支。这段代码也不是通用的,它是瑞士军队厨房水槽的代码。

如果你写的代码覆盖所有上述情况,恭喜你!这可能是安全的说你是通用和/或可重用。如果你正在寻找终极测试,然而,重用是惊讶的发现一个同事使用代码成功在你不知道的。这是一个真正的通用测量和/或可重用的代码。代码,站在它的实现目的的同事真的想使用它不需要额外的努力或干预。顺便说一下,这种情况下出现了最常对我来说当我关注的是质量,而不是重用。质量是惊人的可重用!

在功能验证俱乐部,我们需要开始使用“通用”和“重用”更仔细地之前就变得毫无意义。或者我们风险变得比现在更有意义。如果我们继续把一般可重用在盒子上,我们做的是销售我们的同事一块一般可重用的大便。

PS:如果你有兴趣,我相信每个人都是——这是汤米·卡拉汉让他的第一笔生意。



5个评论

Srinivasan Venkataramanan 说:

很好的说尼尔-我想知道如果它不是已经太迟了——在这个行业有太多的“通用和可重用”UVM代码,只不过是你指的“保证”。也许我们应该选择真正可重用的另一个单词/短语/真正的通用-有人知道吗? ?

nosnhojn 说:

不知道这里有重要的另一个词。短期内我认为正确的做法是过滤可重用/通用限定符或挖更深可重用'ness /通用'ness IP,似乎有希望。不幸的是,将可重用/通用的面值是危险的所以我们必须停止这样做。

拉尔斯莉莲 说:

知道一个IP重用提供了舒适但我认为感觉有点欺骗。“使用证明”告诉你,许多人成功地使用IP但如果它被用于一个上下文和配置类似于你的。我更喜欢一个坚实的测试套件。我将展示如何使用IP和在什么情况下它的工作。在索赔的事实。坚实的质量和质量测试套件,如你所说,令人惊讶的是可重用的。

马克·格拉瑟 说:

的确,重用代码更可能是可重用的代码,没有重用。这是一样的看着坐在车道的一辆车,问如果它运行。任何人都可以做任何索赔的汽车。只有当你打开它,把它的测试才能知道是否它运行。也真正的通用或可重用代码不仅仅是因为你把贴纸在盒子上。重用并不是免费的。你必须把精力确保一段代码可以重用。你要做应用一种特定的编码风格和编写测试(Lars指出)。而且还不是无限可重用的代码。它只能被重用在记录的自由度和陈述的假设。 Unless you specifically intended a piece of code to be reusable, and did the work to ensure that it is, it is not reusable.

Olof Kindgren 说:

提到一个重要的课题。我有点reuseoholic我自己和我的主要药物是模块化。这不是一个银弹,但通常更容易重用片段比整个事情的东西。然而这需要良好的基础设施共享,结合部分,这是我开始工作的一个主要原因FuseSoC(无耻的插头)。真的很讨厌看到多少东西重塑HDL世界只是因为它不是明显如何重用已有的东西

留下一个回复


(注意:这个名字会显示公开)

Baidu