4、Radix ST基础操作:启动界面、加载设计、设置时钟与复位

好,咱们今天聊聊Radix ST最基础的操作。说实话,很多新手拿到工具第一反应就是懵——界面一堆按钮,不知道从哪下手。我当年也一样,对着屏幕发呆了好几分钟。其实说白了,Radix ST的启动和加载设计,跟咱们平时用其他EDA工具差不多,但有几个小细节,不注意就会踩坑。

4.1 启动界面:别被花哨的欢迎页吓到

安装好Radix ST之后,双击图标或者敲命令行启动。我个人习惯用命令行,因为可以带参数,方便后面批量跑脚本。启动后你会看到一个欢迎界面,嗯,这个界面其实没啥用,就是告诉你版本号和许可证信息。

小技巧: 如果你不想每次启动都看欢迎页,可以在设置里关掉。路径是:File -> Preferences -> General -> Show Welcome Page,取消勾选就行。

欢迎页关掉之后,主界面就出来了。左边是工程浏览器,中间是代码编辑区,下面是控制台和日志窗口。这个布局跟Verdi有点像,但Radix ST的工具栏更精简。我刚开始用的时候,总觉得少了点什么,后来发现其实常用的功能就那么几个,没必要堆一堆按钮。

4.2 加载设计:两种方式,看你习惯哪种

加载设计,说白了就是把你的RTL代码和网表文件读进来。Radix ST支持两种方式:

  • 图形界面加载:点 File -> Import Design,然后选择你的文件。支持 .v、.sv、.vhd 等常见格式。
  • 命令行加载:在控制台敲 read_design -f filelist.f。我个人更推荐这种方式,尤其是设计文件多的时候,写个脚本一劳永逸。

这里有个坑,我必须要提醒你。加载设计的时候,Radix ST默认不会自动识别顶层模块。你得手动指定,或者用 -top 参数。我曾经有一次忘了指定顶层,结果工具把所有的模块都当顶层分析了,跑出来的结果乱七八糟,排查了半天才发现问题。

注意: 加载设计时,如果遇到 Unresolved reference 错误,八成是文件顺序不对。Radix ST要求被调用的模块先加载,调用者后加载。建议用 filelist 文件,把依赖关系排好。

加载完成后,你可以在工程浏览器里看到所有的模块和实例。双击某个模块,代码就会在编辑区打开。这时候你可以检查一下,看看有没有漏掉文件。

4.3 设置时钟:别小看这一步

时钟设置,是形式化验证里最关键的一步。时钟设错了,后面所有的分析都是白搭。Radix ST里设置时钟有两种方式:

  1. 自动识别:工具会扫描设计中的时钟信号,然后弹出来让你确认。适合简单的设计。
  2. 手动指定:用 create_clock 命令。比如:
create_clock -name clk -period 10 [get_ports clk]

这条命令的意思是:创建一个名为 clk 的时钟,周期是10ns,端口是 clk。嗯,这里要注意,周期单位默认是纳秒,如果你用皮秒,得加 -unit ps 参数。

我遇到过一种情况:设计里有多个时钟域,比如一个100MHz的主时钟,一个50MHz的从时钟。如果你只设了主时钟,从时钟没设,工具会默认从时钟是常量,导致跨时钟域的分析结果完全不对。所以,所有时钟都要设,一个都不能漏

核心要点: 时钟设置的关键是 periodwaveform。如果你不指定 waveform,工具默认占空比是50%。如果你的设计用了非50%占空比的时钟,记得用 -waveform {0 3} 这样的参数指定上升沿和下降沿的时间。

4.4 设置复位:异步复位?同步复位?搞清楚

复位设置,跟时钟一样重要。Radix ST里用 set_reset 命令来指定复位信号。比如:

set_reset -name rst_n -value 0 [get_ports rst_n]

这条命令的意思是:复位信号 rst_n 低电平有效(value=0)。如果你的复位是高电平有效,把 value 改成1就行。

这里有个容易混淆的地方:异步复位和同步复位的区别。Radix ST默认把复位当成异步的,如果你的设计用的是同步复位,得加 -type sync 参数。否则工具会认为复位信号在任何时刻都能生效,导致一些不必要的约束冲突。

我记得有一次,一个同事跑形式化验证,结果老是报复位路径上的时序违例。我过去一看,他设的复位是异步的,但设计里明明用的是同步复位。改过来之后,问题就解决了。所以,复位类型一定要跟设计一致

4.5 验证设置:跑个简单的检查

时钟和复位都设好了之后,我建议你先跑一个简单的检查,看看设置对不对。Radix ST里有个 check_design 命令,可以帮你检查:

  • 时钟有没有冲突
  • 复位有没有悬空
  • 有没有未连接的端口

跑完 check_design 之后,控制台会输出一堆信息。如果有 ERROR 级别的消息,必须解决;如果是 WARNING,可以酌情处理。我个人习惯是把所有的 WARNING 都看一遍,因为很多坑就是从 WARNING 开始的。

我的习惯: 每次加载完设计、设完时钟复位,我都会跑一遍 check_design,然后保存一个 .tcl 脚本。这样下次重新打开工程,直接 source 脚本就行,不用再手动点来点去。

4.6 知识体系图

下面这张图,是我自己总结的Radix ST基础操作流程。你一看就明白,其实就三步:加载设计、设时钟、设复位。但每一步都有细节,别跳过去。

Radix ST 基础操作流程 启动界面 加载设计 设置时钟 设置复位 验证设置 (check_design) 保存脚本 (.tcl) 每一步都有细节,别跳过去。尤其是时钟和复位,设错了后面全白搭。 💡 建议:每次设完都跑 check_design,养成好习惯

4.7 避坑指南

最后,我把自己踩过的坑总结一下,你遇到了可以直接翻出来看:

常见问题 原因 解决方法
加载设计报 Unresolved reference 文件顺序不对,被调用的模块在后面 调整 filelist 顺序,或者用 -work
时钟设了但分析结果不对 忘了设从时钟,或者占空比不对 report_clocks 检查所有时钟
复位路径时序违例 异步复位设成了同步,或者反过来 确认设计中的复位类型,用 -type 参数指定
check_design 报 WARNING 没管 WARNING 可能隐藏着大问题 每个 WARNING 都点开看看,别跳过

嗯,基础操作就这些。你把这几个步骤走一遍,Radix ST的基本用法就掌握了。后面咱们再聊更高级的调试技巧。


专注资料整理