Behavioral Compiler Module Compiler 2 file_list][-update][-schedule] elaborate -schedule entity_name -archarch_name 3.给设计时序约束: 初始约束:create_clock set dont use set drive set_driving_cell set input delay set_load bc_margin set_memory_input_delay set_memory_output_delay set_operating_conditions set_wire_load_min_block_size set wire load mode set wire load model set_wire selection _mode 设计检查:bc_check_design 时序和面积预算:bc_time_design[-force][-fastest] 产生时序面积的预算报告:report_resource_estimates 输出时序的.db文件:write 4.约束安排:约束: set cycles set max_cycles set min_cycles set_memory_input_delay set_memory_output_delay pipeline_loop 驱动: bc fsm coding style bc dont register input port bc dont ungroup chain operations dont chain operations ignore_array_precedences ignore_array_loop_precedences ignore_memory_precedences ignore_memory_loop_precedences set common_resource set exclusive use set behavioral reset 用report_scheduling_.constraints显示当前设计上安排的约束。 5.设计安排(scheduling the design): schedule [-effort zero low medium high][-io_mode cycle_fixed superstate_fixed][-extend_latency][-hostname] [-arch remote_host_architecture][-allocation_ effort zero low|medium high] schedule报告: report_schedule [-process process_name][-operations [-mask [r][w][l][L][o][p]][-start start_cycle][-finish end_cycle][-delimiter
Behavioral Compiler 和 Module Compiler 2 file_list] [-update] [-schedule] 如: elaborate -schedule entity_name -arch arch_name 3. 给设计时序约束: 初始约束: create_clock set_dont_use set_drive set_driving_cell set_input_delay set_load bc_margin set_memory_input_delay set_memory_output_delay set_operating_conditions set_wire_load_min_block_size set_wire_load_mode set_wire_load_model set_wire_selection_mode 设计检查 : bc_check_design 时序和面积预算: bc_time_design [-force] [-fastest] 产生时序面积的预算报告: report_resource_estimates 输出时序的.db 文件: write 4. 约束安排: 约束: set_cycles set_max_cycles set_min_cycles set_memory_input_delay set_memory_output_delay pipeline_loop 驱动: bc_fsm_coding_style bc_dont_register_input_port bc_dont_ungroup chain_operations dont_chain_operations ignore_array_precedences ignore_array_loop_precedences ignore_memory_precedences ignore_memory_loop_precedences set_common_resource set_exclusive_use set_behavioral_reset 用 report_scheduling_constraints 显示当前设计上安排的约束。 5. 设计安排(scheduling the design): schedule [-effort zero | low | medium | high] [-io_mode cycle_fixed | superstate_fixed] [-extend_latency] [-hostname] [-arch remote_host_architecture] [-allocation_ effort zero | low| medium | high] schedule 报告: report_schedule [-process process_name] [-operations [-mask [r][w][l][L][o][p]] [-start start_cycle] [-finish end_cycle] [-delimiter
Behavioral Compiler Module Compiler 3 "character"]][-variables [-min min_width][-max max_width][-start start_cycle][-finish end_cycle][-delimiter "character"]][-summary][ abstract_fsm [-mask [r][w][o][s]]] [-verbose_fsm [-mask [r][w][o][d][s]]] 6.写出RTL级文件:rite 写RTL级的.db文件: 写出RTL级HDL仿真文件:vhdlout._levelize=true write -format vhdl -hier -output file name.vhd 7.可综合的RTL输出:write-rtl_script script._file_name 3.2.3脚本范例 analyze -f vhdl cmplx.vhd /analyze the vhdl file * elaborate -s cmplx/*elaborate design for scheduling * create_clock clk -period 10 write -hier -out cmplx_elab.db /*save elaborated design * bc check_design -io super /Here you may wish to add operating conditions and * /wireloads before timing the design * bc time design write -hier -out cmplx_timed.db /*save the timed design * /Begin Scheduling Cycle * /specifying some scheduling constraints * /*set_cycles ...* /scheduling with superstate_fixed mode * schedule -io_mode super /save scheduling reports to file * report schedule -op cmplx schd.rpt report_schedule -summary >>cmplx_schd.rpt /End Scheduling Cycle * write -hier -out cmplx_rtl.db /*save RTL design to a db*/ write -hier -f vhdl -rtl_script rtl.ser -out syn_rtl.vhd /saves synthesizable RTL * vhdlout_levelize =true /*write flattened,simulation-only RTL model*/ vhdlout_use_packages {ieee.std_logic_1164} /include all packages used in the design * write -hier -f vhdl -out cmplx_rtl.vhd /saves simulatable rt level design * 3.2 Module Compiler Moduler Compiler提供了高性能的data-path综合和优化,简化和自动化了data-path设 计,帮设计者解决复杂而没有规则的data-path设计。Module Compiler提供了大量常用 函数来创建data-path blocks..每一个函数都有设置参数的图形界面。由于篇幅的限制,它 的具体操作和命令略
Behavioral Compiler 和 Module Compiler 3 "character"]] [-variables [-min min_width] [-max max_width] [-start start_cycle] [-finish end_cycle] [-delimiter "character"]] [-summary] [- abstract_fsm [-mask [r][w][o][s]]] [-verbose_fsm [-mask [r][w][o][d][s]]] 6. 写出 RTL 级文件: write 写 RTL 级的.db 文件: 写出RTL 级HDL仿真文件: vhdlout_levelize = true write -format vhdl -hier -output file_name.vhd 7. 可综合的 RTL 输出: write -rtl_script script_file_name 3.2.3 脚本范例 analyze -f vhdl cmplx.vhd /* analyze the vhdl file */ elaborate -s cmplx/* elaborate design for scheduling */ create_clock clk -period 10 write -hier -out cmplx_elab.db /*save elaborated design */ bc_check_design -io super /* Here you may wish to add operating conditions and */ /* wireloads before timing the design */ bc_time_design write -hier -out cmplx_timed.db /*save the timed design */ /* Begin Scheduling Cycle */ /* specifying some scheduling constraints */ /*set_cycles ...*/ /* scheduling with superstate_fixed mode */ schedule -io_mode super /* save scheduling reports to file */ report_schedule -op > cmplx_schd.rpt report_schedule -summary >> cmplx_schd.rpt /* End Scheduling Cycle */ write -hier -out cmplx_rtl.db /*save RTL design to a db*/ write -hier -f vhdl -rtl_script rtl.scr -out syn_rtl.vhd /* saves synthesizable RTL */ vhdlout_levelize = true /*write flattened, simulation-only RTL model*/ vhdlout_use_packages = {ieee.std_logic_1164} /* include all packages used in the design */ write -hier -f vhdl -out cmplx_rtl.vhd /* saves simulatable rt level design */ 3.2ModuleCompiler Moduler Compiler 提供了高性能的 data-path 综合和优化,简化和自动化了 data-path 设 计,帮设计者解决复杂而没有规则的 data-path 设计。 Module Compiler 提供了大量常用 函数来创建 data-path blocks.每一个函数都有设置参数的图形界面。由于篇幅的限制,它 的具体操作和命令略
逻辑综合 第4章 逻辑综合 4.1逻辑综合概述 4.1.1逻辑综合的概念 综合(synthesis):就是把思想转换为实现欲想功能的可制造的设计。综合是约束驱动 和基于路径的。 在这里,综合也就是把行为级或RTL级的HDL描述转换为门级电路的过程,用公式表示 就是: 综合等于=翻译+优化+映射 Synthesis =Transiation Optimization Mapping 用图形表示就是:(见图4.1) residue 16'h0000: if (high_bits ==2'bl0) residue state_table[index]: Translate else state_table[index]16'h0000; HDL Source Optimize Map Generic Boolean GTECH Target Technology 图4.1综合的概念 4.1.2逻辑综合的工具介绍 ●工具操作界面 设计编译器(Design Compiler简称DC)是Synopsys综合工具的核心。综合一个设计 时,可以选用两种界面:A。设计分析器(Design Analyzer简称DA)-图形窗口界面。B。 dc_shell一命令行界面
逻辑综合 1 第 4 章 逻辑综合 4.1 逻辑综合概述 4.1.1 逻辑综合的概念 综合(synthesis):就是把思想转换为实现欲想功能的可制造的设计。综合是约束驱动 和基于路径的。 在这里,综合也就是把行为级或 RTL 级的 HDL 描述转换为门级电路的过程,用公式表示 就是: 综合等于 = 翻译 + 优化 + 映射 ( Synthesis = Transiation + Optimization + Mapping ) 用图形表示就是:(见图 4.1) 图 4.1 综合的概念 4.1.2 逻辑综合的工具介绍 工具操作界面 设计编译器(Design Compiler 简称 DC)是 Synopsys 综合工具的核心。综合一个设计 时,可以选用两种界面: A 。设计分析器(Design Analyzer 简称 DA)-图形窗口界面。 B 。 dc_shell—命令行界面。 residue = 16'h0000; if (high_bits == 2'b10) residue = state_table[index]; else state_table[index] = 16'h0000; Translate Optimize + Map HDL Source Generic Boolean ( GTECH ) Target Technology
逻辑综合 2 DA图形窗口界面的启动:%da dc_shell命令行界面的启动:%dcshell dc_shell界面的提示符为:dc_shel1> dc_shell命令行界面支持两种脚本语言:dcsh模式和detcl模式。 dcsh是使用源于Synopsys的语言。dctcl使用工具命令语言(Tool Command Langugae)。 dcsh模式和dctcl模式比较 tcl是一种开放型的工业标准语言。它比dc_shel1更加强大。 启动dcsh模式用dc_shell命令,启动dctcl模式用dc_shell-t Detel dcsh 广泛的在线帮助 有限的在线帮助 工业标准的开放式接口 Synopsys的专有接口 广泛的文件和字符串操作能力 有限或无文件和字符串操作 可用户定义过程 无用户定义过程 支持变量数列 不支持数列 不被DA支持 为DA支持 有限的脚本或知识基础 有脚本或知识基础 如果你已经有了dcsh的setup文件或脚本文件(.scr),你想转换为Tcl的setup文件 和约束文件,则我们只需执行下面命令即可. setup文件的转换: 设dcsh的setup文件为.synopsys_dc.setup.old,要转换为Tcl的setup文 件.synopsys_dc.setup则 dc-transcript.synopsys_dc.setup.old.synopsys_dc.setup 脚本文件的转换: 设dcsh的约束文件为old_scriptfile..scr,dctcl的约束文件为tcl_script.tcl,则 dc-transcript old_scriptfile.scr tcl_script.tcl 由于dcsh和dctel是可以转换的,以下的介绍中,在支持dcsh的地方,将都用dcsh 命令。 Synopsys格式 大多数Synopsys产品都支持和共享一个公用的中间结构-”db”格式。db文件是描述 文本数据的二进制已编译表格式。DC可以读和写以下的所有格式:Verilog,VHDL, EDIF。 4.1.3逻辑综合的流程 流程图如图4.2:
逻辑综合 2 DA 图形窗口界面的启动:%da dc_shell 命令行界面的启动;%dc_shell dc_shell 界面的提示符为:dc_shell > dc_shell 命令行界面支持两种脚本语言:dcsh 模式和 dctcl 模式。 dcsh 是使用源于 Synopsys 的语言。 dctcl 使用工具命令语言( Tool Command Langugae )。 dcsh 模式和 dctcl 模式比较 tcl 是一种开放型的工业标准语言。它比 dc_shell 更加强大。 启动 dcsh 模式用 dc_shell 命令,启动 dctcl 模式用 dc_shell -t Dctcl dcsh 广泛的在线帮助 有限的在线帮助 工业标准的开放式接口 Synopsys 的专有接口 广泛的文件和字符串操作能力 有限或无文件和字符串操作 可用户定义过程 无用户定义过程 支持变量数列 不支持数列 不被 DA 支持 为 DA 支持 有限的脚本或知识基础 有脚本或知识基础 如果你已经有了 dcsh 的 setup 文件或脚本文件(.scr),你想转换为 Tcl 的 setup 文件 和约束文件,则我们只需执行下面命令即可. setup 文件的转换: 设 dcsh 的 setup 文件为.synopsys_dc.setup.old,要转换为 Tcl 的 setup 文 件.synopsys_dc.setup 则 % dc-transcript .synopsys_dc.setup.old .synopsys_dc.setup 脚本文件的转换: 设 dcsh 的约束文件为 old_scriptfile.scr,dctcl 的约束文件为 tcl_script.tcl ,则 % dc-transcript old_scriptfile.scr tcl_script.tcl 由于 dcsh 和 dctcl 是可以转换的,以下的介绍中,在支持 dcsh 的地方,将都用 dcsh 命令。 Synopsys 格式 大多数 Synopsys 产品都支持和共享一个公用的中间结构--”db”格式。 db 文件是描述 文本数据的二进制已编译表格式。 DC 可以读和写以下的所有格式: Verilog , VHDL , EDIF 。 4.1.3 逻辑综合的流程 流程图如图 4.2 :
逻辑综合 3 Start Read In Design Rewrite HDL Code Set Attributes Change Constraints Define Optimization Modify Compile and Set Attribnte Attributes Ungroup Check Design Design Blocks Yes Errors? Fix Errors No Optimize Report Good No Results? Yes Done 图4.2逻辑综合设计流程 4.2 setup文件,库以及一些基本概念 4.2.1 setup文件 把行为级描述转换为门级电路,在映射过程种,必须有技术库的支持,否则它将找不 参照的元器件。为此我们在综合前必须在setup文件中设置好综合所需的技术库。这里所 需的技术库的格式为.db和.sdb格式。技术库的描述略。 Synopsys的设计编译器(Design Compiler,简称DC)提供了三个同名的setup文 件.synopsys_.dc.setup。一个为安装目录下的setup文件,它提供系统管理员指定的系统 变量设置。一个为你根目录下的setup文件,它提供你的工作环境变量的设置:公司的名 字,你的名字,背景色。这是由用户指定的DC值。 一个为你工作目录下的setup文件,它规定了你设计所指定的DC值,如: search path,target library,link library,symbol library. 启动DC工具时,它依次读入这三个文件,且读的越后的文件优先级别更高,即相同的
逻辑综合 3 图 4.2 逻辑综合设计流程 4.2 setup 文件,库以及一些基本概念 4.2.1 setup 文件 把行为级描述转换为门级电路,在映射过程种,必须有技术库的支持,否则它将找不 参照的元器件。为此我们在综合前必须在 setup 文件中设置好综合所需的技术库。这里所 需的技术库的格式为.db 和.sdb 格式。技术库的描述略。 Synopsys 的设计编译器(Design Compiler,简称 DC)提供了三个同名的 setup 文 件.synopsys_dc.setup 。一个为安装目录下的 setup 文件,它提供系统管理员指定的系统 变量设置。一个为你根目录下的 setup 文件,它提供你的工作环境变量的设置:公司的名 字,你的名字,背景色。这是由用户指定的 DC 值。 一个为你工作目录下的 setup 文件,它规定了你设计所指定的 DC 值,如: search path, target library, link library , symbol library. 启动 DC 工具时,它依次读入这三个文件,且读的越后的文件优先级别更高,即相同的