去年我试图涉水模拟的世界解开它。一切都显得那么简单。一旦我有它解决。问题是,我只认为我解开它。节奏最近宣布(有“统一”词)之间的模拟、仿真加速度和仿真。很快变得很清楚,这一年,一个新的复杂网络已经取代了我以为我之前已经清除了。
底线,把我弄糊涂了。一次。
好吧,也许这不是如此罕见,但工作与我在这里…
当我开始说话,感觉就像我不是唯一一个困惑。尽管,事实上,你不觉得你很困惑,直到你意识到别人遵守其他信仰相同级别的坚持你的信念。所以每个人都有或多或少明确的意见,只是他们不对齐。所以我感到困惑。反过来,我尽我所能,与别人分享我的困惑,试图说明有混乱。
这一次我没有得到太多的抗拒。是的,人:这是令人困惑。
真正的问题是,如果这三个物品被统一,它们之间的区别是什么?
•导师的吉姆·肯尼表明使用真正的I / O代替模拟I / O区分模拟与仿真加速度。同样,FPGA使用意味着原型;节奏和导师使用定制asic仿真。
•好…现在我们扔原型系统的混合。为什么解开三件事四什么时候做?
•和夏娃表面上让模拟器,但他们使用fpga。这使他们的原型吗?吉姆还提到了原型系统小。但夜也建立大单位。到底是哪个?
•夏娃Lauro Rizzatti说仿真加速度/仿真的区别是相当模糊的。这节奏的新营销图纸看起来很像夏娃的老营销图纸。和导师的定制ASIC真的是一个定制的FPGA,虽然节奏的定制ASIC是基于逻辑处理器(去年我们看到LUT-based因此也有些FPGA-like)。
•节奏的Michael Young说,如果验证环境涉及到SCE-MI主机和硬件之间的接口单元,然后模拟加速度,而不是模拟。但没有SCE-MI接口,你不能跟托管testbench(以任何速度),只有一个子集的testbench可以合成为硬件。
•Synopsys对此销售原型系统,而不是模拟器,但他们支持一个模拟器使用模型。
嗨!
当然,并不是每个人都说冲突的一切,有线程的协议。我们试着穿过它,搞清楚什么是什么。
原型!*
让我们开始原型,因为我们可以把一个休息更容易。两个原型系统和仿真系统-更不用说虚拟样机系统允许软件执行芯片最终会是什么样子的模型。最重要的区别似乎是,你为什么要这样做呢?
如果答案是”,这样我可以确认我的硬件是正确的,“那你就看着一个模拟器。如果答案是”,这样我的软件开发人员可以开始编写软件之前,“那么你说的原型。
硬件原型假设RTL相对稳定,并在实施的过程中硅。芯片的软件开发可以提前开始建造和测试。可以使用一个更抽象的虚拟样机在RTL是稳定的;之后,一个硬件原型提供了更大的性能。事实上,它运行速度远远超过一个模拟器——就像一个数量级或更多更快。
原型往往较小,使用fpga少于,说,一个夜瘤牛或导师快速地(或节奏钯如果你觉得他们的芯片FPGA-like)系统。但他们可以运行得更快,因为有人花时间和精力来创建一个非常高效的硬件实现。有必要花那么多精力只有一次你知道RTL相当稳定。FPGA编译过程,更不用说性能关闭,需要时间,所以实现原型的整个过程需要更长的时间比可以容忍一个退房的硬件。
如果你仍然测试硬件RTL,那么你希望能够把设计快速迭代。这通常意味着更少的有效实现,使用fpga实现更少的速度。这就是模拟。这都是在权衡。
然后有三个
叶子仿真,仿真加速度,和仿真。试图把它们放在一起到一些结构合理,让我们把事情分开,以确保我们知道发生了什么。
验证环境真的包含三个元素:
•设计/测试设备(DUT)
•刺激
•检查(或任何决定事情或不工作)
刺激和跳棋通常为“testbench打包在一起。“他们通常用Verilog编写或SystemVerilog一般不synthesizable作为一个整体(尽管可能是一个子集)。
DUT通常用的高密度脂蛋白,synthesizable。如果它不是,有人会有麻烦了。
有两个地方可以这些东西:
•主机,使用软件模型
•硬件
让我们来简单的作为一个例子。模拟完全发生在主机上。DUT,刺激,跳棋都实现为软件模型。没有大谜。问题是,他们倾向于运行缓慢。尤其是当你开始试图看看你的硬件软件在执行工作;它运行在模拟器极其缓慢。你可以变老只是等待系统初始化;希望你训练你的孩子那时接管实际软件运行时。
所以你使用硬件加速的东西。因为DUT synthesizable testbench不是,明显的第一步是DUT进入硬件。事实上,你甚至可能会DUT的一部分进入硬件。但是我们有一个重要的考虑考虑:硬件和仿真器之间的接口。因为,在这种情况下,模拟器会话仍然规定土地;它只是包括硬件作为它的一个奴才。
这类事情的时候是新的,主机将刺激DUT的刺激硬件一个切换,以及应对检查一次一个切换回来。DUT可能迅速执行,但让信号和DUT成为瓶颈。
输入一个方法由前都开创他们的收购导师:交易而不是单个信号值变化。这种方法的核心SCE-MI接口连接主机和DUT的硬件。这大大加快了testbench控制DUT的能力。
但如果你把DUT,加速只有一部分?好,假设部分必须跟其他未加速的部分,现在你回到有连接这些信号在包主机和硬件之间的电线。并没有什么包信号变成交易。所以这让我们回到极其缓慢。
意味着DUT将几乎全部被发现在主机或硬件。后者是加速版本。
所以离开模拟哪里?我们仍然有这讨厌的宿主范围。节奏和导师似乎一致认为,在他们看来,一个模拟器。它不会跟一个主机。有两种方法可以实现:要么把尽可能多的testbench硬件,或者不要用Verilog testbench——使用一个“真正的”testbench。
让我们打破testbench分解为刺激和检查部分。刺激你的DUT在一些州(非法的),你可以有一些信号来自合成partial-testbench,或者,更好的是,使用实际的I / O卡看起来像在最后系统会发生什么。如果你需要网络流量,钩DUT到一个真正的网络通过一个真正的网络卡,而不是使用一个模拟交通生成器。需要跟东西坐在PCI总线?使用一个真正的PCI卡跟真正的东西坐在真正的PCI总线。
检查呢?嗯…你可能没有一个。毕竟,你不会有一个在最后的系统。你知道最后的系统是如何运作的吗?因为…好吧,它的工作原理。如果它不工作,那么这意味着…它没有工作。你知道,死亡的蓝色屏幕,之类的。(希望当比尔展示…职业限制也许,但是哦,所以值得…唯一科技故事孙子想要一遍又一遍地听到…)
所以,从本质上说,按照这个标准,模拟意味着设置宝宝自由,切断绳子,成败;你可以想象的。如果它下沉,那么你有问题。哦,是的,你需要找出这些问题是什么。和所有的大型仿真系统的方法来捕捉更多的内部状态比可能在一个真正的系统;的大型系统中,大量的数据研究了原位。如果你愿意,你可以船舶系统的状态返回到主机(哦,是的,有绳再次…也许没有得到完全削减…)模拟分析或比较的,这样您就可以隔离错误,但是,是坚定的男子气概的孤立主义者,模拟器说,他们可以做得很好没有任何帮助。(不,他们不需要方向;他们知道他们在哪儿。)
注意,即使你在模拟器上运行软件,就像你在一个原型,目的不是开发更多的软件而不是或多或少的硬件模型,但验证软件和硬件一起工作得很好。如果有一个问题,它可能是一个软件或硬件问题。直到两个工作可以称为好。
统一的意思是什么?
调查,绘制出的风景,让我们回到开场白:once-discrete领域的模拟,模拟加速度,和模拟现在已经统一到一个流。这是什么意思?
这应该意味着两件事:
•控制验证来自一个控制台运行一个会话不管DUT或testbench正在运行
•我们应该叫它什么,“实例化”的轨迹?(是的,好狂妄…听了它在你附近的一个主题)和DUT testbench该会话内应该是可控的。
这意味着,从一个窗口,你可以运行验证,搬东西的硬件。节奏并声称能够来回移动DUT从硬件到软件与单个命令行指令。好的,他们实际上不是来回移动,有一个柔软的形象和DUT的硬件图像,和国家之间来回移动。他们称之为热插拔。
连接模拟与模拟加速度。连接到模拟呢?这意味着能够热交换testbench。显然,synthesizable testbench可以交换的一部分,作为可以I / O模块在某些情况下(实际模型)。
这是另一个大问题:假设你可以无缝地。有使用模型,受益于能够交换这些东西呢?还是足以能够从仿真开始直到太堵塞,然后将其移动到一个加速器,直到你认为它很好,然后把它移动到仿真?每次一个过渡。来回移动有价值吗?
据推测,客户将的回答。
更多信息:
*充分披露:这是一个无耻的即兴重复的名称探索频道节目不幸的是没有持续太长时间…更不用说去年经济的称号文章…对不起…我保证不再联系,见鬼的文章…
11对“从模拟仿真”的想法