…慢

…还是慢。

全芯片 RTL 编译,实在太慢了

是时候用 DashRTL 大幅提速

真正的 analyze 和 elaborate 阶段并行加速

全芯片级的容量支持,没有最高 CPU 核数限制

针对 编译—代码修正—重编译 迭代的额外提速

独有的 SystemVerilog 语法分析与跨工具兼容性 检查

独有的 Tcl + Python 命令行 FusionShell™️

场景示例

设计读入

无论是综合工程师习惯的脚本方式启动…

% dashrtl -files your_script.tcl

还是验证工程师习惯的 RTL 文件 / 列表方式…

% dashrtl -run -f top.lst

% dashrtl -run top.v sub.v

还是从 GUI 界面输入,DashRTL 工具都支持。

高速并行 analyze + elaborate

前所未有的全芯片 RTL 秒级读入体验

使用 top 命令随时查看 DashRTL 编译并行度:

定位问题代码

当发现语法错误时,DashRTL 总是能给出最详尽的错误信息。

Error: expecting 'scalared', 'vectored', 'signed', '(', '[', '#' or identifier but get '1'. (ANA-EXPECT-ID)

Line: 2

File: /home/project/rtl/illegal_net_example.v

DashRTL 永远不会给出类似 “某个 Token 附近出现语法错误” 这样的简略提示。

SystemVerilog 语法收集与兼容性检查

SystemVerilog 语法定义复杂,而各 EDA 工具支持的语法子集各不相同,带来流程中的兼容性问题。

DashRTL 是唯一可以在 analyze 阶段支持 LRM 中出现过的所有示例代码 的 EDA 工具。

只需在 analyze 前启用 SV 兼容性检查模式,就可以收集、分析、检查和报告代码中出现过的所有 SV 语法子集。

dashrtl-tcl> report_sv_compatibility -collected -verbose

Inst.Port.Wildcard {

/edatool/dashrtl/examples/port_conn_wildcard_default_input.sv 4

}

Module.Port.DefaultArg {

/edatool/dashrtl/examples/port_conn_wildcard_default_input.sv 7

}

一键跳转到任意编辑器

我们尊重用户选择自己惯用的编辑器的研发习惯。

在 DashRTL 定位错误后,仅需键入

dashrtl-tcl> crossprobe

或点击图标,DashRTL 便会用你指定的编辑器1打开代码文件,跳转到错误所在行。

除了跳转到语法错误,crossprobe 命令还能跳转到 `define 定义的 text macro,或者 SystemVerilog 代码定义的 Interface / Package,等等:

dashrtl-tcl> crossprobe [get_text_macros YOUR_MACRO]

一键重编译

完成代码编辑并保存后,仅需键入

dashrtl-tcl> reload_design

或点击图标,DashRTL 便可自动重新执行 analyze + elaborate 流程,查找下一个错误。

审阅设计潜在问题

独有的 Tcl + Python 命令行 – FusionShell™,现已支持 Golang 插件

可通过pymode

和tclmode()

实时切换语言:

dashrtl-tcl> set a hello,user

hello,user

dashrtl-tcl> pymode

dashrtl-py> a

'hello,user'

或在 Tcl 中直接用独有的call

命令调用 Python 函数:

dashrtl-tcl> call 'abc'.upper

ABC

提供 Golang 插件接口,支持用户以接近原生 EDA 工具的性能水平下进行二次开发2

% go build -buildmode=plugin -o Golang_compiled_plugin.so

dashrtl-tcl> plugin load Golang_compiled_plugin.so Golang_func_name

dashrtl-tcl> plugin call Golang_func_name args...

支持作为独立混合脚本解释器调用

详见 tclpysh 产品介绍

独有的 Ctrl+C 打断增强

执行任意命令中途Ctrl+C打断支持:

dashrtl-tcl> while 1 { incr i }

用上述命令进入 while 循环后,键入Ctrl+C体验

这个看似很基本的功能,目前在绝大多数 EDA 工具中不支持。

独有的 defer 命令,支持运行中接收到Ctrl+C时进行中断处理:

dashrtl-tcl> proc p {} { defer -intr { puts "value is $i!" } while 1 { incr i }}dashrtl-tcl> p^CInfo: Ctrl-C interrupt is handled by 'defer -intr' command. (SHELL-INTRRECOVER)value is 219811!

独有的命令行 Tab 增强

不止支持 -switch

Tab:

键入string

Tab或string is

Tab体验:

dashrtl-tcl> string

bytelength equal index last map range replace tolower toupper trimleft

compare first is length match repeat reverse totitle trim trimright

alias 增强:

dashrtl-tcl> alias si "string is"

按上述命令定义 alias 后键入si

Tab体验:

dashrtl-tcl> si

alnum ascii control double graph list print space upper wordchar

alpha boolean digit false integer lower punct true wideinteger xdigit

man 增强:

支持对子命令的 man 查询,如 man string is

键入man string

Tab体验

现在就免费下载试用:

DashRTL 下载

具体调用的编辑器受 $crossprobe_exec 工具变量控制,具体用法参考man crossprobe_exec

↩︎

Golang 插件接口框架:https://gitee.com/challensys/fusionshell-plugin ↩︎