逻辑设计中常用的Stream总线

在逻辑设计中,基于stream握手这种形式的总线行为是很常见的,在自定义总线时stream这类总线代码写起来千篇一律,完全可以利用idea的live template来自动生成。
》常用的stream总线     最近做系统总线的定义,模块之间存在着大量的握手交互,在spinalhdl中这类总线往往继承于spinalhdl中的stream。以下面的总线定义为例:
先来说说自己为什么这么来定义总线:     bus继承于stream,如此stream所定义的所有信号均可以使用。     单独定义busconfig,将总线的各种参数归到一个类中,如此在做修改调整时整个系统不至于从头改到尾。       定义objectbus主要原因在于在spinalhdl中,stream/flow这种类型在映射生成verilog代码时例如上面的data0,data1会带有xxx_payload_data0,xxx_payload_data1,为了生成的代码更美观在object中定义rename函数来对生成verilog中的变量做一个命名上的调整。同时也可以避免在例化时写“new”。     嗯,出发点还不错吧,但在为整个系统定义总线时当我写到第三个第四个时就累了,因为这里面的大量代码完全是重复性的代码,陷入了赋值—>粘贴—>修改的怪圈~ 》live  template使用
像上面的代码完全是具有模版范式的代码。个人在总线定义时,习惯将每个总线单独定义成一个文件,那么上面的代码完全可以定制为一个live template。
首先在打开你idea的live templates界面,点击图中“+”号按钮创建一个名称为“spinalhdl”的template group(spinalhdl的模版都可以放在这里面):
然后在spinalhdl下创建live template:
这里在模版中定义了变量$bus$,$parameter$,$payload$。在live template中可做变量的定义:
(上面红圈1的位置可指定在哪些语言中支持,在2中编辑变量)
(由于个人习惯每个总线单独一个文件,所以这里bus变量指定表达式,如果想自己写这里可不指定表达式)
而之所以定义后面两个变量主要用于在调用该模版时光标自动跳转到对应的待编辑处。
由于这里我将模版起名为streamext,故可以在定义总线时敲该关键字自动实现总线模版定义:
自己仅需定义总线中的信号即可~
最后贴上这个模版的可copy代码:


米质判定仪的作用是什么,能为我们带来哪些便利
智能家居行业有望跨入成长期,市场空间进一步被打开
这就是三星Note7的补偿条款!对待中国用户这样交代?
开关型传感器的简单应用介绍
如何使用 Hi-Z 缓冲器简化AFE设计
逻辑设计中常用的Stream总线
科创板航天宏图职工代表监事苗文杰介绍、履历信息
关于单片机的测频范围和误差分析
Vishay新款全集成接近和环境光光学传感器VCNL4020
3D打印厂商Voxeljet发布2020年Q3财报,综合收入为490万欧元
深度剖析中国半导体材料行业投资前景
客厅娱乐影音设备层出不穷 智能电视客厅地位遭挑战
简单恒流充电电路图大全(八款简单恒流充电电路设计原理图详解)
小程序反编译的安全测试案例解析
SONY完全无线立体声耳机的特征
统计学知识大梳理
游标卡尺的使用方法及注意事项
PRED3-350/10V-D24K1电气比例控制压力阀控制器
工业级4G路由器的特点是什么,它的优势有哪些
在2020年,5G会是运营商最好的“力”吗?