搜索一个系统抽象

硬件被RTL抽象卡住了,但是系统级任务需要比当前可用的更多的硬件视图。

受欢迎程度

如果没有抽象,半导体设计的进步将在几十年前就停滞不前,电路的尺寸也将保持在与现在相同的水平模拟块。自20世纪90年代以来,还没有出现被广泛采用的新的抽象概念。松弛的部分被知识产权和重用,但IP块正变得越来越大,越来越复杂。验证在系统级别上,隔离不再是可行的策略。如果没有抽象,系统级验证将成为一项日益艰巨的任务。

随着系统的扩大,他们也变得更加多样化。对汽车控制器的数字逻辑进行验证是必要的,但还不够。它必须通过软件进行验证,与其他控制器进行通信,可能还需要传感器机电一体化和其他不能在离散时域建模的部件。

更糟糕的是,存在抽象对于较新的技术节点,正在分解,这意味着必须包括以前被忽略的其他细节。这给设计流程中所有级别的验证工具增加了越来越大的压力。

EDA业界成功的引入了门级然后寄存器转移级别(RTL)的抽象概念,并在90年代被普遍接受。RTL是唯一的抽象级别,从块设计到系统验证都是如此。更高级别的抽象已经被定义、标准化并用于某些任务,但是与这些模型的开发相关的成本是存在的。可以使用它们进行的分析数量也有限,并且大多数时候它们在开发流中保持隔离状态。

那么,油气行业如何创建一个模型,既能提供足够的细节和准确性,实现可靠的预测和设计决策,又能足够快地执行系统级验证?

这个行业在做什么
抽象对于处理复杂性和能够处理更大模拟的愿望是必要的。抽象的代价是你必须抽象掉一些细节。“但你仍然必须能够做你需要做的事情,”马格迪·阿巴迪(Magdy Abadir)断言Helic.“你想做更大的事情,但又不想失去太多准确性,让你的结果变得毫无用处。无论是模拟抽象是一个有用的概念,但要使抽象模型有用,必须满足这些条件。”

有些时候,设计团队不愿意冒这个险。“我并不总是认为这是抽象的,”Frank Schirrmeister说,他是系统与验证集团的产品管理高级集团总监节奏.“有很多蛮力整合正在进行。一个实际的问题是,对于系统的系统,您需要所有的模型,所有的RTL,所有的源来为系统提供在同一级别上可用的工具。有些可能是遗留芯片,所以你必须连接一个板,有些还不能作为RTL,所以你有一个模型,在某个虚拟节点上运行,有些可能在芯片设计过程中足够先进,你可以把它扔到一个模拟器其中一些是在其他一些层面上——所以有多保真执行,你必须把它们整合起来。”

Jean-Marie Brunet是竞赛部门的市场总监Mentor是西门子旗下的企业,提出了类似的策略。“数字逻辑比以往任何时候都必须与真实世界的模拟系统进行交互。其中许多系统都可以被建模——就像数字系统一样。不同之处在于这些模型通常利用连续时间的实现,而不是离散的。它们被不同地称为数学模型、连续时间模型或机电模型。此外,还有离散时间应用程序-数字信号处理(DSP) -也可能具有比RTL可能表达的更复杂或更抽象的数学模型。”

这些模型必须连接在一起。将这些类型的模型连接到模拟器是相当简单的,它可以提供比在中所表达的选择场景的更典型的使用更彻底的验证练习SystemVerilogBrunet补充道。“在仿真计划中如何包含此类模型取决于模型的来源。”

软件成功
抽象被普遍接受的一个领域是处理器模型和软件领域。“我们可以相当准确地为处理器建模,并及时做出响应,”该公司营销副总裁凯文•麦克德莫特(Kevin McDermott)说治之.“如果有人有可用的开发板,他们可以快速地将板上发生的事情与软件虚拟平台进行比较。当他们开始探测调试问题,他们开始看到虚拟世界的可观察性和可控性提供了额外的洞察力,这有助于他们调试他们的问题。这建立了强大的信心。当人们觉得它很有吸引力,平易近人,熟悉它,并能解决实际问题时,它就会被接受。”

抽象在软件中进一步发展。“如果你专注于一个特定的领域,它可能会以一种更详细的方式建模,你通常可以抽象化系统的其余部分,”验证组应用工程经理Kevin Brand指出Synopsys对此.“抽象的重要性在于,它可以让你集中精力,这样你就不需要一个庞大的详细模型来验证,也可以让技术以更好的方式运行。对于数字系统的验证,我们尝试将其隔离到接口。如果我们能够有一个抽象级别,使DUT仍然认为它是在真实的系统中,那么这就是我们所需要的。通常情况下,我们会抽象所有的行为并专注于接口。”

软件也接受了开发流中的抽象。“在软件世界里,抽象法发挥了出色的作用,”微软的首席执行官鲁珀特·贝恩斯(Rupert Baines)说UltraSoC.“我们已经从二进制编码,到机器编码,再到高级语言,今天我们看到它们用Haskell、Erlang、Hadoop或Cuda做了惊人的事情。这些都是令人吃惊的高抽象级别,我们在硬件上没有做过类似的事情。你有处理器模型,人们做处理器模拟和处理器抽象。他们做一些硬件抽象。但我们还未能以任何合理的方式概括它。”

软件正在经历一场复杂度爆炸。“随着汽车行业的巨大转变,从使用静态调度的周期性基于任务的编程到使用静态和动态调度混合的多线程c++应用程序,这带来了一系列前所未有的挑战。Silexica.“需要创建新的工具来分析具有大量场景的系统,以清楚地了解运行在同一计算集群上的多个应用程序的性能边际和设计稳定性。快速和周期近似的仿真技术需要与代表这种通信和计算新应用的应用模型相结合。”

事实上,软件已经从硬件中分离出来了。麦克德莫特说:“软件必须完成复杂的任务,必须担心自己的许多内部细节,他们乐于让硬件尽可能地好。”“人们认为这些系统设计得很好。你可能想要管理进入主存的事务数量以节省电力,但这种级别的建模是在详细的硬件级别上完成的。”

数字的双胞胎
其中一个发展推动了数字双胞胎概念中的系统建模。Schirrmeister解释说:“这是你有一个系统的模拟模型,你可以应用与真实系统相同的数据。”你这样做是为了跟踪和分析bug。它是真实事物的虚拟表现,比如飞机。你从飞机上获取传感器数据,并将其应用到数字双胞胎上,你就可以分析应该发生什么,并找出真实系统的不同表现。”

虽然您可以模拟或模拟,但它们仍然以实时速度的一小部分执行。“另一个解决方案是在更高的抽象层次上观察,”贝恩斯说。“它使用的是真正的硅,所以你是在全速运行。这很重要,因为系统级别的问题只是偶尔出现,即使以1/10的实际速度,也要等待三个月才能产生结果。您还可以使用真实数据和与现实世界的交互。这对于测试用例永远无法真正反映现实世界的复杂系统来说是至关重要的。”

这是通过嵌入式仪器来实现的。Baines解释说:“仪器通常被添加到每个处理器,每个互连点,然后是关键的外围设备,如内存控制器和加速器,这些都是性能关键。”“这就提供了你所需知识的90%,而通常只需要不到1%的死亡面积。这与比特和字节无关,也与JTAG消息传递无关。它提供了一个系统级视图。我们报告协议性能、事务级统计性能,并帮助人们识别异常。一旦你找到了问题所在,你就可以放大到更低层次的细节。”

有选择性的重点
几乎所有的建议都包含了一些混合抽象和选择性重点的概念。Synopsys的布兰德说:“在汽车行业,我们确保在生态系统中有良好的联系。“汽车行业使用的工具太多了。对于消费者和无线来说,你需要连接一些硬件,这些硬件可能是内部开发的,也可能是带板的调试器,但对于汽车来说,有很多建模解决方案可以让你经历V周期。基础设施不能是用于模拟的独立系统。它是生态系统的驾驶舱。”

“抽象级别越高,生态系统就变得越重要,以实现供应商之间的互操作性,特别是EDA工具供应商之间的互操作性,”Sergio Marchese补充道OneSpin解决方案.“这是解决这种潜在强大方法的所有技术挑战的唯一方法。”

这可能会变得复杂。“封闭系统,如汽车系统,在较小程度上,工业物联网Austemper设计系统公司的产品和业务发展副总裁斯里坎斯•伦加拉扬表示:“这些公司为价值链协调提供了答案,但规模问题没有简单的答案。“汽车芯片具有重要的混合信号功能,EDA供应商提供各种快速模拟模拟器,让用户以20%的成本实现80%的功能。虽然在噪声分析、公差和验证等标准设计问题上还不够,但在系统层面上已经足够了。”

一些过去已经足够的解决方案已经不再适用。Helic公司的Abadir说:“我们一直在使用RC提取来进行时间分析、功率估计等工作。“问题是,还有其他现象正在发生,比如电感和互感的出现,这给问题增加了一个额外的维度。这是因为频率越来越高,物理学使得它变得必要。”

在这种情况下,选择性焦点必须来自分析。“你可以快速分析设计并找到热点,”Abadir继续说道。“通过将这些知识与抽象模型相结合,我可以应对这种困境。我可以专注于我需要做详细提取的地方,在其他领域,使用抽象模型就足够了,无论是RC还是C或更高级别的东西,都可以快速提供时间或功率的估计。”

连接模型
每个抽象边界都可能导致集成挑战。“我们与MathWorksSimulink广泛应用于汽车、Saber、Vector CANoe等领域。”“我们可以将虚拟原型导出为功能模型单元(Functional Mockup Unit, FMU)模块,这样它们就可以通过许多第三方模拟器支持的功能模型接口(Functional Mockup Interface, FMI)标准连接到更大的系统。而是成为生态系统的一部分。我们专注于软件验证,但是我们被不同层次的抽象模型所包围。”

Mentor的Brunet进一步解释了FMU。“这些模型有两个部分。首先,有功能模型单元(Functional Mockup Unit,简称FMU)的概念。您可以将其视为所需函数的块盒模型。它由C代码和一个XML文件组成。通过功能模型接口(Functional Mockup Interface,简称FMI)访问FMU。FMI是封装或包装FMU的API。它基于一个开放的标准,这意味着FMUs可以被合并,而不管生成它们的工具是什么。只要它们遵守FMI,那么任何使用FMI的仿真或仿真环境都可以访问该模型。FMI也是设备独立的,使得模型在验证系统和主机之间可移植。”

FMU有两种类型:

•模型交换版本。其目的是只提供模型的数学定义部分。Brunet解释道:“如果你正在使用这个模型,那么就假定你有自己的求解器,能够询问和练习这个模型。”“如果你只是想把模型提供给那些已经有了自己的工具来执行模型的团队,这是最适合你的格式。”
•联合模拟版本。该版本更适合于验证和联合仿真。Brunet说:“它包含了求解器和数学模型,使其成为一个自给自足的可执行单元,可以集成到测试台上。”

确保相关性
最后,只有当抽象和模型提供了足够的价值时,才会采用它们。“告诉我,你实际上可以用这样的解决方案来解决哪些问题?”Schirrmeister问道。“其中许多问题可能可以用分而治之的方法解决,所以你真的有足够多的问题,只能通过模拟这些部分来发现吗?”

布兰德认为,这些问题正在加剧。“你可能在ECU上有一个明确的边界,更容易验证,但当你开始把它们放在一起时,问题就出现了。接口,它们如何交谈,以及它们如何组合在一起——这是我们看到最多bug的地方。这些部分来自不同的团队,他们依赖于规范,但直到您将他们放在一起,您才会发现问题。界面可视化是一个很大的问题。确保通信层的系统正常运行。”

在过去,EDA一直在系统级的抽象和模型方面苦苦挣扎,因为能够从中提取价值的人很少。但这一数字正在增长,需求也越来越大。然而,可以预期的是,EDA公司可能会等到感受到需求后再大举投资。



3评论

卡尔·史蒂文斯 说:

的确,界面就是它的全部。不幸的是,RTL主要是将寄存器连接在一起以在时钟系统中进行计算,因此存在问题也就不足为奇了。

接口是异步的,最好通过布尔表达式和传播延迟来定义。

我有自己的模拟器和语法,所以我可以看到接口是如何工作的。

Visual Studio CSharp有我需要的一切免费。

卡尔·史蒂文斯 说:

显然,硬件世界里没有人能想到RTL以外的东西。
软件的工具(编译器/调试器)也可用于硬件,因为软件类和对象对应于硬件模块。
CSharp有bool类型,所以布尔表达式可以用于if语句或条件赋值中的条件。此外,也没有限制,例如只允许if语句在always块中。
这是我之前评论背后的部分原因。我有运行代码来证明。下面这段话非常相关:
软件也接受了开发流中的抽象。UltraSoC的首席执行官鲁珀特·贝恩斯说:“在软件世界里,抽象的工作非常出色。“我们已经从二进制编码,到机器编码,再到高级语言,今天我们看到它们用Haskell、Erlang、Hadoop或Cuda做了惊人的事情。这些都是令人吃惊的高抽象级别,我们在硬件上没有做过类似的事情。你有处理器模型,人们做处理器模拟和处理器抽象。他们做一些硬件抽象。但我们还未能以任何合理的方式概括它。”

凯文·卡梅隆 说:

想出更好的做事方法是很容易的

http://parallel.cc(异步。HW的c++扩展

然而,说服IC设计中的任何人改变方法似乎是一个失败的原因-自我鞭笞和呻吟似乎是首选的方法。

留下回复


(注:此名称将公开显示)

Baidu