synopsys简易教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以.cshrc 及用户根目录下的.synopsys_vss.setup .synopsys_dc.setup 已经配置为前提)1.创建工作目录;
2.编写vhdl源程序;
3.编写.synopsys_vss.setup 和.synopsys_dc.setup文件;
4.编译vhdl源程序;
5.运行vhdldbx 仿真器;
6.运行synopsys的综合器;
7.完成综合后的门级仿真;
以一个一位加法器为例,进行具体说明(用户界面为CDE):
1)创建adder 目录:
可以在资源管理器中完成,也可以在unix环境下完成:mkdir adder;
2)在adder目录下创建work目录;
3)编写.synopsys_vss.setup文件并存入adder目录;.synopsys_vss.setup的内容如下:WORK >DEFAULT
DEFAULT:work
TIMEBASE = NS
4)编写一位加法器的源程序(adder1.vhd)并存入adder目录下:
library ieee;
use ieee.std_logic_1164.all;
entity adder1 is
port(din1 : in std_logic;
din2 : in std_logic;
cin : in std_logic;
dout: out std_logic;
cout: out std_logic);
end adder1;
architecture rtl of adder1 is
begin
dout <= din1 xor din2 xor cin;
cout <= (din1 and din2) or (cin and (din1 xor din2));
end rtl;
5)编写一位加法器的测试基准(即test_bench)并存入adder目录下:(tb_adder1.vhd)library ieee;
use ieee.std_logic_1164.all;
entity tb_adder1 is
end tb_adder1;
architecture rtl of tb_adder1 is
component adder1 is
port(din1 : in std_logic;
din2 : in std_logic;
cin : in std_logic;
dout: out std_logic;
cout: out std_logic);
end component ;
signal din1 : std_logic:='1';
signal din2 : std_logic:='0';
signal cin : std_logic;
signal dout : std_logic;
signal cout : std_logic;
for all : adder1 use entity work.adder1(rtl);
begin
u1 : adder1 port map(din1,din2,cin,dout,cout);
din1 <= not din1 after 10 ns;
din2 <= not din2 after 20 ns;
cin <= '0','1' after 40 ns;
end rtl;
configuration test_adder1 of tb_adder1 is
for rtl
end for;
end test_adder1;
6)编译源程序:
有两种方法可供使用:
A:使用命令vhdlan adder1.vhd tb_adder1.vhd
B:用批处理文件。如analyze.sh
vhdlan –noevent \
adder1.vhd \
tb_adder1.vhd
保存文件analyze.sh,并将其属性(property)改为可执行。方法如下:可以在文件管理器中修改,也可以用unix命令:chmod 755 analyze.sh
7)模拟(仿真):
使用仿真命令:vhdldbx &
注:在仿真器中常用的命令如下:trace,step,next,monitor,run,list,lv (-v),quit等;具体用法参考相应的文档资料。
8)综合:
使用命令:design_analyzer &
注:(1)综合器中常用的命令如下:read,clock_specify,design_enviroment,optimization 等;具体用法参考相应的文档资料。
(2)如果有自己的工艺库,则应将根目录下的.synopsys_dc.setup 修改为:
search path :
link library =
target library =
symbol library =
9)保存文件:
将文件保存为vhdl格式,如adder_syn.vhd
10)修改原来的testbench:
将tb_adder1.vhd 中的for all : adder1 use entity work.adder1(rtl);改为:for all : adder1 use entity work.adder(syn_rtl);(syn_rtl为adder_syn.vhd中,adder1的结构体名)。
11)编译:与第6步相同。
12)仿真:与第7步相同。
注:若须打印波形,则应将其存为.ps文件(如:wave.ps);然后使用打印命令,选择打印选项为文件形式,并写入文件名(如:wave.ps)。