数字集成电路的设计流程设计输入,以电路图或 HDL语言的形式形成电路文件;输入的文件经过编译后,可以形成对电路逻辑模型的标准描述;
逻辑仿真(功能仿真),对如上形成的逻辑描述加入输入测试信号,检查输出信号是否满足设计要求;在此没有考虑任何时间关系,只是检测逻辑是否有错;
数字集成电路的设计流程系统分割(设计综合),采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;在 GA设计时,电路会分割为 2-3输入的逻辑单元,
在 FPGA设计中,分割为 4输入逻辑单元,而采用 CPLD设计时,则分割为更大的逻辑单元。
数字集成电路的设计流程系统分割(设计综合),采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;在 GA设计时,电路会分割为 2-3输入的逻辑单元,
在 FPGA设计中,分割为 4输入逻辑单元,而采用 CPLD设计时,则分割为更大的逻辑单元。
数字集成电路的设计流程前仿真,采用综合出的电路结构,对每个逻辑单元添加上对应的时间延迟信息;在此基础上进行仿真,检测电路是否存在逻辑或时序错误;
电路的布局,定位与布线,对于通过前仿真的电路系统,从全局到局部,进行每个单元的定位以及相关的连线安排;
数字集成电路的设计流程电路参数提取,根据连线的具体长度和负载程度,提取每一根连线的电阻 /电容参数,得到相应的时间延迟信息;
后仿真,将提取的连线参数代入到电路中,
在此基础上进行仿真,检测电路是否存在逻辑或时序错误;
数字集成电路的设计流程
CAD阶段 (20世纪 60- 80年代初期 )
利用计算机辅助进行 IC版图编辑,PCB
布局布线,取代手工操作。出现大量的软件工具产品。
由于各公司独立开发,设计各阶段的软件彼此独立,不能进行系统级的仿真与综合,不利于复杂系统设计。
电子系统设计的自动化过程
CAE阶段 (80年代到 90年代初期 )
各种设计工具,如原理图输入、编译与链接、逻辑模拟、测试码生成、版图自动布局以及各种单元库均已齐全。可以由
RTL级开始,实现从设计输入到版图输出的全过程设计自动化。
各种底层文本设计语言开始涌现。
电子系统设计的自动化过程
EDA阶段 (20世纪 90年代以后 )
开始追求贯彻整个设计过程的自动化,
硬件描述语言 (HDL)已经成为广泛使用的标准,设计的工具也已经相对成熟,从设计输入、逻辑综合到各层次的仿真工具都已具备比较完善的性能。设计者可将精力集中于创造性的方案与概念的构思上。
电子系统设计的自动化过程在逻辑设计阶段,针对设计的输入编辑、
仿真和综合过程,需要使用必要的软件工具进行支持;
这种设计工具主要可以分为两类:
一类是由 PLD的制造商推出的针对特定器件的设计工具;另一类是由专业软件公司推出的针对特定用途的设计工具。
数字集成电路的设计工具由 PLD的制造商推出,例如 Altera公司的
Maxplus II,Quartus II,Xilinx公司的
ISE等。这类工具的优点是从设计输入直到器件下载,设计的全过程都能在一个工具中实现,使用非常简单方便;缺点是该类工具以器件综合为目标,对于不能实现直接综合的电路的行为设计不能支持。
针对特定器件的设计工具由专业的工具设计者推出,例如 Synplicity公司的综合工具 Synplify,Model Technology公司的仿真工具 ModelSim等。这类工具通常专业性比较强,包容性好,可以最大限度地兼容
HDL语言的各种描述,适应从抽象到具体的各种设计方式。缺点是其专用性比较强,使用的简便性不及第一类。
针对特定用途的设计工具仿真工具 ModelSim
综合工具 Synplify
设计工具 Maxplus II,Quartus
关于设计工具的简单介绍仿真工具用于对 HDL程序进行仿真,采用软件运算形式对电路功能进行验证;该仿真工具全面支持 IEEE常见的各种硬件描述语言标准,支持语言中的各种抽象行为描述,可以用于对电路设计各阶段的仿真。
HDL仿真工具,Modelsim
软件安装;
点击图标,打开程序;
建立项目( Project),File/New/Project
为项目命名,并确定路径和工作库;
建立源文件,File/New/Source/VHDL;
例:设计一个全加器
Modelsim SE 5.5e使用要点
ENTITY fa IS
PORT (
a,b,ci,IN bit;
co,s,OUT bit);
END fa;
ARCHITECTURE rtl OF fa IS
BEGIN
s<=a xor b xor ci;
co<=(a and b) or (a and ci) or (b and ci);
end rtl;
Modelsim SE 5.5e使用要点进行编辑,保存文件:命名 /指定路径;
在源程序编辑窗口中对已保存的文件进行编译,
结果可以在项目窗口中看到;
编译完成后,在项目窗口中将文件添加到项目中,Project/Add File to Project;
在其他工具中编译的文件也可以直接添加到项目中。
Modelsim SE 5.5e使用要点在项目窗口中,装载设计项目,vsim
fulladder;打开波形窗口,view wave *;
将信号端口添加到波形窗口中,add wave *;
对各输入信号进行设置:
force -repeat 20 ns a 0 0 ns,1 10 ns
force -repeat 40 ns b 0 0 ns,1 20 ns
force -repeat 80 ns ci 0 0 ns,1 40 ns
Modelsim SE 5.5e使用要点设置完毕后,在波形窗口中进行仿真并观察结果;
仿真完毕后,可以执行 quit – sim
命令退出仿真;
Modelsim SE 5.5e使用要点
Modelsim SE 5.5e使用要点在上述仿真中,没有考虑延迟时间,输入变化与输出变化发生在同一时刻,这属于逻辑仿真。
如果考虑器件的时间延迟,可以将源程序中的信号赋值语句改为如下形式:
s<=a xor b xor ci after 7 ns;
co<=(a and b) or (a and ci) or (b and
ci) after 4 ns;
Modelsim SE 5.5e使用要点
Modelsim SE 5.5e使用要点仿真测试文件,testbench
testbench相当于一块电路板,将 HDL程序描述的电路块安装在上面;
该电路块与外界没有任何接口,其功能仅仅是对电路块进行仿真测试,将各种驱动信号和输出信号在波形窗口中表达出来;
HDL程序以元件例化的形式被 testbench程序调用;
仿真测试文件,testbench
library ieee;
use ieee.std_logic_1164.all;
entity fa_testbench is
end fa_testbench;
architecture beh of fa_testbench is
component fa
port (a,b,ci,in std_logic;
s,co,out std_logic);
end component;
signal xt,yt,zt,st,cot:std_logic;
begin
u1,fa port map (xt,yt,zt,st,cot);
process
begin
xt<='0';yt<='0';zt<='0'; wait for 10 ns;
xt<='0';yt<='0';zt<='1'; wait for 10 ns;
xt<='0';yt<='1';zt<='0'; wait for 10 ns;
xt<='0';yt<='1';zt<='1'; wait for 10 ns;
xt<='1';yt<='0';zt<='0'; wait for 10 ns;
xt<='1';yt<='0';zt<='1'; wait for 10 ns;
xt<='1';yt<='1';zt<='0'; wait for 10 ns;
xt<='1';yt<='1';zt<='1'; wait for 10 ns;
xt<='0';yt<='0';zt<='0'; wait for 10 ns;
end process;
end beh;
仿真测试文件,testbench
先分别将源程序和 testbench程序添加到项目中;
先编辑编译源程序,再编辑编译 testbench程序;
装载已编译的 testbench程序:
vsim mytestbench
打开波形窗口,view wave *
将设计的信号添加到波形窗口中,add wave *
直接在波形窗口中执行,run”命令进行仿真;
电路仿真的要点使用输入向量对电路模型进行测试;
仿真失败表明该模型存在错误(不能工作);
仿真成功不能证明该模型正确,能够工作 !
电路仿真的要点使用输入向量对电路模型进行测试;
仿真失败表明该模型存在错误(不能工作);
仿真成功不能证明该模型正确 !
仿真可以从高级别到低级别分为很多层次,高级别比较抽象,低级别比较详细。
行为仿真对于行为模型进行仿真:
根据输入的变化或指定的时间,开始一个仿真循环,执行所有进程;
每个进程启动执行到其中止为止;
模型中的有效信号更新时,会产生一个事件;
如果在本仿真循环中有信号产生了事件,则仿真将重新执行一遍;
仿真循环的执行时间为 delta时间。
结构仿真对于电路逻辑结构模型进行仿真:
结构仿真可以根据使用器件的情况,为不同的元件添加不同的延迟时间,所以能够在一定程度上反映出电路的时间性能,并分析影响电路速度的关键因素,便于对电路进行修改。
电路仿真对于布局布线后的电路模型进行仿真:
电路仿真可以根据器件的布局和连接情况,通过从电路中提取连线物理参数,估算出连线延迟,从而为电路中信号的传递附加传输延迟,
能够更准确地反映出电路的时间性能,便于进行电路的时序设计修改。
逻辑仿真(功能仿真),对如上形成的逻辑描述加入输入测试信号,检查输出信号是否满足设计要求;在此没有考虑任何时间关系,只是检测逻辑是否有错;
数字集成电路的设计流程系统分割(设计综合),采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;在 GA设计时,电路会分割为 2-3输入的逻辑单元,
在 FPGA设计中,分割为 4输入逻辑单元,而采用 CPLD设计时,则分割为更大的逻辑单元。
数字集成电路的设计流程系统分割(设计综合),采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;在 GA设计时,电路会分割为 2-3输入的逻辑单元,
在 FPGA设计中,分割为 4输入逻辑单元,而采用 CPLD设计时,则分割为更大的逻辑单元。
数字集成电路的设计流程前仿真,采用综合出的电路结构,对每个逻辑单元添加上对应的时间延迟信息;在此基础上进行仿真,检测电路是否存在逻辑或时序错误;
电路的布局,定位与布线,对于通过前仿真的电路系统,从全局到局部,进行每个单元的定位以及相关的连线安排;
数字集成电路的设计流程电路参数提取,根据连线的具体长度和负载程度,提取每一根连线的电阻 /电容参数,得到相应的时间延迟信息;
后仿真,将提取的连线参数代入到电路中,
在此基础上进行仿真,检测电路是否存在逻辑或时序错误;
数字集成电路的设计流程
CAD阶段 (20世纪 60- 80年代初期 )
利用计算机辅助进行 IC版图编辑,PCB
布局布线,取代手工操作。出现大量的软件工具产品。
由于各公司独立开发,设计各阶段的软件彼此独立,不能进行系统级的仿真与综合,不利于复杂系统设计。
电子系统设计的自动化过程
CAE阶段 (80年代到 90年代初期 )
各种设计工具,如原理图输入、编译与链接、逻辑模拟、测试码生成、版图自动布局以及各种单元库均已齐全。可以由
RTL级开始,实现从设计输入到版图输出的全过程设计自动化。
各种底层文本设计语言开始涌现。
电子系统设计的自动化过程
EDA阶段 (20世纪 90年代以后 )
开始追求贯彻整个设计过程的自动化,
硬件描述语言 (HDL)已经成为广泛使用的标准,设计的工具也已经相对成熟,从设计输入、逻辑综合到各层次的仿真工具都已具备比较完善的性能。设计者可将精力集中于创造性的方案与概念的构思上。
电子系统设计的自动化过程在逻辑设计阶段,针对设计的输入编辑、
仿真和综合过程,需要使用必要的软件工具进行支持;
这种设计工具主要可以分为两类:
一类是由 PLD的制造商推出的针对特定器件的设计工具;另一类是由专业软件公司推出的针对特定用途的设计工具。
数字集成电路的设计工具由 PLD的制造商推出,例如 Altera公司的
Maxplus II,Quartus II,Xilinx公司的
ISE等。这类工具的优点是从设计输入直到器件下载,设计的全过程都能在一个工具中实现,使用非常简单方便;缺点是该类工具以器件综合为目标,对于不能实现直接综合的电路的行为设计不能支持。
针对特定器件的设计工具由专业的工具设计者推出,例如 Synplicity公司的综合工具 Synplify,Model Technology公司的仿真工具 ModelSim等。这类工具通常专业性比较强,包容性好,可以最大限度地兼容
HDL语言的各种描述,适应从抽象到具体的各种设计方式。缺点是其专用性比较强,使用的简便性不及第一类。
针对特定用途的设计工具仿真工具 ModelSim
综合工具 Synplify
设计工具 Maxplus II,Quartus
关于设计工具的简单介绍仿真工具用于对 HDL程序进行仿真,采用软件运算形式对电路功能进行验证;该仿真工具全面支持 IEEE常见的各种硬件描述语言标准,支持语言中的各种抽象行为描述,可以用于对电路设计各阶段的仿真。
HDL仿真工具,Modelsim
软件安装;
点击图标,打开程序;
建立项目( Project),File/New/Project
为项目命名,并确定路径和工作库;
建立源文件,File/New/Source/VHDL;
例:设计一个全加器
Modelsim SE 5.5e使用要点
ENTITY fa IS
PORT (
a,b,ci,IN bit;
co,s,OUT bit);
END fa;
ARCHITECTURE rtl OF fa IS
BEGIN
s<=a xor b xor ci;
co<=(a and b) or (a and ci) or (b and ci);
end rtl;
Modelsim SE 5.5e使用要点进行编辑,保存文件:命名 /指定路径;
在源程序编辑窗口中对已保存的文件进行编译,
结果可以在项目窗口中看到;
编译完成后,在项目窗口中将文件添加到项目中,Project/Add File to Project;
在其他工具中编译的文件也可以直接添加到项目中。
Modelsim SE 5.5e使用要点在项目窗口中,装载设计项目,vsim
fulladder;打开波形窗口,view wave *;
将信号端口添加到波形窗口中,add wave *;
对各输入信号进行设置:
force -repeat 20 ns a 0 0 ns,1 10 ns
force -repeat 40 ns b 0 0 ns,1 20 ns
force -repeat 80 ns ci 0 0 ns,1 40 ns
Modelsim SE 5.5e使用要点设置完毕后,在波形窗口中进行仿真并观察结果;
仿真完毕后,可以执行 quit – sim
命令退出仿真;
Modelsim SE 5.5e使用要点
Modelsim SE 5.5e使用要点在上述仿真中,没有考虑延迟时间,输入变化与输出变化发生在同一时刻,这属于逻辑仿真。
如果考虑器件的时间延迟,可以将源程序中的信号赋值语句改为如下形式:
s<=a xor b xor ci after 7 ns;
co<=(a and b) or (a and ci) or (b and
ci) after 4 ns;
Modelsim SE 5.5e使用要点
Modelsim SE 5.5e使用要点仿真测试文件,testbench
testbench相当于一块电路板,将 HDL程序描述的电路块安装在上面;
该电路块与外界没有任何接口,其功能仅仅是对电路块进行仿真测试,将各种驱动信号和输出信号在波形窗口中表达出来;
HDL程序以元件例化的形式被 testbench程序调用;
仿真测试文件,testbench
library ieee;
use ieee.std_logic_1164.all;
entity fa_testbench is
end fa_testbench;
architecture beh of fa_testbench is
component fa
port (a,b,ci,in std_logic;
s,co,out std_logic);
end component;
signal xt,yt,zt,st,cot:std_logic;
begin
u1,fa port map (xt,yt,zt,st,cot);
process
begin
xt<='0';yt<='0';zt<='0'; wait for 10 ns;
xt<='0';yt<='0';zt<='1'; wait for 10 ns;
xt<='0';yt<='1';zt<='0'; wait for 10 ns;
xt<='0';yt<='1';zt<='1'; wait for 10 ns;
xt<='1';yt<='0';zt<='0'; wait for 10 ns;
xt<='1';yt<='0';zt<='1'; wait for 10 ns;
xt<='1';yt<='1';zt<='0'; wait for 10 ns;
xt<='1';yt<='1';zt<='1'; wait for 10 ns;
xt<='0';yt<='0';zt<='0'; wait for 10 ns;
end process;
end beh;
仿真测试文件,testbench
先分别将源程序和 testbench程序添加到项目中;
先编辑编译源程序,再编辑编译 testbench程序;
装载已编译的 testbench程序:
vsim mytestbench
打开波形窗口,view wave *
将设计的信号添加到波形窗口中,add wave *
直接在波形窗口中执行,run”命令进行仿真;
电路仿真的要点使用输入向量对电路模型进行测试;
仿真失败表明该模型存在错误(不能工作);
仿真成功不能证明该模型正确,能够工作 !
电路仿真的要点使用输入向量对电路模型进行测试;
仿真失败表明该模型存在错误(不能工作);
仿真成功不能证明该模型正确 !
仿真可以从高级别到低级别分为很多层次,高级别比较抽象,低级别比较详细。
行为仿真对于行为模型进行仿真:
根据输入的变化或指定的时间,开始一个仿真循环,执行所有进程;
每个进程启动执行到其中止为止;
模型中的有效信号更新时,会产生一个事件;
如果在本仿真循环中有信号产生了事件,则仿真将重新执行一遍;
仿真循环的执行时间为 delta时间。
结构仿真对于电路逻辑结构模型进行仿真:
结构仿真可以根据使用器件的情况,为不同的元件添加不同的延迟时间,所以能够在一定程度上反映出电路的时间性能,并分析影响电路速度的关键因素,便于对电路进行修改。
电路仿真对于布局布线后的电路模型进行仿真:
电路仿真可以根据器件的布局和连接情况,通过从电路中提取连线物理参数,估算出连线延迟,从而为电路中信号的传递附加传输延迟,
能够更准确地反映出电路的时间性能,便于进行电路的时序设计修改。