当前位置:文档之家› 4_第三章系统的层次化设计和模块划分

4_第三章系统的层次化设计和模块划分


系统的层次化设计和模块划分 Ø 3.2
层次结构和模块划分及修改
随着技术的发展,IC设计的规模越来越 大。系统设计公司为了降低整个系统的成本 ,提高设计的性能,总是希望把更多的电路 集成到单一的芯片里,即发展系统芯片( System On Chip,简称SOC)。 IC系统设计中,层次化设计越来越广泛。
2
系统的层次化设计和模块划分
Ø
Ø
3.1.1 设计物体(Design Object)
1. 设计(Design): 设计就是完成一定逻辑功能的电路描述,设计可以是单独的一个 描述也可以在内部包含其他的子设计,虽然子设计是当前设计的一部 分,但是Synopsys 将它们当作另外的设计来看待。 2. 端口(Port): 一般就是指设计的输入、输出端,它是设计与外界联系的窗口。 [get_ports *] 3. 时钟(Clock): 时钟的源可以是端口也可以是引脚,时钟的指定可以在库的内部也 可以用dc_shell 的命令来实现。[get_clocks *] 4. 连线(Net): 连线可以将端口或引脚相互连接起来实现设计的组装和电路的连 通。 [get_nets *] 5. 单元(Cell): 它是子设计在设计中的实例(instance)名,在Synopsys 术语中 单元和实例不区分对待,它们都是单元。[get_cells *] 6. 引脚(Pin) 它是设计内部单元的输入、输出端,与端口不同的是,端口是设计 用来对外联系的。[get_pins *]
系统的层次化设计和模块划分
Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø
reset_design set_all_in_ex_clk [remove_from_collection \ [all_inputs] [get_ports Clk]] create_clock –period 8 [get_ports Clk] set_input_delay –max 4.8 –clock Clk $all_in_ex_clk set_output_delay –max 4.8 –clock Clk [all_outputs] set_operating_condition –max slow_125_1.62 set_wire_load_model –name 40KAGTES set_driving_cell –lib_cell inv1a1 $all_in_ex_clk set MAX_LOAD [expr [load_of \ ssc_core_slow/buf1a1/A] * 10 ] set_max_capacitance $ MAX_LOAD $all_in_ex_clk set_load [expr $MAX_LOAD * 4 ] [all_outputs] compile
系统的层次化设计和模块划分
其它
和 C base 语言一样,反斜线可将特殊的字符做跳脱处理。 例如 \n 代表换行符号。在 TCL 语言里,如果一个指令 超过一行,亦可在行尾使用反斜线做为续行的符号 (VB 指令如果超过一行,则是在行尾用底线符号代表续行) 。 分号与换行号 代表一个 TCL 指令的结束符号。
系统的层次化设计和模块划分
Ø
设计时,为了得到最优的电路,我们需要对整个电 路作层次结构的设计,对整个设计进行划分,使每 个模块以及整个电路的综合结果能满足我们的目标 。
Ø
如上图,A、B、C各自有输入和输出端口,在DC对 整个电路做综合时,必须保留每个模块的端口,因 此,逻辑综合不能穿越模块边界,相邻模块的组合 逻辑也不能合并, 那我们怎样划分,才能使它们更好的做综合呢?
系统的层次化设计和模块划分
Ø
如下图的划分,我们将得到最好的划分。把相关的 组合电路组合到一个模块,原来模块A、B和C中的 组合电路没有了层次的分隔,综合工具中对组合电 路优化的技术能得到充分的使用。并且,由于组合 电路和寄存器的数据输入端相连,综合工具在对时 序电路进行优化时,可以选择一个更复杂的触发器 ,把一部分组合电路吸收集成到触发器里。从而使 电路的面积更小,从寄存器A到寄存器C的路径的延 时更短。
系统的层次化设计和模块划分
第三章:系统的层次化设计和模块划分
系统的层次化设计和模块划分
3.1 设计组成及DC-Tcl
设计是进行逻辑功能的电路描述。 常用格式: VHDL、Verilog HDL、状态机(State Machine)、EDIF; EDIF: Electronic Design Interchange Format 为了分析和了解电路的功能和时序,DC把许多属性附加在电路 上,属性和约束是直接附加到设计物体上。如: 端口(Ports) 可以有方向、驱动单元、最大电容等的属性和约束。 单元(Cells) 可以有功能、连线、面积的大小和时间信息的属性。 设计(Designs) 可以有面积、最大工作条件、功耗等的属性和约束。
系统的层次化设计和模块划分
Ø
下表所列的符号在 TCL 语言里有特殊的意义:
置换符号 (substitution symbols)
$
变量值置换符号。$ 符号用来取出指定变量的值。底下利用 set 指令设定 x 变量的值,并用 puts 指令输出 x 的内容 到 Console: set x 5 puts stdout $x 如上列最后一行程序代码,取出变数值时需在变量名称前 加上 $ 符号。 命令置换符号。TCL 将中括号中的内容视为一个指令,会 执行其中的指令并将结果传回。例如 Demo1.tcl L5: puts "$x + $y = [expr $x + $y]" 在做完 x 与 y 两个变数的置换后,TCL解译器遇到中括号 认为其中为另一个可执行的指令,指令名称为 expr。在 执行 expr指令前,TCL 先将 x 与 y 值置换后,传递给 expr 指令并呼叫执行之。expr 指令用来做数学式子的运 算,会负责剖析参数并做数学运算。
系统的层次化设计和模块划分
Ø
理想情况下,所有的划分应该在写HDL代码前 已经计划好。
初始的划分有HDL定义好 初始的划分可以用Design C的几个原因:
• • • • •
不同的功能块 设计大小和复杂度 方便设计的团队管理项目 设计再使用 满足物理约束
系统的层次化设计和模块划分
Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø
底下是一个简单的 TCL Script 与执行后的输出: # Demo1.tcl puts stdout one; puts stdout two set x 4 set y 6 puts "$x + $y = [expr $x + $y]" puts {$x + $y = [expr $x + $y]} puts "Hello\n\nTCL!" % ./Demo1.tcl one two 4 + 6 = 10 $x + $y = [expr $x + $y] Hello TCL!
系统的层次化设计和模块划分
Ø
TCL Script 可视为一个包含许多 TCL 指令 (TCL command) 的程序,一个 TCL 指令的基本语法为:
command arg1 arg2 arg3 …. • 在 TCL 语言中,每行指令的第一个单字为指令名称 • 空格符用来分隔指令名称与各个个别的参数 • 个别指令的分隔是以分号与换行符号作为分隔符 • 一个参数如果超过一个英文单字 (亦即字符串中间穿插空白 或其它符号),可用双引号与大括号将这些元素组成 (grouping) 单一一个参数。使用双引号与大括号的差别, 在于TCL针对双引号中的字符串会做置换处理 (substitution),例如变量值的代换或是执行包含于字符串 中的 TCL 指令(使用中括号来表示),而对于大括号所括住 的内容 TCL则不会有这些置换处理。
\
#
批注符号。通常我们会在一行程序代码的第一个字符打上 # 符号,以代表本行程序为批注。注意!如果在 # 符号 前有 TCL 指令,必须像这样做: puts hello ;# here is comment 亦即,在 # 符号前加上一个分号代表前面指令的结束。如 果不这么做,那TCL 便会把 # 视为一个参数丢给 puts指 令去做处理。
系统的层次化设计和模块划分 Ø 3.2.1
层次结构的概念
RAM MPEG4 CONDEC RISC_CORE
USB JTAG DSP A/D
系统的层次化设计和模块划分 Ø 3.2.2
IC模块的划分
SOC设计是由多个模块组成,对于设计 复杂规模又大的电路,我们需要对它进行划 分(Partitioning),然后对划分后比较简单 规模又小的电路作处理。
[]
系统的层次化设计和模块划分
群组 (grouping symbols)
“” {}
双引号可将多个元素组成单一一个参数,引号内的内容会 被 TCL 进行置换处理,包括变量置换与命令置换。 大括号的功能与双引号相同,但 TCL 不会对括号中的内 容做任何解释或处理,会照将括号中的内容视为一个 参数,照本宣科原原本本地传递给指令去处理。例如 Demo1.tcl L6: puts {$x + $y = [expr $x + $y]} 因为 TCL 对大括号中的内容不做任何处理,因此它的输 出为 $x + $y = [expr $x + $y]。另外,TCL 不会将大括 号中的换行符号视为一个指令的结束,如果一个指令 的参数很长时,我们就可以利用大括号这样写,把换 行符号当成是参数的一部份: puts {$x + $y = [expr $x + $y ] }
系统的层次化设计和模块划分
Ø
如果我们对设计的划分作如下修改,如下图 ,相关的组合电路组合到一个模块,原来模 块A、B和C中的组合电路没有了层次的分隔 ,综合工具中对组合电路优化的技术现在能 得到充分的使用。这时,电路的面积比原来 要小,从寄存器A到寄存器C的路径地延时也 短了。这是最好的划分了么?
相关主题