复杂设计更须注重数据管理
David Brady
随着越来越多的中国工程师开始设计和管理大型工程项目,设计方法已变得非常重要。过去,工程
师一般根据手头的硬件和软件工具去开发产品,但随着设计越来越复杂,这种传统设计方法的效率已越
来越低,本文讨论的面向数据而不是工具的设计方法可以大幅提高工程开发效率。
在设计过程中,数据是关键,可以说没有数据就没有设计。采用传统方法的设计工程师过多地依赖
于以工具为主的途径来完成任务,整个设计流程就是一个根据设计者需要一个接一个打开设计工具并完
成设计的线性处理过程。例如,一个设计工程师首先打开一个模拟工具,并加载数据,这是一种有争议
的假定相关数据均存储在一个HDL文件中的线性处理流程。不过,当设计者需要模拟一个包含状态机、
HDL文本和复杂门电路的原理图时,这种线性处理流程很快就会出现问题。在这种情况下,设计者在模拟
之前必须采取几个人工数据处理步骤,包括从状态机和原理图中产生HDL代码,以及更新各种数据文件。
面向数据的管理工具
设计工程师现在可以采用一种新的以数据为中心的方法来解决这些问题。通过这种方法,设计者可
以从数据管理器中选取恰当的操作来实现特定的设计单元。如果设计单元像上述例子一样复杂,以数据
为中心的管理工具将在产生正确的模拟文件之后马上自动执行模拟工具,以数据为中心的功能特性可产
生并加载所有的HDL文件、激励、库和SDF文件。
目前,利用面向工具的设计方法来模拟原理图中的分层模块需要大量的人工操作,如拷贝、粘贴和
编辑等,而面向数据的管理工具则将所需操作的分层提取出来,并基于分层为模拟准备必要的数据,这
样的面向数据的策略可简化设计工程师的处理过程。
通过在设计者和各设计工具之间增加一个抽象层,面向数据的操作为复杂度不断增长的系统、ASIC
和FPGA设计的成功管理奠定了基础。尽管各设计工具可有效执行一系列特定的操作,但设计工程师必须
先提供必要的输入数据。因此,随着设计复杂程度的增加,数据输入就会成为一项繁重的工作。目前,
面向工具的设计流程已不能满足当今复杂FPGA设计的要求,而面向数据的工具将可极大地提升设计效率
。
过程是关键
设计开发涉及到大量的数据文件,不仅包括设计数据,而且还包括约束和验证数据。如果设计工程
师必须通过手工方式来管理这些贯穿整个开发流程的设计文件,他们就会被费时、费力的流程所困扰,
这将大大降低生产率,严重制约开发进程。
尽管设计工程师担心数据输入工作在开发过程中会浪费大量宝贵时间,但有一个更为重要的问题需
要注意。设计者都希望采用最佳的设计管理技术,以便能在给定的开发时间内进行深入探讨并得到尽可
能好的设计方案。由于数据管理流程脆弱的本性,如果不能发现并妥善处理欠佳的构思或设计中产生的
管理问题,那么一旦在开发流程后期遇到重大的设计更改,将可能导致整个设计工程的崩溃。
软件和硬件开发有诸多相似之处。管理软件开发、缩短开发时间和提高设计质量方面的大量信息表
明,良好的数据管理流程是有效控制软件开发进程的关键。此外,良好的数据管理也是降低风险、保持
进度和资源管理的基本保证。硬件设计会使数据管理更加复杂,因为硬件设计本身比软件设计复杂得多
。
在软件开发领域,代码产生过程通常经过三个阶段:源代码(*.cpp)、目标代码(*.obj)和可执行代
码(*.exe)。每一阶段都是一个不可逆转的流程,且不同的文件类型格式完全不同。
然而,在硬件开发领域,即使一个最简单的代码生成流程都要包括:行为描述代码(*.vhd)、RTL描
述代码(*.vhd)和结构描述代码(*.vhd、*.sdf及*.edf)。每下一步流程采用抽象度更高的VHDL代码,最
后产生三个主要文件:一个结构化的VHDL设计文件、一个通过VHDL设计进行时序验证的SDF设计文件,以
及一个用于布线工具输入的EDIF网表文件。
硬件开发还需要一系列工具,包括原理图、图形输入、文本输入、模拟、综合及静态时序分析等。
硬件设计实际上是一种将算法从抽象级转换到门晶体管级的过程,显然,如果几个工程师共同完成一个
硬件设计,就必然会涉及到数据管理问题,而且它可能成为影响最终设计成功的一大障碍。
数据管理危机
尽管设计者常常会忽略,但在设计构思和论证阶段对高密度开发进程构成重大威胁的设计数据管理
问题正在逐渐受到重视,因为在一段很短的时期内,设计小组就必须定义、分割、生成和强化某个设计
。如果在这个阶段设计发生变化,数据也必须相应改变。设计完成后便进入生产阶段,这时设计数据管
理任务就由产品数据管理(PDM)系统接管。
设计数据管理问题的大小与任一给定产品的数据量成正比,当增加新的功能时设计数据量也会相应
增加,因为设计实现和验证需要更多的数据。如今的FPGA已具有上百万门容量,尽管这可让设计者为其
设计提供更多的功能,但同时也带来了数据管理方面的巨大挑战。
随着工程师逐渐采用新的设计方法来提高其生产率,新的可以加快设计定义、分析和实现的EDA工具
也不断出现。这些新的设计工具和方法产生了大量的设计数据文件:测试向量源文件(VHDL、Verilog或
图形仿真文件);测试向量辅助文件(用于HDL测试向量的ASCII文件、向输出波形加载激励和/或存储输出
波形);设计源文件(VHDL、Verilog、原理图、图形方框图和EDIF);辅助数据文件(用户定义的HDL库文
件、HDL源文件和RAM/ROM加载文件的ASCII文件、综合约束文件及布局布线约束文件)。其它设计数据文
件还包括:派生数据文件(从图形源文件产生的RTL HDL、由宏生成器产生的原理图、框图、流程图、
EDIF和RTL HDL);布局和布线生成文件;工程技术文档文件(如Word、Excel、PDF和HTML文件)。这些文
件在数量和复杂性方面都增加了设计难度。
某些流程和设计技术也会产生大量的数据文件。例如,在不断修改和调整设计的过程中,经常会发
现各个子层块可能处于不同的阶段,有些可能是RTL级设计,而有的可能已经是门级设计了,而且在设计
过程的不同阶段都会产生许多新的文件。而综合RTL文件和FPGA中的布局布线将会产生更多的文件。
每个抽象层实现形式或设计思路都反映为一定的VHDL结构,这是各子层块统一的接口,但每个子层块可
以有多种表现形式,包括RTL、行为级描述或结构描述等。偶尔,设计者需要尝试不同的实现方式来获取
理想的设计尺寸和速度规格。在这种情况下,各子层块在每个描述级上都可能包含几种不同的表现形式
。因此,在同一个抽象级上可能并存多种实现形式。
更深层次的问题
FPGA设计以前仅简单地包括原理图和门电路,这对当时典型的器件密度而言已经够了。不过,现在
设计者处理的器件密度平均为2万门左右,仍沿用原理图和门电路设计思路将严重影响设计效率。如果设
计者能够将设计功能用图表而不是原理图和逻辑门表示,将会大大提高设计效率。除了编写HDL代码外,
扩展设计生成技术使之包括原理图、状态机、流程图和真值表也会给设计管理带来更为广阔的空间。
每个子层块描述均可能包含多个源文件。由于每个子层块包含多种实现形式,而每种实现形式又包
含多个文件,因此随着复杂程度的增加,设计工程师将面临可能降低设计效率的繁杂文本输入工作。
这些设计数据管理问题还仅仅是一些表面现象,如果还要在一个项目分层设计结构的多个层次上开
发测试基准,那么将会导致任务复杂程度的急剧增加。
测试基准也对数据管理系统的开发提出了挑战。与设计功能描述类似,测试基准也可能采用同样格
式或语言的源文件。多个子层块拥有多个测试基准也进一步增加了文件管理的需求。
一般来说,模拟器采用测试基准,而综合工具则不采用,因此它们对数据管理的要求也截然不同。
此外,测试基准必须在整个设计转换过程中提供可复用性。例如,同一测试基准应该能够同时满足综合
前及布局布线后的要求。
如果对整个工程项目的子系统采用不同的设计方法有助于在规范所要求的尺寸、速度及功耗方面达
到一定的平衡,那么我们对项目开发过程中的设计数据管理要求的理解也能更深入一些(见图1)。当要求
某个功能块(如PCI总线)必须满足给定运行速度要求时,设计者可能愿意在综合优化和布局布线约束方面
花费更多的时间以满足时序需求,其中一种应对策略是为速度而牺牲空间,设计的其余部分则可获益于
空间优化。显然,如果每个功能块要求采用不同的设计方法及优化参数,那么就会带来另外一个设计数
据管理问题:设计工程师如何对子层进行分离并管理相关文件?
尽管大部分芯片供应商都为方便EDA使用而提供了标准化库,但设计者在设计流程中通常仍需要将技
术库的不同描述连接到不同的工具。例如,开发商提供原理图库用于原理图输入,宏生成器可用于生成
符号,验证库用于布局前后的模拟,开发商的布局布线工具提供了一个SDF文件用于时序分析。此外,综
合目标库以及用户生成的库和参数选项可能也需要管理,用户需要通过文件去指导综合及布局布线工具
。另一个普遍的做法是利用VHDL或Verilog文本文件在模拟之前加载RAM/ROM块的初始值。显然,库管理
为设计数据管理方法带来了更多需要注意的事项。
面向数据设计
设计工程师采用了几种不同的方法来解决这一问题:利用软件开发工具来构建硬件开发数据管理系
统;采用VHDL语言的配置功能;手工管理所有设计数据文件;利用一些EDA供应商提供的以数据为中心的
功能。
基于定制的硬件设计数据管理系统存在固有的局限性,其文件规则不能反映设计状态。 VDHL配置提供了
强大但较困难的解决方案。如果开发工具能够可靠地支持配置,那么它将允许设计工程师管理用于模拟
和综合的设计数据。不过,由于VHDL配置只能以VHDL语言格式来表达设计数据,因此它无法提高可读性
。
只要设计规模较小,即使采用传统方法,许多设计工程师还是能够获得可接受的效果,但在质量控
制及可重复性方面却得不到保证。我们通常会问这样的问题:我们是否给开发商提供了与模拟结果完全
一致的设计呢?
实际上,所有构建阶段的设计管理问题都揭示了一个共同的现象,即在设计过程中这些问题都与设计
结构相关。这一发现为Veribest ( Mentor Graphics公司)这样的公司提供了灵感,他们因此开发了一
种可让设计者详细浏览设计分层的技术(见图2)。
Dataquest最近所做的一项用户调查表明,1998年大部分FPGA设计规模在5,000到10,000门之间,今
年这一规模将增加到30,000到50,000门。当前面向工具的设计方法在这些密度条件下已严重威胁到市场
主流用户的设计效率,这表明面向数据的设计技术将从高端用户向主流市场渗透。
新的管理模式
Veribest ( Mentor Graphics公司)的Designview工具为FPGA用户解决了设计构建过程中的数据管
理问题。例如,Actel就在其设计生成工具包中采用了这个工具,它通过用户和核心工具之间的抽象层向
用户提供了一个观察和管理数据的窗口。用户可选择从文件、分层或模拟角度来观察设计数据。一旦选
定数据元素并设置好恰当的文件位置、选项、库和输出文件位置,管理工具就会自动激活相应的设计工
具,这种工具摆脱了完全依赖人工操作的设计方法。
基于文件的观察方法通过文件系统目录结构来展示项目内容,它将原理图、图表、HDL文件和模拟测
试基准分别归入相应的目录。分层列表不仅揭示了层次结构,而且能够识别出由于文件丢失或产生错误
而导致的子层丢失,并不断地检查分层结构以确保正确的构造。此外,它还支持配置管理、虚拟路径管
理和子层块框图等。
在设计工具管理数据的同时,配置管理还提供了一种可快速比较设计实现选项的简便方法。当设计
者在不同供应商提供的配置间进行切换时,设计流程可及时调整以显示特定供应商的综合结果、布局布
线文件和布线后的模拟文件。配置结构还可为特定的功能块提供可支持或比较尺寸与速度优化组合的选
项。每一功能块都可包含多种实现方式或观察点,一系列有效的或选定的观察点就构成一个配置结构。
这种配置能力可让设计工程师构建一种可针对速度及尺寸而优化各种功能块的设计实现。
虚拟路径管理可让设计者隔离出用于设计、验证和FPGA布局布线的子层,用户可通过逐个点击子层
来设置新的路径。现在,有了这项可支持混合设计原理图、图形和文本输入生成方法的功能,设计工具
就可执行所有的数据操作。
模拟管理贯穿于模拟设计的全过程,它负责处理源、测试基准和布线后SDF文件之间的所有数据关
系。用户可选择模拟HDL文件和与测试基准相关的选项,测试基准首先对待模拟I/O进行初始化,然后将
自己关联到这一特定功能。在设计实现过程中(如综合和布局布线),设计工具可生成布线后HDL和SDF文
件,Designview可自动对先期生成的测试基准与布线后结果进行关联,并一直保持这种关联。
过去,配置、虚拟路径和模拟管理都是通过设计分割、拷贝和编辑等手工操作来实现的,但FPGA设计
在数据管理复杂性方面已超出了传统数据管理的极限。在设计者开发和比较设计生成方法和优化技术的
同时,FPGA设计也产生了庞大的数据量。不过,数据仍是设计者设计工作中最有价值的东西,设计方法
必须能够反映出数据的重要性。采用面向数据的开发方法来有效管理数据必定能够提供面向工具的设计
方法所无法企及的设计效率。
作者简介:
Bob Potock已在Veribest公司(现已经被Mentor Graphics公司收购,成为Mentor Graphics公司系
统设计部门的一部分)工作三年,现在是CAE解决方案总监。他有十余年的EDA行业工程和管理经验,曾
在Cadnetix、NeoCAD、Intel、AT&T Bell Labs和Unisys等公司工作。
David Brady是Veribest公司CAE结构设计师,曾任职于Mentor Graphics和Trimiter Technologies
等公司,有10余年的EDA行业经验。在从事EDA工作之前,Dave是Northrop 技术和研究中心的IC设计工程