首页 > 其他分享 >Oasys-RTL工具的使用(一)

Oasys-RTL工具的使用(一)

时间:2023-01-19 12:44:06浏览次数:34  
标签:文件 Oasys lef lib RTL test timing 工具

Oasys-RTL工具的作用,用官方的语言来说就是:enable you to start with RTL and produce a placement-aware optimized netlist and floorplan.
也就是Oasys-RTL可以基于RTL做后面的综合、优化、测试等工作。


Oasys-RTL的使用流程(可以在这个基础上根据需要进行增删):
① 读取文件。事先要准备好各种库和文件,包括libraries、LEF、RTL等等。
        Liberty Timing File (.lib):是最基本的时序模型,包含延迟、转换、建立和保持时间等要求。Liberty Timing File必须第一个被读取。
        Library Exchange Format (.lef):有两种,分别是Technology LEF和LEF,分别存储layer信息和各种模块的layout信息。
        Register Transfer Level (.vhd/.v/.sv):待综合的RTL描述,也就是用硬件描述语言写的程序。
        还可以读取很多其他的特定文件,非必需所以先不做介绍。
② 综合。若后面需要做DFT,可将扫描链一起综合;若需低功耗设计,可与门控时钟一起综合。
③ 设置时序和布局上的约束。
④ 优化。对面积、时序、布局以及出现的阻塞进行优化。
⑤ DFT。插入扫描链对电路进行测试,对出现问题的地方进行修复。
⑥ 输出所需文件。如verilog文件、DEF文件、MXDB文件等。

 

然后按照上面的流程写一个脚本文件,这里就取名叫demo.tcl:

 

  1 #===========================① 读取文件==========================#
  2 # 设置各种库的路径
  3 set lib_area "libs的路径"
  4 set lef_area "lefs的路径"
  5 
  6 # 设置用到的lib库,可能有多个
  7 set timing_libs " \
  8     $lib_area/第1个timing_lib的文件名 \
  9     $lib_area/第2个timing_lib的文件名 \
 10     $lib_area/第3个timing_lib的文件名 \
 11     ......
 12     $lib_area/第n个lib的文件名"
 13 
 14 # 设置用到的Technology LEF
 15 set tech_file "$lef_area/Technology LEF的文件名"
 16 
 17 # 设置用到的LEF
 18 set lef_files " \
 19     $lef_area/第1个LEF的文件名 \
 20     $lef_area/第2个LEF的文件名 \
 21     $lef_area/第3个LEF的文件名 \
 22     ......
 23     $lef_area/第n个LEF的文件名"
 24 
 25 # 将所有上面列好的timing_lib读取到一个目标库中,并给目标库命名,这里命名为target_timing
 26 foreach lib $timing_libs {
 27     read_library $lib -target_library target_timing
 28 }
 29 
 30 # 读取设置好的technology LEF
 31 read_lef $tech_file
 32 
 33 # 读取设置好的LEF
 34 foreach lef $lef_files {
 35     read_lef $lef
 36 }
 37 
 38 # 设置综合优化时使用的liberty Timing File为target_timing
 39 set_target_library target_timing
 40 
 41 # 将target_timing中所有单元模块设置为可使用(根据需要来,可以设置某些单元模块不可用)
 42 set_dont_use [get_lib_cell * ] false
 43 
 44 # 设置RTL文件路径,再将其赋给变量search_path
 45 set rtl_dir "RTL的路径"
 46 set search_path "${rtl_dir}"
 47 
 48 # 设置需要综合的RTL模块。这里假设用的语言是VHDL,其他语言同理
 49 set rtl_list {
 50     module1.vhd
 51     module2.vhd
 52     module3.vhd
 53     ......
 54     顶层模块名.vhd
 55 }
 56 
 57 # Oasys-RTL根据设置好的路径search_path去读取$rtl_list中的所有模块
 58 read_vhdl $rtl_list
 59 
 60 # 检查库文件
 61 check_library
 62 
 63 #============================② 综合=============================#
 64 
 65 # 设置top_module为上面读取的RTL的顶层模块
 66 set top_module 顶层模块名
 67 
 68 # 从顶层模块从上至下进行综合,可根据需要插入扫描链、门控时钟
 69 synthesize -module $top_module -map_to_scan true  -gate_clock
 70 
 71 #==========================③ 设置约束===========================#
 72 
 73 # 预先写一个SDC(Synopsys Design Constraints)文件(即时序约束文件),设置时钟、延迟等各种时序条件
 74 # 读取该SDC文件。-verbose:输出读取该文件时的详细信息
 75 read_sdc -verbose sdc文件路径+文件名
 76 
 77 # 设置布线最大利用率约束,可多次设置
 78 # 参数1:选择Technology LEF中定义的金属层
 79 # 参数2:最大利用率百分比(写成小数形式)
 80 set_route_layer_max_usage 参数1 参数2
 81 ......
 82 
 83 # 输出设计特性,包括设计用到的单元模块及其数量、面积、泄露功耗,若进行了布局优化,则还会有芯片面积、导线长度等信息
 84 report_design_metrics
 85 
 86 # 检查时序
 87 check_timing
 88 
 89 #============================④ 优化=============================#
 90 
 91 # 针对时序进行优化,再输出时序(会报告整个设计在时序上的最长路径的详细信息)和设计特性
 92 optimize -virtual
 93 report_timing
 94 report_design_metrics
 95 
 96 # 针对布局进行优化,再输出时序和设计特性
 97 optimize -place
 98 report_timing
 99 report_design_metrics
100 
101 #=============================⑤ DFT=============================#
102 
103 # DFT可以调用其它专业软件进行,这里用Oasys-RTL简单进行DFT。
104 
105 # 设置无需进行扫描测试的电路
106 set_dont_scan 具体哪个模块的哪个位置
107 
108 #设置DFT用到的端口为se(scan enable),命名为se,扫描时高电平有效,打开默认扫描使能,创建该端口
109 define_test_pin -name se -pin se -scan 1 -default_scan_enable true \
110                 -create_port
111 
112 #设置用于修复DFT错误的端口,为test_mode,命名为test_mode,扫描时高电平有效,创建该端口
113 define_test_pin -name test_mode -pin test_mode -scan 1 -create_port
114 
115 # 设置测试时钟为clk端口
116 define_test_clock -pin clk
117 
118 # 其他需要预先设置的pin都要写好!
119 
120 # 如果前面插入了门控时钟,则可以把门控时钟的测试pin与se连接
121 connect_clock_gating_test_pin -test_pin se
122 
123 # 进行DFT
124 check_dft -auto_test_clock -auto_test_pins
125 
126 # 用前面设置的clk和test_mode,对DFT发现的不可控时钟和不可控的异步置位复位信号进行修复
127 fix_dft_violations -type all -test_clock clk -test_control test_mode
128 
129 # 再次进行DFT
130 check_dft
131 
132 # 输出DFT中出现的错误
133 report_dft_violations
134 
135 #=========================⑥ 输出所需文件==========================#
136 
137 # 可以根据需要进行一次最终优化,输出时序和设计特性
138 optimize
139 report_timing
140 report_design_metrics
141 
142 # 输出所需文件,以.odb(Oasys-RTL database)和.v文件为例,其它格式文件同理
143 write_db odb文件路径+文件名
144 write_verilog verilog文件路径+文件名

脚本文件demo.tcl写好后,就可以直接启动Oasys-RTL,执行demo.tcl。

 

进入demo.tcl所在目录(也可以不进入,但是执行命令时demo.tcl前面需要加上文件所在路径)。
启动oasys(可以通过-log将运行的所有信息保存在一个日志文件中):
        oasys (-log 日志文件路径+文件名)

在Oasys-RTL的命令行用source命令读取并执行tcl文件:
        [oasys-RTL]$   source (tcl文件路径/)demo.tcl

执行后可以看到全部执行信息。如果出现错误停止运行,则根据报错信息对输入的文件进行修改,再重新执行上面的source命令。

 

基本的使用流程就是这样了,后面也许会再进一步记录Oasys-RTL工具的相关内容。

 

----------------------莫问收获,只问耕耘----------------------

 

标签:文件,Oasys,lef,lib,RTL,test,timing,工具
From: https://www.cnblogs.com/stu-wtjm/p/17058747.html

相关文章

  • 自己编写高负荷测试的工具
          最近一个项目,客户要求进行高负荷测试;所谓高负荷测试时看系统在CPU占用或MEM占用率极高情况下的表现。      在第一轮测试时,我们通过在LINUX操作系统上,......
  • 前端开发与构建工具Vite
    vite的特性vite主要由两部分组成:一个开发服务器,它基于原生ES模块提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)。一套构建指令,它使用Rollup打包你的代码,并且......
  • linux基础 day1 VM创好虚拟机后的配置、centos系统配置、远程连接工具
    一、虚拟机的配置先配网络再配系统镜像注意:这里用的是centos7二、centos系统配置1.首先在虚拟机启动页面不要急着进去,先改一下网卡名称,敲好后回车,等图形界......
  • 华为云发布CodeArts Req需求管理工具,让需求管理化繁为简​
    ​近期,华为云正式发布CodeArtsReq,这是一款自主研发的软件研发管理与团队协作工具,凝结了华为30多年软件研发的先进理念与丰富实践,具有强大的组织协作能力,旨在助力企业大规模......
  • DMAIC工具
     DMAIC是六西格玛管理中流程改善的重要工具。六西格玛管理不仅是理念,同时也是一套业绩突破的方法。它将理念变为行动,将目标变为现实。DMAIC是指定义Define、测量Measur......
  • MS SQL Server 日志审核工具
    手动审核数据库活动是一项艰巨的任务。有效实现这一目标的最佳方法是使用全面的解决方案来简化和自动化数据库和活动监控。该解决方案还应使数据库管理员能够监控、跟踪、即......
  • sqltools 数据库结构查询器 遍历工具
    下载地址:https://files-cdn.cnblogs.com/files/licin/sqltools.rar?t=1674025517开发语言:C#支持数据库:MySQL/SqlServer搜索字段名;表名;  搜索描述和字段名; ......
  • Python工具箱系列(二十三)
    基于游标的操作游标是数据库操作的相对底层的能力。简单的操作如下:importmysql.connectorimportrandomhost='localhost'user='root'password='8848is8848'dbname=......
  • 【版本控制工具】Git急速入门
    文章目录1.Git简介1.1.什么是Git1.2.Git与SVN区别2.Git工作流程2.1.Git的工程流程3.Git工作区、暂存区和版本库3.1.Git工作区、暂存区和版本库4.Git创建仓库4.......
  • VT EPT原理解析和进阶——绕过pg检测,无视目前任何内核检测工具的检测如PCHander检测不
    [原创]驱动级VT技术EPT实现无痕HOOK保护指定进程----VTEPT原理解析和进阶 https://bbs.kanxue.com/thread-269303.htm驱动级VT虚拟化技术EPT实现无痕HOOK保护指定......