Cambricon TestBench Generator 是一款基于vscode开发用于UVM验证平台环境生成的
webview拓展,可以使用户在vscode中通过设计UI界面自动生成对应的UVM验证环境
UI界面分为:
·操作平台
·属性查看器
·交互按钮
操作平台 允许用户对UI进行设计和调整
操作平台的基本元素为Node, Group, Link, Port
Node & Group
通过在Group中右键并选择相应的新建(uvm_...)对象,
用户可以新建多种UVM平台的Object与Component
(在一个Group(代表Agent/Env)中新建Node/Group,表示在生成的环境中被新建的
Component/Object
被封装在当前Group中)
通过右键点击一个Node/Agent,用户可以选择对其进行外观调整包括变色,缩放
通过可以点击其名字部分对名称进行编辑和使用常用快捷键对其进行复制,粘贴,删除,剪切
通过属性键UI会弹出当前Node的各项属性
Port
在Node上添加↑↓←→TLM Port表示该Component/Object用于TLM通讯的Port,会在该Component/Object的
class定义中被declare
(注意在点击新建一个TLM Port键后会出现弹窗收取用户对于该Port的命名,可以输入空值但是必须回车表示命名结束)
在Node上添加If Port并用Link 与相应的Interface Node相连并右键Link选择Config If表示该Interface会在Node中例化(详细操作见Link说明)
在Node上添加Tr Port并用Link 与相应的Transaction Node相连并右键Link选择Config Tr表示该Transaction会在Node中配置(详细操作见Link说明)
通过属性键UI会弹出当前Port的各项属性
Link
通过从一个Port向另一个Port拖拽可以新建一个Link的外观,
然后需要右键定义Link的属性
· 如果Link是从一个Component A的TLM Port连接至另一个Component B的TLM Port,则表示两者之间建立了由A到B的TLM通讯,
需要在外观新建后右键该Link选择此TLM通讯的类型然后右键选择定义TLM Transaction并输入一个transaction名做为该通讯的transaction
· 如果Link是从Transaction自带的Port拖拽至Component的Tr Port, 则说明要将该Transaction配置给Component,需要在新建外观后右键Link点击Config Tr表明Link类型
· 如果Link是从Interface自带的Port拖拽至Component的If Port, 则说明要将该Interface配置给Component,需要在新建外观后右键Link点击Config If表明Link类型
通过属性键UI会弹出当前Link的各项属性
属性查看器允许用户查看并定义一个Node/Link的外观属性
交互按钮分为Save UI, Load UI, Export Environment
Save UI允许用户将当前UI保存为json文件至用户自选路径并命名
Load UI分为Load, Load & Combine, Load & Insert, Load & Merge
· Load 键会用指定UI文件覆盖当前UI
· Load & Combine 键会将当前UI与指定UI文件一起放入一个Combined_Env Group
· Load & Merge 键会将指定UI 最大Env内的所有内容直接放入当前UI的最大Env中
Export 键会将当前的UI生成为相应的验证环境
Specify Template Path 允许用户指定一个路径为当前UI生成环境时所参照的模板的绝对路径
1. 默认文件模板:路径固定,用于方便用户编辑所有同类Component/Object
e.g. 用户可以将默认的Monitor模板中的head template block 中加入注释”hello world”则所有生成的monitor文件中的head template block中都会加入”hello world”
2. 用户自定义文件模板:路径由用户在生成环境前指定,拓展会自动递归地搜索所有路径下的文件,如果有与当前UI中的Component/Object重名的文件,会以该文件为模板生成文件
e.g. 如果当前UI中一Component 名为”monitor_1”那么如果在用户指定的路径下有文件名为 ”monitor_1.sv” 的文件那么在所有”monitor_1.sv”的template block中的修改都会被继承到新的monitor_1的生成文件中
此功能是为了方便用户在用一个UI生成环境并在环境文件上做编辑后又用相同UI经过进一步调整后生成文件时,可以直接套用上次对该名字的环境文件的修改
(注意在Export前必须先点击Specify a template path,template path可以为空)
Cambricon TestBench Generator是利用vscode extension开发工具的webview extension实现的(类似于iframe), UI生成利用了javascript的GoJS框架, 文件生成的过程是是将GoJS的所有的图形属性转化为js下自定义的对象,然后递归地调用文件生成方法
TODOs:
1. 现有的生成文件和转化代码有较多冗余,可以合并增加代码简洁性
2. 拓展多处时间复杂度不理想,在输入规模较大时可能出现卡顿
3. 现有的UI多处权限没有设置,用户调整后可能导致错误
4. 现有UI可生成的种类有限而且部分操作有待优化