首页 理论教育基于状态机的交通灯综合设计

基于状态机的交通灯综合设计

【摘要】:状态机是时序逻辑与组合逻辑完美结合的典型实例。前面章节我们介绍了DC的基础知识和基本用法,本节将通过基于第5章中状态机的交通灯实例来介绍DC是如何完成一个设计的综合的。例6.23在操作系统终端启动的DC后,就可以在DC终端用Tcl命令对综合器进行操作。例6.26完成综合后会得到一个.ddc格式的文件,如图6.39所示。这就是交通灯的门级网表,可将该文件交付给后端部门进行下一步的设计工作,综合流程到此结束。

状态机是时序逻辑与组合逻辑完美结合的典型实例。前面章节我们介绍了DC的基础知识和基本用法,本节将通过基于第5章中状态机的交通灯实例来介绍DC是如何完成一个设计的综合的。

我们在进行综合前必须有的两个文件。一个是目标库文件,通常是.db格式的二进制文件。另外一个是交通灯的RTL源文件,也就是5.2.1节中的例5.12。

首先创建用来做综合的文件夹,取名为lab。在文件夹中添加RTL源文件,DC运行脚本,约束文件和目标库文件,当然还有DC自启动文件.synopsys_dc.setup,如图6.38所示。

978-7-111-55094-5-Chapter06-107.jpg

图6.38 综合文件夹lab

在启动脚本.synopsys_dc.setup里对各种库进行了设置,在终端运行DC即会执行脚本中的内容。该脚本设置目标库,链接库和符号库,如例6.23所示。

例6.23

978-7-111-55094-5-Chapter06-108.jpg

在操作系统终端启动的DC后,就可以在DC终端用Tcl命令对综合器进行操作。在这里我们将这些命令都集中在DC运行脚本dc.tcl中,我们只需在DC终端用source命令启动这个脚本就可以完成全部综合任务,该脚本如例6.24所示。

例6.24

978-7-111-55094-5-Chapter06-109.jpg

从这个脚本可以看出,首先用read_verilog读入RTL文件,并且设置顶层文件,再链接。命令source MY_DESIGN.con启动了约束文件。然后是compile_ultra命令进行综合编译。report_timing>MY_DESIGN.tim命令是将时序报告新建在一个叫作MY_DESIGN.tim的文件里。最后是将编译生成的网表以ddc格式的形式保存下来取名为MY_DESIGN.ddc。其中的约束文件MY_DESIGN.con如例6.25所示。

例6.25

978-7-111-55094-5-Chapter06-110.jpg

978-7-111-55094-5-Chapter06-111.jpg

首先该脚本用reset_design命令重置设计,也就是将DC memory中先前的约束清除。接着设置了一个名为all_in_ex_clk的变量用来表示除了时钟以外的所有输入端口。后面几条命令是创建时钟及对时钟的约束。接着用60%的时间预算约束输入输出端口逻辑的延迟。最后是设置模块的驱动部件和所带的负载。

运行完这两个脚本后,得到的时序报告如例6.26所示。表头含有报告类型,默认选项信息、设计名称、工具版本号和时间信息。下方是工作环境、目标库名和线负载模型。接着下面是报告出的关键路径起点和终点、路径组和时序路径的类型。再下边就是时序报告的主体,分为三个竖栏,第一个竖栏里是时序路径上的各个节点,第二竖栏是前一个节点到本节点的时间差,最后一栏是从起点到本节点的时间累积总和。报告又分为上下两张表,上表是信号通过该时序路径到达终点的时间情况,下表是被约束时钟信号情况下,信号要求应该到达终点的时间情况。要求到达时间减去实际到达时间得到的结果为正数,则说明该时序路径没有违例,符合时序要求。否则,则表示该时序路径违例,不符合时序要求。

例6.26

978-7-111-55094-5-Chapter06-112.jpg

978-7-111-55094-5-Chapter06-113.jpg

978-7-111-55094-5-Chapter06-114.jpg

完成综合后会得到一个.ddc格式的文件,如图6.39所示。这就是交通灯的门级网表,可将该文件交付给后端部门进行下一步的设计工作,综合流程到此结束。

978-7-111-55094-5-Chapter06-115.jpg

图6.39 门级网表文件